From 1766a917e87e06094301250df3b689db766f724d Mon Sep 17 00:00:00 2001
From: Craig Tiller <craig.tiller@gmail.com>
Date: Mon, 22 Jun 2015 16:43:43 -0700
Subject: [PATCH 001/525] Executor sketch

---
 src/core/transport/chttp2/internal.h  |  36 +++-
 src/core/transport/chttp2_transport.c | 251 +++++++++++++++++---------
 2 files changed, 193 insertions(+), 94 deletions(-)

diff --git a/src/core/transport/chttp2/internal.h b/src/core/transport/chttp2/internal.h
index 3d1cd56e61..784c85ec4f 100644
--- a/src/core/transport/chttp2/internal.h
+++ b/src/core/transport/chttp2/internal.h
@@ -290,24 +290,39 @@ struct grpc_chttp2_transport_parsing {
   grpc_chttp2_outstanding_ping pings;
 };
 
+typedef struct grpc_chttp2_executor_action_header {
+  grpc_chttp2_stream *stream;
+  void (*action)(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *arg);
+  struct grpc_chttp2_executor_action_header *next;
+  void *arg;
+} grpc_chttp2_executor_action_header;
+
 struct grpc_chttp2_transport {
   grpc_transport base; /* must be first */
+  gpr_refcount refs;
   grpc_endpoint *ep;
   grpc_mdctx *metadata_context;
-  gpr_refcount refs;
 
-  gpr_mu mu;
+  struct {
+    gpr_mu mu;
+
+    /** is a thread currently in the global lock */
+    gpr_uint8 global_active;
+    /** is a thread currently writing */
+    gpr_uint8 writing_active;
+    /** is a thread currently parsing */
+    gpr_uint8 parsing_active;
+    /** is a thread currently executing channel callbacks */
+    gpr_uint8 channel_callback_active;
+
+    grpc_chttp2_executor_action_header *pending_actions;
+  } executor;
 
   /** is the transport destroying itself? */
   gpr_uint8 destroying;
   /** has the upper layer closed the transport? */
   gpr_uint8 closed;
 
-  /** is a thread currently writing */
-  gpr_uint8 writing_active;
-  /** is a thread currently parsing */
-  gpr_uint8 parsing_active;
-
   /** is there a read request to the endpoint outstanding? */
   gpr_uint8 endpoint_reading;
 
@@ -343,8 +358,6 @@ struct grpc_chttp2_transport {
   grpc_chttp2_stream **accepting_stream;
 
   struct {
-    /** is a thread currently performing channel callbacks */
-    gpr_uint8 executing;
     /** transport channel-level callback */
     const grpc_transport_callbacks *cb;
     /** user data for cb calls */
@@ -615,6 +628,11 @@ void grpc_chttp2_for_all_streams(
 void grpc_chttp2_parsing_become_skip_parser(
     grpc_chttp2_transport_parsing *transport_parsing);
 
+void grpc_chttp2_run_with_global_lock(
+  grpc_chttp2_transport *transport, grpc_chttp2_stream *optional_stream,
+  void (*action)(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *arg),
+  void *arg, size_t sizeof_arg);
+
 #define GRPC_CHTTP2_CLIENT_CONNECT_STRING "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
 #define GRPC_CHTTP2_CLIENT_CONNECT_STRLEN \
   (sizeof(GRPC_CHTTP2_CLIENT_CONNECT_STRING) - 1)
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 0032ef1d4d..b32d9f0a71 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -78,8 +78,10 @@ int grpc_flowctl_trace = 0;
 
 static const grpc_transport_vtable vtable;
 
+#if 0
 static void lock(grpc_chttp2_transport *t);
 static void unlock(grpc_chttp2_transport *t);
+#endif
 
 static void unlock_check_channel_callbacks(grpc_chttp2_transport *t);
 static void unlock_check_read_write_state(grpc_chttp2_transport *t);
@@ -101,9 +103,9 @@ static void recv_data(void *tp, gpr_slice *slices, size_t nslices,
 static void drop_connection(grpc_chttp2_transport *t);
 
 /** Perform a transport_op */
-static void perform_op_locked(grpc_chttp2_transport_global *transport_global,
-                              grpc_chttp2_stream_global *stream_global,
-                              grpc_transport_op *op);
+static void perform_op_locked(grpc_chttp2_transport *t,
+                              grpc_chttp2_stream *s,
+                              void *transport_op);
 
 /** Cancel a stream: coming from the transport API */
 static void cancel_from_api(grpc_chttp2_transport_global *transport_global,
@@ -112,12 +114,15 @@ static void cancel_from_api(grpc_chttp2_transport_global *transport_global,
 
 /** Add endpoint from this transport to pollset */
 static void add_to_pollset_locked(grpc_chttp2_transport *t,
-                                  grpc_pollset *pollset);
+  grpc_chttp2_stream *s_ignored,
+                                  void *pollset);
 
 /** Start new streams that have been created if we can */
 static void maybe_start_some_streams(
     grpc_chttp2_transport_global *transport_global);
 
+static void finish_global_actions(grpc_chttp2_transport *t);
+
 /*
  * CONSTRUCTION/DESTRUCTION/REFCOUNTING
  */
@@ -125,7 +130,7 @@ static void maybe_start_some_streams(
 static void destruct_transport(grpc_chttp2_transport *t) {
   size_t i;
 
-  gpr_mu_lock(&t->mu);
+  gpr_mu_lock(&t->executor.mu);
 
   GPR_ASSERT(t->ep == NULL);
 
@@ -151,8 +156,8 @@ static void destruct_transport(grpc_chttp2_transport *t) {
   grpc_chttp2_stream_map_destroy(&t->parsing_stream_map);
   grpc_chttp2_stream_map_destroy(&t->new_stream_map);
 
-  gpr_mu_unlock(&t->mu);
-  gpr_mu_destroy(&t->mu);
+  gpr_mu_unlock(&t->executor.mu);
+  gpr_mu_destroy(&t->executor.mu);
 
   /* callback remaining pings: they're not allowed to call into the transpot,
      and maybe they hold resources that need to be freed */
@@ -215,7 +220,7 @@ static void init_transport(grpc_chttp2_transport *t,
   t->ep = ep;
   /* one ref is for destroy, the other for when ep becomes NULL */
   gpr_ref_init(&t->refs, 2);
-  gpr_mu_init(&t->mu);
+  gpr_mu_init(&t->executor.mu);
   grpc_mdctx_ref(mdctx);
   t->metadata_context = mdctx;
   t->endpoint_reading = 1;
@@ -311,18 +316,19 @@ static void init_transport(grpc_chttp2_transport *t,
     }
   }
 
-  gpr_mu_lock(&t->mu);
-  t->channel_callback.executing = 1;
+  gpr_mu_lock(&t->executor.mu);
+  t->executor.channel_callback_active = 1;
+  t->executor.global_active = 1;
   REF_TRANSPORT(t, "init"); /* matches unref at end of this function */
-  gpr_mu_unlock(&t->mu);
+  gpr_mu_unlock(&t->executor.mu);
 
   sr = setup(arg, &t->base, t->metadata_context);
 
-  lock(t);
   t->channel_callback.cb = sr.callbacks;
   t->channel_callback.cb_user_data = sr.user_data;
-  t->channel_callback.executing = 0;
-  unlock(t);
+  t->executor.channel_callback_active = 0;
+
+  finish_global_actions(t);
 
   REF_TRANSPORT(t, "recv_data"); /* matches unref inside recv_data */
   recv_data(t, slices, nslices, GRPC_ENDPOINT_CB_OK);
@@ -330,18 +336,18 @@ static void init_transport(grpc_chttp2_transport *t,
   UNREF_TRANSPORT(t, "init");
 }
 
-static void destroy_transport(grpc_transport *gt) {
-  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-
-  lock(t);
+static void destroy_transport_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *arg_ignored) {
   t->destroying = 1;
   drop_connection(t);
-  unlock(t);
+}
 
+static void destroy_transport(grpc_transport *gt) {
+  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
+  grpc_chttp2_run_with_global_lock(t, NULL, destroy_transport_locked, NULL, 0);
   UNREF_TRANSPORT(t, "destroy");
 }
 
-static void close_transport_locked(grpc_chttp2_transport *t) {
+static void close_transport_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *arg_ignored) {
   if (!t->closed) {
     t->closed = 1;
     if (t->ep) {
@@ -352,19 +358,32 @@ static void close_transport_locked(grpc_chttp2_transport *t) {
 
 static void close_transport(grpc_transport *gt) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  gpr_mu_lock(&t->mu);
-  close_transport_locked(t);
-  gpr_mu_unlock(&t->mu);
+  grpc_chttp2_run_with_global_lock(t, NULL, close_transport_locked, NULL, 0);
+}
+
+typedef struct {
+  grpc_status_code status;
+  gpr_slice debug_data;
+} goaway_arg;
+
+static void goaway_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *a) {
+  goaway_arg *arg = a;
+  grpc_chttp2_goaway_append(t->global.last_incoming_stream_id,
+                            grpc_chttp2_grpc_status_to_http2_error(arg->status),
+                            arg->debug_data, &t->global.qbuf);
 }
 
 static void goaway(grpc_transport *gt, grpc_status_code status,
                    gpr_slice debug_data) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  lock(t);
-  grpc_chttp2_goaway_append(t->global.last_incoming_stream_id,
-                            grpc_chttp2_grpc_status_to_http2_error(status),
-                            debug_data, &t->global.qbuf);
-  unlock(t);
+  goaway_arg arg;
+  arg.status = status;
+  arg.debug_data = debug_data;
+  grpc_chttp2_run_with_global_lock(t, NULL, goaway_locked, &arg, sizeof(arg));
+}
+
+static void finish_init_stream_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *arg_ignored) {
+  grpc_chttp2_register_stream(t, s);
 }
 
 static int init_stream(grpc_transport *gt, grpc_stream *gs,
@@ -382,10 +401,8 @@ static int init_stream(grpc_transport *gt, grpc_stream *gs,
 
   REF_TRANSPORT(t, "stream");
 
-  lock(t);
-  grpc_chttp2_register_stream(t, s);
   if (server_data) {
-    GPR_ASSERT(t->parsing_active);
+    GPR_ASSERT(t->executor.parsing_active);
     s->global.id = (gpr_uint32)(gpr_uintptr)server_data;
     s->global.outgoing_window =
         t->global
@@ -398,8 +415,8 @@ static int init_stream(grpc_transport *gt, grpc_stream *gs,
     s->global.in_stream_map = 1;
   }
 
-  if (initial_op) perform_op_locked(&t->global, &s->global, initial_op);
-  unlock(t);
+  grpc_chttp2_run_with_global_lock(t, s, finish_init_stream_locked, NULL, 0);
+  if (initial_op) grpc_chttp2_run_with_global_lock(t, s, perform_op_locked, initial_op, sizeof(*initial_op));
 
   return 0;
 }
@@ -407,8 +424,10 @@ static int init_stream(grpc_transport *gt, grpc_stream *gs,
 static void destroy_stream(grpc_transport *gt, grpc_stream *gs) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
   grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
+
   int i;
 
+#if 0
   gpr_mu_lock(&t->mu);
 
   GPR_ASSERT(s->global.published_state == GRPC_STREAM_CLOSED ||
@@ -424,6 +443,7 @@ static void destroy_stream(grpc_transport *gt, grpc_stream *gs) {
   grpc_chttp2_list_remove_writable_window_update_stream(&t->global, &s->global);
 
   gpr_mu_unlock(&t->mu);
+#endif
 
   for (i = 0; i < STREAM_LIST_COUNT; i++) {
     GPR_ASSERT(!s->included[i]);
@@ -474,36 +494,92 @@ static void remove_from_stream_map(grpc_chttp2_transport *t, grpc_chttp2_stream
  * LOCK MANAGEMENT
  */
 
-/* We take a grpc_chttp2_transport-global lock in response to calls coming in
-   from above,
-   and in response to data being received from below. New data to be written
-   is always queued, as are callbacks to process data. During unlock() we
-   check our todo lists and initiate callbacks and flush writes. */
+static void finish_global_actions(grpc_chttp2_transport *t) {
+  grpc_chttp2_executor_action_header *hdr;
+  grpc_chttp2_executor_action_header *next;
+  grpc_iomgr_closure *run_closures;
 
-static void lock(grpc_chttp2_transport *t) { gpr_mu_lock(&t->mu); }
+  for (;;) {
+    unlock_check_read_write_state(t);
+    if (!t->executor.writing_active && t->global.error_state == GRPC_CHTTP2_ERROR_STATE_NONE &&
+        grpc_chttp2_unlocking_check_writes(&t->global, &t->writing)) {
+      t->executor.writing_active = 1;
+      REF_TRANSPORT(t, "writing");
+      grpc_chttp2_schedule_closure(&t->global, &t->writing_action, 1);
+    }
+    unlock_check_channel_callbacks(t);
 
-static void unlock(grpc_chttp2_transport *t) {
-  grpc_iomgr_closure *run_closures;
+    run_closures = t->global.pending_closures;
+    t->global.pending_closures = NULL;
+
+    gpr_mu_lock(&t->executor.mu);
+    t->executor.global_active = 0;
+    gpr_mu_unlock(&t->executor.mu);
 
-  unlock_check_read_write_state(t);
-  if (!t->writing_active && t->global.error_state == GRPC_CHTTP2_ERROR_STATE_NONE &&
-      grpc_chttp2_unlocking_check_writes(&t->global, &t->writing)) {
-    t->writing_active = 1;
-    REF_TRANSPORT(t, "writing");
-    grpc_chttp2_schedule_closure(&t->global, &t->writing_action, 1);
+    while (run_closures) {
+      grpc_iomgr_closure *next = run_closures->next;
+      run_closures->cb(run_closures->cb_arg, run_closures->success);
+      run_closures = next;
+    }
+
+    gpr_mu_lock(&t->executor.mu);
+    if (!t->executor.global_active && t->executor.pending_actions) {
+      t->executor.global_active = 1;
+      hdr = t->executor.pending_actions;
+      t->executor.pending_actions = NULL;
+      gpr_mu_unlock(&t->executor.mu);
+      while (hdr != NULL) {
+        hdr->action(t, hdr->stream, hdr->arg);
+        next = hdr->next;
+        gpr_free(hdr);
+        hdr = next;
+      }
+      continue;
+    }
+    gpr_mu_unlock(&t->executor.mu);
+    break;
   }
-  /* unlock_check_parser(t); */
-  unlock_check_channel_callbacks(t);
+}
 
-  run_closures = t->global.pending_closures;
-  t->global.pending_closures = NULL;
+void grpc_chttp2_run_with_global_lock(grpc_chttp2_transport *t, grpc_chttp2_stream *optional_stream,
+  void (*action)(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *arg),
+  void *arg, size_t sizeof_arg) {
+  grpc_chttp2_executor_action_header *hdr;
 
-  gpr_mu_unlock(&t->mu);
+  gpr_mu_lock(&t->executor.mu);
+
+  for (;;) {
+    if (!t->executor.global_active) {
+      t->executor.global_active = 1;
+      GPR_ASSERT(t->executor.pending_actions == NULL);
+      gpr_mu_unlock(&t->executor.mu);
+
+      action(t, optional_stream, arg);
+
+      finish_global_actions(t);
+    } else {
+      gpr_mu_unlock(&t->executor.mu);
+
+      hdr = gpr_malloc(sizeof(*hdr) + sizeof_arg);
+      hdr->stream = optional_stream;
+      hdr->action = action;
+      if (sizeof_arg == 0) {
+        hdr->arg = arg;
+      } else {
+        hdr->arg = hdr + 1;
+        memcpy(hdr->arg, arg, sizeof_arg);
+      }
 
-  while (run_closures) {
-    grpc_iomgr_closure *next = run_closures->next;
-    run_closures->cb(run_closures->cb_arg, run_closures->success);
-    run_closures = next;
+      gpr_mu_lock(&t->executor.mu);
+      if (!t->executor.global_active) {
+        gpr_free(hdr);
+        continue;
+      }
+      hdr->next = t->executor.pending_actions;
+      t->executor.pending_actions = hdr;
+      gpr_mu_unlock(&t->executor.mu);
+    }
+    break;
   }
 }
 
@@ -526,6 +602,7 @@ static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
   }
 }
 
+#if 0
 void grpc_chttp2_terminate_writing(
     grpc_chttp2_transport_writing *transport_writing, int success) {
   grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
@@ -553,6 +630,7 @@ void grpc_chttp2_terminate_writing(
 
   UNREF_TRANSPORT(t, "writing");
 }
+#endif
 
 static void writing_action(void *gt, int iomgr_success_ignored) {
   grpc_chttp2_transport *t = gt;
@@ -622,9 +700,13 @@ static void maybe_start_some_streams(
   }
 }
 
-static void perform_op_locked(grpc_chttp2_transport_global *transport_global,
-                              grpc_chttp2_stream_global *stream_global,
-                              grpc_transport_op *op) {
+static void perform_op_locked(grpc_chttp2_transport *t,
+                              grpc_chttp2_stream *s,
+                              void *transport_op) {
+  grpc_chttp2_transport_global *transport_global = &t->global;
+  grpc_chttp2_stream_global *stream_global = &s->global;
+  grpc_transport_op *op = transport_op;
+
   if (op->cancel_with_status != GRPC_STATUS_OK) {
     cancel_from_api(transport_global, stream_global, op->cancel_with_status);
   }
@@ -671,7 +753,7 @@ static void perform_op_locked(grpc_chttp2_transport_global *transport_global,
   }
 
   if (op->bind_pollset) {
-    add_to_pollset_locked(TRANSPORT_FROM_GLOBAL(transport_global),
+    add_to_pollset_locked(TRANSPORT_FROM_GLOBAL(transport_global), NULL,
                           op->bind_pollset);
   }
 
@@ -684,17 +766,11 @@ static void perform_op(grpc_transport *gt, grpc_stream *gs,
                        grpc_transport_op *op) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
   grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
-
-  lock(t);
-  perform_op_locked(&t->global, &s->global, op);
-  unlock(t);
+  grpc_chttp2_run_with_global_lock(t, s, perform_op_locked, op, sizeof(*op));
 }
 
-static void send_ping(grpc_transport *gt, grpc_iomgr_closure *on_recv) {
-  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
+static void send_ping_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *a) {
   grpc_chttp2_outstanding_ping *p = gpr_malloc(sizeof(*p));
-
-  lock(t);
   p->next = &t->global.pings;
   p->prev = p->next->prev;
   p->prev->next = p->next->prev = p;
@@ -706,9 +782,13 @@ static void send_ping(grpc_transport *gt, grpc_iomgr_closure *on_recv) {
   p->id[5] = (t->global.ping_counter >> 16) & 0xff;
   p->id[6] = (t->global.ping_counter >> 8) & 0xff;
   p->id[7] = t->global.ping_counter & 0xff;
-  p->on_recv = on_recv;
+  p->on_recv = *(grpc_iomgr_closure**)a;
   gpr_slice_buffer_add(&t->global.qbuf, grpc_chttp2_ping_create(0, p->id));
-  unlock(t);
+}
+
+static void send_ping(grpc_transport *gt, grpc_iomgr_closure *on_recv) {
+  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
+  grpc_chttp2_run_with_global_lock(t, NULL, send_ping_locked, &on_recv, sizeof(on_recv));
 }
 
 /*
@@ -751,7 +831,7 @@ static void unlock_check_read_write_state(grpc_chttp2_transport *t) {
   grpc_chttp2_stream_global *stream_global;
   grpc_stream_state state;
 
-  if (!t->parsing_active) {
+  if (!t->executor.parsing_active) {
     /* if a stream is in the stream map, and gets cancelled, we need to ensure
        we are not parsing before continuing the cancellation to keep things in
        a sane state */
@@ -784,7 +864,7 @@ static void unlock_check_read_write_state(grpc_chttp2_transport *t) {
     }
     if (stream_global->write_state == WRITE_STATE_SENT_CLOSE &&
         stream_global->read_closed && stream_global->in_stream_map) {
-      if (t->parsing_active) {
+      if (t->executor.parsing_active) {
         grpc_chttp2_list_add_closed_waiting_for_parsing(transport_global,
                                                         stream_global);
       } else {
@@ -934,7 +1014,7 @@ static void drop_connection(grpc_chttp2_transport *t) {
   if (t->global.error_state == GRPC_CHTTP2_ERROR_STATE_NONE) {
     t->global.error_state = GRPC_CHTTP2_ERROR_STATE_SEEN;
   }
-  close_transport_locked(t);
+  close_transport_locked(t, NULL, NULL);
   end_all_the_calls(t);
 }
 
@@ -968,6 +1048,7 @@ static grpc_chttp2_stream *lookup_stream(grpc_chttp2_transport *t, gpr_uint32 id
 #endif
 
 /* tcp read callback */
+#if 0
 static void recv_data(void *tp, gpr_slice *slices, size_t nslices,
                       grpc_endpoint_cb_status error) {
   grpc_chttp2_transport *t = tp;
@@ -1025,6 +1106,7 @@ static void recv_data(void *tp, gpr_slice *slices, size_t nslices,
       break;
   }
 }
+#endif
 
 static void reading_action(void *pt, int iomgr_success_ignored) {
   grpc_chttp2_transport *t = pt;
@@ -1042,6 +1124,10 @@ typedef struct {
   grpc_iomgr_closure closure;
 } notify_goaways_args;
 
+static void finished_channel_callbacks_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *arg_ignored) {
+  t->executor.channel_callback_active = 0;
+}
+
 static void notify_goaways(void *p, int iomgr_success_ignored) {
   notify_goaways_args *a = p;
   grpc_chttp2_transport *t = a->t;
@@ -1051,10 +1137,7 @@ static void notify_goaways(void *p, int iomgr_success_ignored) {
 
   gpr_free(a);
 
-  lock(t);
-  t->channel_callback.executing = 0;
-  unlock(t);
-
+  grpc_chttp2_run_with_global_lock(t, NULL, finished_channel_callbacks_locked, NULL, 0);
   UNREF_TRANSPORT(t, "notify_goaways");
 }
 
@@ -1062,13 +1145,11 @@ static void notify_closed(void *gt, int iomgr_success_ignored) {
   grpc_chttp2_transport *t = gt;
   t->channel_callback.cb->closed(t->channel_callback.cb_user_data, &t->base);
 
-  lock(t);
-  t->channel_callback.executing = 0;
-  unlock(t);
-
+  grpc_chttp2_run_with_global_lock(t, NULL, finished_channel_callbacks_locked, NULL, 0);
   UNREF_TRANSPORT(t, "notify_closed");
 }
 
+#if 0
 static void unlock_check_channel_callbacks(grpc_chttp2_transport *t) {
   if (t->channel_callback.executing) {
     return;
@@ -1098,6 +1179,7 @@ static void unlock_check_channel_callbacks(grpc_chttp2_transport *t) {
                                  1);
   }
 }
+#endif
 
 void grpc_chttp2_schedule_closure(
     grpc_chttp2_transport_global *transport_global, grpc_iomgr_closure *closure,
@@ -1112,7 +1194,8 @@ void grpc_chttp2_schedule_closure(
  */
 
 static void add_to_pollset_locked(grpc_chttp2_transport *t,
-                                  grpc_pollset *pollset) {
+                                  grpc_chttp2_stream *s,
+                                  void *pollset) {
   if (t->ep) {
     grpc_endpoint_add_to_pollset(t->ep, pollset);
   }
@@ -1120,9 +1203,7 @@ static void add_to_pollset_locked(grpc_chttp2_transport *t,
 
 static void add_to_pollset(grpc_transport *gt, grpc_pollset *pollset) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  lock(t);
-  add_to_pollset_locked(t, pollset);
-  unlock(t);
+  grpc_chttp2_run_with_global_lock(t, NULL, add_to_pollset_locked, pollset, 0);
 }
 
 /*
-- 
GitLab


From 4b074d5274af7f1c2b2067181b398c9d09e4443c Mon Sep 17 00:00:00 2001
From: Craig Tiller <craig.tiller@gmail.com>
Date: Tue, 23 Jun 2015 07:48:21 -0700
Subject: [PATCH 002/525] CHTTP2 executor

---
 src/core/transport/chttp2/internal.h  |   7 ++
 src/core/transport/chttp2_transport.c | 167 ++++++++++++++------------
 2 files changed, 94 insertions(+), 80 deletions(-)

diff --git a/src/core/transport/chttp2/internal.h b/src/core/transport/chttp2/internal.h
index 784c85ec4f..61947f7395 100644
--- a/src/core/transport/chttp2/internal.h
+++ b/src/core/transport/chttp2/internal.h
@@ -351,6 +351,13 @@ struct grpc_chttp2_transport {
   grpc_iomgr_closure writing_action;
   /** closure to start reading from the endpoint */
   grpc_iomgr_closure reading_action;
+  /** closure to actually do parsing */
+  grpc_iomgr_closure parsing_action;
+
+  struct {
+    size_t nslices;
+    gpr_slice *slices;
+  } executor_parsing;
 
   /** address to place a newly accepted stream - set and unset by
       grpc_chttp2_parsing_accept_stream; used by init_stream to
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 3cf08e1772..159072eab4 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -89,6 +89,7 @@ static void unlock_check_read_write_state(grpc_chttp2_transport *t);
 /* forward declarations of various callbacks that we'll build closures around */
 static void writing_action(void *t, int iomgr_success_ignored);
 static void reading_action(void *t, int iomgr_success_ignored);
+static void parsing_action(void *t, int iomgr_success_ignored);
 static void notify_closed(void *t, int iomgr_success_ignored);
 
 /** Set a transport level setting, and push it to our peer */
@@ -244,6 +245,7 @@ static void init_transport(grpc_chttp2_transport *t,
   grpc_chttp2_hpack_compressor_init(&t->writing.hpack_compressor, mdctx);
   grpc_iomgr_closure_init(&t->writing_action, writing_action, t);
   grpc_iomgr_closure_init(&t->reading_action, reading_action, t);
+  grpc_iomgr_closure_init(&t->parsing_action, parsing_action, t);
 
   gpr_slice_buffer_init(&t->parsing.qbuf);
   grpc_chttp2_goaway_parser_init(&t->parsing.goaway_parser);
@@ -427,24 +429,6 @@ static void destroy_stream(grpc_transport *gt, grpc_stream *gs) {
 
   int i;
 
-#if 0
-  gpr_mu_lock(&t->mu);
-
-  GPR_ASSERT(s->global.published_state == GRPC_STREAM_CLOSED ||
-             s->global.id == 0);
-  GPR_ASSERT(!s->global.in_stream_map);
-  grpc_chttp2_unregister_stream(t, s);
-  if (!t->parsing_active && s->global.id) {
-    GPR_ASSERT(grpc_chttp2_stream_map_find(&t->parsing_stream_map,
-                                           s->global.id) == NULL);
-  }
-
-  grpc_chttp2_list_remove_incoming_window_updated(&t->global, &s->global);
-  grpc_chttp2_list_remove_writable_window_update_stream(&t->global, &s->global);
-
-  gpr_mu_unlock(&t->mu);
-#endif
-
   for (i = 0; i < STREAM_LIST_COUNT; i++) {
     GPR_ASSERT(!s->included[i]);
   }
@@ -540,7 +524,6 @@ void grpc_chttp2_run_with_global_lock(grpc_chttp2_transport *t, grpc_chttp2_stre
   for (;;) {
     if (!t->executor.global_active) {
       t->executor.global_active = 1;
-      GPR_ASSERT(t->executor.pending_actions == NULL);
       gpr_mu_unlock(&t->executor.mu);
 
       action(t, optional_stream, arg);
@@ -591,12 +574,8 @@ static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
   }
 }
 
-#if 0
-void grpc_chttp2_terminate_writing(
-    grpc_chttp2_transport_writing *transport_writing, int success) {
-  grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
-
-  lock(t);
+static void terminate_writing_with_lock(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *a) {
+  int success = *(int*)a;
 
   if (!success) {
     drop_connection(t);
@@ -607,7 +586,7 @@ void grpc_chttp2_terminate_writing(
 
   /* leave the writing flag up on shutdown to prevent further writes in unlock()
      from starting */
-  t->writing_active = 0;
+  t->executor.writing_active = 0;
   if (t->ep && !t->endpoint_reading) {
     grpc_endpoint_destroy(t->ep);
     t->ep = NULL;
@@ -615,11 +594,14 @@ void grpc_chttp2_terminate_writing(
         t, "disconnect"); /* safe because we'll still have the ref for write */
   }
 
-  unlock(t);
-
   UNREF_TRANSPORT(t, "writing");
 }
-#endif
+
+void grpc_chttp2_terminate_writing(
+    grpc_chttp2_transport_writing *transport_writing, int success) {
+  grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
+  grpc_chttp2_run_with_global_lock(t, NULL, terminate_writing_with_lock, &success, sizeof(success));
+}
 
 static void writing_action(void *gt, int iomgr_success_ignored) {
   grpc_chttp2_transport *t = gt;
@@ -879,6 +861,12 @@ static void unlock_check_read_write_state(grpc_chttp2_transport *t) {
     grpc_chttp2_incoming_metadata_buffer_postprocess_sopb_and_begin_live_op(
         &stream_global->incoming_metadata, &stream_global->incoming_sopb,
         &stream_global->outstanding_metadata);
+    if (state == GRPC_STREAM_CLOSED) {
+      GPR_ASSERT(!stream_global->in_stream_map);
+      grpc_chttp2_unregister_stream(TRANSPORT_FROM_GLOBAL(transport_global), STREAM_FROM_GLOBAL(stream_global));
+      grpc_chttp2_list_remove_incoming_window_updated(transport_global, stream_global);
+      grpc_chttp2_list_remove_writable_window_update_stream(transport_global, stream_global);
+    }
     grpc_sopb_swap(stream_global->publish_sopb, &stream_global->incoming_sopb);
     stream_global->published_state = *stream_global->publish_state = state;
     grpc_chttp2_schedule_closure(transport_global,
@@ -922,66 +910,87 @@ static void drop_connection(grpc_chttp2_transport *t) {
   end_all_the_calls(t);
 }
 
+static void recv_data_error_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *a) {
+  size_t i;
+
+  drop_connection(t);
+  t->endpoint_reading = 0;
+  if (!t->executor.writing_active && t->ep) {
+    grpc_endpoint_destroy(t->ep);
+    t->ep = NULL;
+    UNREF_TRANSPORT(
+        t, "disconnect"); /* safe as we still have a ref for read */
+  }
+  UNREF_TRANSPORT(t, "recv_data");
+  for (i = 0; i < t->executor_parsing.nslices; i++) gpr_slice_unref(t->executor_parsing.slices[i]);
+}
+
+static void finish_parsing_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *a) {
+  size_t i = *(size_t *)a;
+
+  if (i != t->executor_parsing.nslices) {
+    drop_connection(t);
+  }
+  /* merge stream lists */
+  grpc_chttp2_stream_map_move_into(&t->new_stream_map,
+                                   &t->parsing_stream_map);
+  t->global.concurrent_stream_count = grpc_chttp2_stream_map_size(&t->parsing_stream_map);
+  /* handle higher level things */
+  grpc_chttp2_publish_reads(&t->global, &t->parsing);
+  t->executor.parsing_active = 0;
+
+  for (; i < t->executor_parsing.nslices; i++) gpr_slice_unref(t->executor_parsing.slices[i]);
+
+  if (i == t->executor_parsing.nslices) {
+    grpc_chttp2_schedule_closure(&t->global, &t->reading_action, 1);
+  }
+}
+
+static void parsing_action(void *pt, int iomgr_success_ignored) {
+  size_t i;
+  grpc_chttp2_transport *t = pt;
+  for (i = 0; i < t->executor_parsing.nslices && grpc_chttp2_perform_read(&t->parsing, t->executor_parsing.slices[i]);
+       i++) {
+    gpr_slice_unref(t->executor_parsing.slices[i]);
+  }
+  grpc_chttp2_run_with_global_lock(t, NULL, finish_parsing_locked, &i, sizeof(i));
+}
+
+static void recv_data_ok_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *a) {
+  size_t i;
+  GPR_ASSERT(!t->executor.parsing_active);
+  if (t->global.error_state == GRPC_CHTTP2_ERROR_STATE_NONE) {
+    t->executor.parsing_active = 1;
+    /* merge stream lists */
+    grpc_chttp2_stream_map_move_into(&t->new_stream_map,
+                                     &t->parsing_stream_map);
+    grpc_chttp2_prepare_to_read(&t->global, &t->parsing);
+    /* schedule more work to do unlocked */
+    grpc_chttp2_schedule_closure(&t->global, &t->parsing_action, 1);
+  } else {
+    for (i = 0; i < t->executor_parsing.nslices; i++) gpr_slice_unref(t->executor_parsing.slices[i]);
+  }
+}
+
 /* tcp read callback */
-#if 0
 static void recv_data(void *tp, gpr_slice *slices, size_t nslices,
                       grpc_endpoint_cb_status error) {
   grpc_chttp2_transport *t = tp;
-  size_t i;
+
+  t->executor_parsing.slices = slices;
+  t->executor_parsing.nslices = nslices;
 
   switch (error) {
     case GRPC_ENDPOINT_CB_SHUTDOWN:
     case GRPC_ENDPOINT_CB_EOF:
     case GRPC_ENDPOINT_CB_ERROR:
-      lock(t);
-      drop_connection(t);
-      t->endpoint_reading = 0;
-      if (!t->writing_active && t->ep) {
-        grpc_endpoint_destroy(t->ep);
-        t->ep = NULL;
-        UNREF_TRANSPORT(
-            t, "disconnect"); /* safe as we still have a ref for read */
-      }
-      unlock(t);
-      UNREF_TRANSPORT(t, "recv_data");
-      for (i = 0; i < nslices; i++) gpr_slice_unref(slices[i]);
+      grpc_chttp2_run_with_global_lock(t, NULL, recv_data_error_locked, NULL, 0);
       break;
     case GRPC_ENDPOINT_CB_OK:
-      lock(t);
-      i = 0;
-      GPR_ASSERT(!t->parsing_active);
-      if (t->global.error_state == GRPC_CHTTP2_ERROR_STATE_NONE) {
-        t->parsing_active = 1;
-        /* merge stream lists */
-        grpc_chttp2_stream_map_move_into(&t->new_stream_map,
-                                         &t->parsing_stream_map);
-        grpc_chttp2_prepare_to_read(&t->global, &t->parsing);
-        gpr_mu_unlock(&t->mu);
-        for (; i < nslices && grpc_chttp2_perform_read(&t->parsing, slices[i]);
-             i++) {
-          gpr_slice_unref(slices[i]);
-        }
-        gpr_mu_lock(&t->mu);
-        if (i != nslices) {
-          drop_connection(t);
-        }
-        /* merge stream lists */
-        grpc_chttp2_stream_map_move_into(&t->new_stream_map,
-                                         &t->parsing_stream_map);
-        t->global.concurrent_stream_count = grpc_chttp2_stream_map_size(&t->parsing_stream_map);
-        /* handle higher level things */
-        grpc_chttp2_publish_reads(&t->global, &t->parsing);
-        t->parsing_active = 0;
-      }
-      if (i == nslices) {
-        grpc_chttp2_schedule_closure(&t->global, &t->reading_action, 1);
-      }
-      unlock(t);
-      for (; i < nslices; i++) gpr_slice_unref(slices[i]);
+      grpc_chttp2_run_with_global_lock(t, NULL, recv_data_ok_locked, NULL, 0);
       break;
   }
 }
-#endif
 
 static void reading_action(void *pt, int iomgr_success_ignored) {
   grpc_chttp2_transport *t = pt;
@@ -1024,9 +1033,8 @@ static void notify_closed(void *gt, int iomgr_success_ignored) {
   UNREF_TRANSPORT(t, "notify_closed");
 }
 
-#if 0
 static void unlock_check_channel_callbacks(grpc_chttp2_transport *t) {
-  if (t->channel_callback.executing) {
+  if (t->executor.channel_callback_active) {
     return;
   }
   if (t->global.goaway_state != GRPC_CHTTP2_ERROR_STATE_NONE) {
@@ -1037,7 +1045,7 @@ static void unlock_check_channel_callbacks(grpc_chttp2_transport *t) {
       a->error = t->global.goaway_error;
       a->text = t->global.goaway_text;
       t->global.goaway_state = GRPC_CHTTP2_ERROR_STATE_NOTIFIED;
-      t->channel_callback.executing = 1;
+      t->executor.channel_callback_active = 1;
       grpc_iomgr_closure_init(&a->closure, notify_goaways, a);
       REF_TRANSPORT(t, "notify_goaways");
       grpc_chttp2_schedule_closure(&t->global, &a->closure, 1);
@@ -1048,13 +1056,12 @@ static void unlock_check_channel_callbacks(grpc_chttp2_transport *t) {
   }
   if (t->global.error_state == GRPC_CHTTP2_ERROR_STATE_SEEN) {
     t->global.error_state = GRPC_CHTTP2_ERROR_STATE_NOTIFIED;
-    t->channel_callback.executing = 1;
+    t->executor.channel_callback_active = 1;
     REF_TRANSPORT(t, "notify_closed");
     grpc_chttp2_schedule_closure(&t->global, &t->channel_callback.notify_closed,
                                  1);
   }
 }
-#endif
 
 void grpc_chttp2_schedule_closure(
     grpc_chttp2_transport_global *transport_global, grpc_iomgr_closure *closure,
-- 
GitLab


From 55e9953d949755e651a7320b854bead6dbcc2b64 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 23 Jun 2015 12:25:55 -0700
Subject: [PATCH 003/525] Fix some memory issues

---
 src/core/transport/chttp2_transport.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 159072eab4..0aae67a2c0 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -505,6 +505,7 @@ static void finish_global_actions(grpc_chttp2_transport *t) {
         hdr->action(t, hdr->stream, hdr->arg);
         next = hdr->next;
         gpr_free(hdr);
+        UNREF_TRANSPORT(t, "pending_action");
         hdr = next;
       }
       continue;
@@ -519,6 +520,7 @@ void grpc_chttp2_run_with_global_lock(grpc_chttp2_transport *t, grpc_chttp2_stre
   void *arg, size_t sizeof_arg) {
   grpc_chttp2_executor_action_header *hdr;
 
+  REF_TRANSPORT(t, "run_global");
   gpr_mu_lock(&t->executor.mu);
 
   for (;;) {
@@ -549,10 +551,13 @@ void grpc_chttp2_run_with_global_lock(grpc_chttp2_transport *t, grpc_chttp2_stre
       }
       hdr->next = t->executor.pending_actions;
       t->executor.pending_actions = hdr;
+      REF_TRANSPORT(t, "pending_action");
       gpr_mu_unlock(&t->executor.mu);
     }
     break;
   }
+
+  UNREF_TRANSPORT(t, "run_global");
 }
 
 /*
@@ -921,8 +926,9 @@ static void recv_data_error_locked(grpc_chttp2_transport *t, grpc_chttp2_stream
     UNREF_TRANSPORT(
         t, "disconnect"); /* safe as we still have a ref for read */
   }
-  UNREF_TRANSPORT(t, "recv_data");
   for (i = 0; i < t->executor_parsing.nslices; i++) gpr_slice_unref(t->executor_parsing.slices[i]);
+  memset(&t->executor_parsing, 0, sizeof(t->executor_parsing));
+  UNREF_TRANSPORT(t, "recv_data");
 }
 
 static void finish_parsing_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *a) {
@@ -944,6 +950,7 @@ static void finish_parsing_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *
   if (i == t->executor_parsing.nslices) {
     grpc_chttp2_schedule_closure(&t->global, &t->reading_action, 1);
   }
+  memset(&t->executor_parsing, 0, sizeof(t->executor_parsing));
 }
 
 static void parsing_action(void *pt, int iomgr_success_ignored) {
@@ -969,6 +976,7 @@ static void recv_data_ok_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s,
     grpc_chttp2_schedule_closure(&t->global, &t->parsing_action, 1);
   } else {
     for (i = 0; i < t->executor_parsing.nslices; i++) gpr_slice_unref(t->executor_parsing.slices[i]);
+    memset(&t->executor_parsing, 0, sizeof(t->executor_parsing));
   }
 }
 
-- 
GitLab


From 0cd216cd160926d70f3566bf21f212e3c56a7e89 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 1 Jul 2015 16:11:25 -0700
Subject: [PATCH 004/525] Merge with latest

---
 src/core/transport/chttp2_transport.c | 37 ++++++++++++++-------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 09d1a8cb39..53c1898843 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -940,6 +940,19 @@ static void recv_data_error_locked(grpc_chttp2_transport *t, grpc_chttp2_stream
   UNREF_TRANSPORT(t, "recv_data");
 }
 
+/** update window from a settings change */
+static void update_global_window(void *args, gpr_uint32 id, void *stream) {
+  grpc_chttp2_transport *t = args;
+  grpc_chttp2_stream *s = stream;
+  grpc_chttp2_transport_global *transport_global = &t->global;
+  grpc_chttp2_stream_global *stream_global = &s->global;
+
+  GRPC_CHTTP2_FLOWCTL_TRACE_STREAM("settings", transport_global, stream_global,
+                                   outgoing_window,
+                                   t->parsing.initial_window_update);
+  stream_global->outgoing_window += t->parsing.initial_window_update;
+}
+
 static void finish_parsing_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s_ignored, void *a) {
   size_t i = *(size_t *)a;
 
@@ -950,20 +963,24 @@ static void finish_parsing_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *
   grpc_chttp2_stream_map_move_into(&t->new_stream_map,
                                    &t->parsing_stream_map);
   t->global.concurrent_stream_count = grpc_chttp2_stream_map_size(&t->parsing_stream_map);
+  if (t->parsing.initial_window_update != 0) {
+    grpc_chttp2_stream_map_for_each(&t->parsing_stream_map,
+                                    update_global_window, t);
+  }
   /* handle higher level things */
   grpc_chttp2_publish_reads(&t->global, &t->parsing);
   t->executor.parsing_active = 0;
 
   for (; i < t->executor_parsing.nslices; i++) gpr_slice_unref(t->executor_parsing.slices[i]);
 
-  memset(&t->executor_parsing, 0, sizeof(t->executor_parsing));
-
   if (i == t->executor_parsing.nslices) {
     grpc_chttp2_schedule_closure(&t->global, &t->reading_action, 1);
   } else {
     read_error_locked(t);
     UNREF_TRANSPORT(t, "recv_data");
   }
+
+  memset(&t->executor_parsing, 0, sizeof(t->executor_parsing));
 }
 
 static void parsing_action(void *pt, int iomgr_success_ignored) {
@@ -993,19 +1010,6 @@ static void recv_data_ok_locked(grpc_chttp2_transport *t, grpc_chttp2_stream *s,
   }
 }
 
-/** update window from a settings change */
-static void update_global_window(void *args, gpr_uint32 id, void *stream) {
-  grpc_chttp2_transport *t = args;
-  grpc_chttp2_stream *s = stream;
-  grpc_chttp2_transport_global *transport_global = &t->global;
-  grpc_chttp2_stream_global *stream_global = &s->global;
-
-  GRPC_CHTTP2_FLOWCTL_TRACE_STREAM("settings", transport_global, stream_global,
-                                   outgoing_window,
-                                   t->parsing.initial_window_update);
-  stream_global->outgoing_window += t->parsing.initial_window_update;
-}
-
 /* tcp read callback */
 static void recv_data(void *tp, gpr_slice *slices, size_t nslices,
                       grpc_endpoint_cb_status error) {
@@ -1024,9 +1028,6 @@ static void recv_data(void *tp, gpr_slice *slices, size_t nslices,
       grpc_chttp2_run_with_global_lock(t, NULL, recv_data_ok_locked, NULL, 0);
       break;
   }
-  if (unref) {
-    UNREF_TRANSPORT(t, "recv_data");
-  }
 }
 
 static void reading_action(void *pt, int iomgr_success_ignored) {
-- 
GitLab


From c283409d84a299c35f5a6bb1e643c5728cbe38e0 Mon Sep 17 00:00:00 2001
From: Jon Skeet <jonskeet@google.com>
Date: Wed, 23 Dec 2015 09:32:27 +0000
Subject: [PATCH 005/525] Restore dependencies in buildall.bat

Without this, even the C++ code fails to build (from a clean clone) due to missing includes.
Note that this requires that nuget.exe is on the path. Better alternatives welcomed...
---
 src/csharp/buildall.bat | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/csharp/buildall.bat b/src/csharp/buildall.bat
index d85896c255..6173629ddd 100644
--- a/src/csharp/buildall.bat
+++ b/src/csharp/buildall.bat
@@ -8,6 +8,12 @@ cd /d %~dp0
 @rem Set VS variables (uses Visual Studio 2013)
 @call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
 
+@rem Fetch all dependencies
+nuget restore ..\..\vsprojects\grpc.sln || goto :error
+nuget restore ..\..\vsprojects\grpc_csharp_ext.sln || goto :error
+nuget restore ..\..\vsprojects\grpc_protoc_plugins.sln || goto :error
+nuget restore Grpc.sln || goto :error
+
 @rem Build the C# native extension
 msbuild ..\..\vsprojects\grpc_csharp_ext.sln /p:PlatformToolset=v120 || goto :error
 
-- 
GitLab


From c1d2ecb2783a857393b1a1631cb46a551d5ba1c0 Mon Sep 17 00:00:00 2001
From: Mathieu Leenhardt <mathieu.leenhardt@gmail.com>
Date: Thu, 4 Feb 2016 22:32:14 +0100
Subject: [PATCH 006/525] Added fluent methods for WriteOptions,
 ContextPropagationToken and CallCredentials

---
 src/csharp/Grpc.Core/CallOptions.cs | 51 ++++++++++++++++++++++-------
 1 file changed, 39 insertions(+), 12 deletions(-)

diff --git a/src/csharp/Grpc.Core/CallOptions.cs b/src/csharp/Grpc.Core/CallOptions.cs
index 1fda80cb90..339552b0b1 100644
--- a/src/csharp/Grpc.Core/CallOptions.cs
+++ b/src/csharp/Grpc.Core/CallOptions.cs
@@ -100,10 +100,7 @@ namespace Grpc.Core
         /// </summary>
         public WriteOptions WriteOptions
         {
-            get
-            {
-                return this.writeOptions;
-            }
+            get { return this.writeOptions; }
         }
 
         /// <summary>
@@ -111,10 +108,7 @@ namespace Grpc.Core
         /// </summary>
         public ContextPropagationToken PropagationToken
         {
-            get
-            {
-                return this.propagationToken;
-            }
+            get { return this.propagationToken; }
         }
 
         /// <summary>
@@ -122,10 +116,7 @@ namespace Grpc.Core
         /// </summary>
         public CallCredentials Credentials
         {
-            get
-            {
-                return this.credentials;
-            }
+            get { return this.credentials; }
         }
 
         /// <summary>
@@ -164,6 +155,42 @@ namespace Grpc.Core
             return newOptions;
         }
 
+        /// <summary>
+        /// Returns new instance of <see cref="CallOptions"/> with
+        /// <c>WriteOptions</c> set to the value provided. Values of all other fields are preserved.
+        /// </summary>
+        /// <param name="cancellationToken">The write options.</param>
+        public CallOptions WithWriteOptions(WriteOptions writeOptions)
+        {
+            var newOptions = this;
+            newOptions.writeOptions = writeOptions;
+            return newOptions;
+        }
+
+        /// <summary>
+        /// Returns new instance of <see cref="CallOptions"/> with
+        /// <c>PropagationToken</c> set to the value provided. Values of all other fields are preserved.
+        /// </summary>
+        /// <param name="propagationToken">The context propagation token.</param>
+        public CallOptions WithPropagationToken(ContextPropagationToken propagationToken)
+        {
+            var newOptions = this;
+            newOptions.propagationToken = propagationToken;
+            return newOptions;
+        }
+
+        /// <summary>
+        /// Returns new instance of <see cref="CallOptions"/> with
+        /// <c>Credentials</c> set to the value provided. Values of all other fields are preserved.
+        /// </summary>
+        /// <param name="credentials">The call credentials.</param>
+        public CallOptions WithCredentials(CallCredentials credentials)
+        {
+            var newOptions = this;
+            newOptions.credentials = credentials;
+            return newOptions;
+        }
+
         /// <summary>
         /// Returns a new instance of <see cref="CallOptions"/> with 
         /// all previously unset values set to their defaults and deadline and cancellation
-- 
GitLab


From ced274861a469d384fcaedd9cbbc01986033fc67 Mon Sep 17 00:00:00 2001
From: Mathieu Leenhardt <mathieu.leenhardt@gmail.com>
Date: Thu, 4 Feb 2016 22:57:49 +0100
Subject: [PATCH 007/525] Fixed WithWriteOptions parameter name in xml comments

---
 src/csharp/Grpc.Core/CallOptions.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.Core/CallOptions.cs b/src/csharp/Grpc.Core/CallOptions.cs
index 339552b0b1..10e073aff1 100644
--- a/src/csharp/Grpc.Core/CallOptions.cs
+++ b/src/csharp/Grpc.Core/CallOptions.cs
@@ -159,7 +159,7 @@ namespace Grpc.Core
         /// Returns new instance of <see cref="CallOptions"/> with
         /// <c>WriteOptions</c> set to the value provided. Values of all other fields are preserved.
         /// </summary>
-        /// <param name="cancellationToken">The write options.</param>
+        /// <param name="writeOptions">The write options.</param>
         public CallOptions WithWriteOptions(WriteOptions writeOptions)
         {
             var newOptions = this;
-- 
GitLab


From 9ef407b0d771878ca1c0f35b4554dd64a3492908 Mon Sep 17 00:00:00 2001
From: Mathieu Leenhardt <mathieu.leenhardt@gmail.com>
Date: Thu, 4 Feb 2016 23:24:30 +0100
Subject: [PATCH 008/525] Added test coverage for new fluent methods

---
 src/csharp/Grpc.Core.Tests/CallOptionsTest.cs | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs b/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs
index a3a613be74..99a2d47e6e 100644
--- a/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs
+++ b/src/csharp/Grpc.Core.Tests/CallOptionsTest.cs
@@ -54,10 +54,20 @@ namespace Grpc.Core.Tests
             var deadline = DateTime.UtcNow;
             Assert.AreEqual(deadline, options.WithDeadline(deadline).Deadline.Value);
 
-            var token = new CancellationTokenSource().Token;
-            Assert.AreEqual(token, options.WithCancellationToken(token).CancellationToken);
+            var cancellationToken = new CancellationTokenSource().Token;
+            Assert.AreEqual(cancellationToken, options.WithCancellationToken(cancellationToken).CancellationToken);
+
+            var writeOptions = new WriteOptions();
+            Assert.AreSame(writeOptions, options.WithWriteOptions(writeOptions).WriteOptions);
+
+            var propagationToken = new ContextPropagationToken(CallSafeHandle.NullInstance, DateTime.UtcNow, 
+                CancellationToken.None, ContextPropagationOptions.Default);
+            Assert.AreSame(propagationToken, options.WithPropagationToken(propagationToken).PropagationToken);
+
+            var credentials = new FakeCallCredentials();
+            Assert.AreSame(credentials, options.WithCredentials(credentials).Credentials);
 
-            // Change original instance is unchanged.
+            // Check that the original instance is unchanged.
             Assert.IsNull(options.Headers);
             Assert.IsNull(options.Deadline);
             Assert.AreEqual(CancellationToken.None, options.CancellationToken);
-- 
GitLab


From 253bd5016709f5a070ac792597ccf9f11cd29852 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 25 Feb 2016 12:30:23 -0800
Subject: [PATCH 009/525] Allow selecting poll strategy, start to stub
 ev_poll_posix.c

---
 src/core/iomgr/ev_poll_posix.c      |  1645 ++
 src/core/iomgr/ev_poll_posix.h      |    41 +
 src/core/iomgr/ev_posix.c           |    83 +-
 test/core/end2end/gen_build_yaml.py |    24 +-
 tools/run_tests/run_tests.py        |    12 +-
 tools/run_tests/tests.json          | 36589 +++++++++++++++++++++++---
 6 files changed, 34282 insertions(+), 4112 deletions(-)
 create mode 100644 src/core/iomgr/ev_poll_posix.c
 create mode 100644 src/core/iomgr/ev_poll_posix.h

diff --git a/src/core/iomgr/ev_poll_posix.c b/src/core/iomgr/ev_poll_posix.c
new file mode 100644
index 0000000000..3693e13729
--- /dev/null
+++ b/src/core/iomgr/ev_poll_posix.c
@@ -0,0 +1,1645 @@
+/*
+ *
+ * Copyright 2015-2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* This file will be removed shortly: it's here to keep refactoring
+ * steps simple and auditable.
+ * It's the combination of the old files:
+ *  - fd_posix.{h,c}
+ *  - pollset_posix.{h,c}
+ *  - pullset_multipoller_with_{poll,epoll}.{h,c}
+ * The new version will be split into:
+ *  - ev_poll_posix.{h,c}
+ *  - ev_epoll_posix.{h,c}
+ */
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_POSIX_SOCKET
+
+#include "src/core/iomgr/ev_poll_and_epoll_posix.h"
+
+#include <assert.h>
+#include <errno.h>
+#include <poll.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <unistd.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/tls.h>
+#include <grpc/support/useful.h>
+
+#include "src/core/iomgr/iomgr_internal.h"
+#include "src/core/iomgr/wakeup_fd_posix.h"
+#include "src/core/profiling/timers.h"
+#include "src/core/support/block_annotate.h"
+
+/*******************************************************************************
+ * FD declarations
+ */
+
+typedef struct grpc_fd_watcher {
+  struct grpc_fd_watcher *next;
+  struct grpc_fd_watcher *prev;
+  grpc_pollset *pollset;
+  grpc_pollset_worker *worker;
+  grpc_fd *fd;
+} grpc_fd_watcher;
+
+struct grpc_fd {
+  int fd;
+  /* refst format:
+     bit0:   1=active/0=orphaned
+     bit1-n: refcount
+     meaning that mostly we ref by two to avoid altering the orphaned bit,
+     and just unref by 1 when we're ready to flag the object as orphaned */
+  gpr_atm refst;
+
+  gpr_mu mu;
+  int shutdown;
+  int closed;
+  int released;
+
+  /* The watcher list.
+
+     The following watcher related fields are protected by watcher_mu.
+
+     An fd_watcher is an ephemeral object created when an fd wants to
+     begin polling, and destroyed after the poll.
+
+     It denotes the fd's interest in whether to read poll or write poll
+     or both or neither on this fd.
+
+     If a watcher is asked to poll for reads or writes, the read_watcher
+     or write_watcher fields are set respectively. A watcher may be asked
+     to poll for both, in which case both fields will be set.
+
+     read_watcher and write_watcher may be NULL if no watcher has been
+     asked to poll for reads or writes.
+
+     If an fd_watcher is not asked to poll for reads or writes, it's added
+     to a linked list of inactive watchers, rooted at inactive_watcher_root.
+     If at a later time there becomes need of a poller to poll, one of
+     the inactive pollers may be kicked out of their poll loops to take
+     that responsibility. */
+  grpc_fd_watcher inactive_watcher_root;
+  grpc_fd_watcher *read_watcher;
+  grpc_fd_watcher *write_watcher;
+
+  grpc_closure *read_closure;
+  grpc_closure *write_closure;
+
+  struct grpc_fd *freelist_next;
+
+  grpc_closure *on_done_closure;
+
+  grpc_iomgr_object iomgr_object;
+};
+
+/* Begin polling on an fd.
+   Registers that the given pollset is interested in this fd - so that if read
+   or writability interest changes, the pollset can be kicked to pick up that
+   new interest.
+   Return value is:
+     (fd_needs_read? read_mask : 0) | (fd_needs_write? write_mask : 0)
+   i.e. a combination of read_mask and write_mask determined by the fd's current
+   interest in said events.
+   Polling strategies that do not need to alter their behavior depending on the
+   fd's current interest (such as epoll) do not need to call this function.
+   MUST NOT be called with a pollset lock taken */
+static uint32_t fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset,
+                              grpc_pollset_worker *worker, uint32_t read_mask,
+                              uint32_t write_mask, grpc_fd_watcher *rec);
+/* Complete polling previously started with fd_begin_poll
+   MUST NOT be called with a pollset lock taken
+   if got_read or got_write are 1, also does the become_{readable,writable} as
+   appropriate. */
+static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *rec,
+                        int got_read, int got_write);
+
+/* Return 1 if this fd is orphaned, 0 otherwise */
+static bool fd_is_orphaned(grpc_fd *fd);
+
+/* Notification from the poller to an fd that it has become readable or
+   writable.
+   If allow_synchronous_callback is 1, allow running the fd callback inline
+   in this callstack, otherwise register an asynchronous callback and return */
+static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd);
+static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd);
+
+/* Reference counting for fds */
+/*#define GRPC_FD_REF_COUNT_DEBUG*/
+#ifdef GRPC_FD_REF_COUNT_DEBUG
+static void fd_ref(grpc_fd *fd, const char *reason, const char *file, int line);
+static void fd_unref(grpc_fd *fd, const char *reason, const char *file,
+                     int line);
+#define GRPC_FD_REF(fd, reason) fd_ref(fd, reason, __FILE__, __LINE__)
+#define GRPC_FD_UNREF(fd, reason) fd_unref(fd, reason, __FILE__, __LINE__)
+#else
+static void fd_ref(grpc_fd *fd);
+static void fd_unref(grpc_fd *fd);
+#define GRPC_FD_REF(fd, reason) fd_ref(fd)
+#define GRPC_FD_UNREF(fd, reason) fd_unref(fd)
+#endif
+
+static void fd_global_init(void);
+static void fd_global_shutdown(void);
+
+#define CLOSURE_NOT_READY ((grpc_closure *)0)
+#define CLOSURE_READY ((grpc_closure *)1)
+
+/*******************************************************************************
+ * pollset declarations
+ */
+
+typedef struct grpc_pollset_vtable grpc_pollset_vtable;
+
+typedef struct grpc_cached_wakeup_fd {
+  grpc_wakeup_fd fd;
+  struct grpc_cached_wakeup_fd *next;
+} grpc_cached_wakeup_fd;
+
+struct grpc_pollset_worker {
+  grpc_cached_wakeup_fd *wakeup_fd;
+  int reevaluate_polling_on_wakeup;
+  int kicked_specifically;
+  struct grpc_pollset_worker *next;
+  struct grpc_pollset_worker *prev;
+};
+
+struct grpc_pollset {
+  /* pollsets under posix can mutate representation as fds are added and
+     removed.
+     For example, we may choose a poll() based implementation on linux for
+     few fds, and an epoll() based implementation for many fds */
+  const grpc_pollset_vtable *vtable;
+  gpr_mu *mu;
+  grpc_pollset_worker root_worker;
+  int in_flight_cbs;
+  int shutting_down;
+  int called_shutdown;
+  int kicked_without_pollers;
+  grpc_closure *shutdown_done;
+  grpc_closure_list idle_jobs;
+  union {
+    int fd;
+    void *ptr;
+  } data;
+  /* Local cache of eventfds for workers */
+  grpc_cached_wakeup_fd *local_wakeup_cache;
+};
+
+struct grpc_pollset_vtable {
+  void (*add_fd)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                 struct grpc_fd *fd, int and_unlock_pollset);
+  void (*maybe_work_and_unlock)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                                grpc_pollset_worker *worker,
+                                gpr_timespec deadline, gpr_timespec now);
+  void (*finish_shutdown)(grpc_pollset *pollset);
+  void (*destroy)(grpc_pollset *pollset);
+};
+
+/* Add an fd to a pollset */
+static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                           struct grpc_fd *fd);
+
+static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx,
+                               grpc_pollset_set *pollset_set, grpc_fd *fd);
+
+/* Convert a timespec to milliseconds:
+   - very small or negative poll times are clamped to zero to do a
+     non-blocking poll (which becomes spin polling)
+   - other small values are rounded up to one millisecond
+   - longer than a millisecond polls are rounded up to the next nearest
+     millisecond to avoid spinning
+   - infinite timeouts are converted to -1 */
+static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
+                                           gpr_timespec now);
+
+/* Allow kick to wakeup the currently polling worker */
+#define GRPC_POLLSET_CAN_KICK_SELF 1
+/* Force the wakee to repoll when awoken */
+#define GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP 2
+/* As per pollset_kick, with an extended set of flags (defined above)
+   -- mostly for fd_posix's use. */
+static void pollset_kick_ext(grpc_pollset *p,
+                             grpc_pollset_worker *specific_worker,
+                             uint32_t flags);
+
+/* turn a pollset into a multipoller: platform specific */
+typedef void (*platform_become_multipoller_type)(grpc_exec_ctx *exec_ctx,
+                                                 grpc_pollset *pollset,
+                                                 struct grpc_fd **fds,
+                                                 size_t fd_count);
+static platform_become_multipoller_type platform_become_multipoller;
+
+/* Return 1 if the pollset has active threads in pollset_work (pollset must
+ * be locked) */
+static int pollset_has_workers(grpc_pollset *pollset);
+
+static void remove_fd_from_all_epoll_sets(int fd);
+
+/* override to allow tests to hook poll() usage */
+typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int);
+extern grpc_poll_function_type grpc_poll_function;
+extern grpc_wakeup_fd grpc_global_wakeup_fd;
+
+/*******************************************************************************
+ * pollset_set definitions
+ */
+
+struct grpc_pollset_set {
+  gpr_mu mu;
+
+  size_t pollset_count;
+  size_t pollset_capacity;
+  grpc_pollset **pollsets;
+
+  size_t pollset_set_count;
+  size_t pollset_set_capacity;
+  struct grpc_pollset_set **pollset_sets;
+
+  size_t fd_count;
+  size_t fd_capacity;
+  grpc_fd **fds;
+};
+
+/*******************************************************************************
+ * fd_posix.c
+ */
+
+/* We need to keep a freelist not because of any concerns of malloc performance
+ * but instead so that implementations with multiple threads in (for example)
+ * epoll_wait deal with the race between pollset removal and incoming poll
+ * notifications.
+ *
+ * The problem is that the poller ultimately holds a reference to this
+ * object, so it is very difficult to know when is safe to free it, at least
+ * without some expensive synchronization.
+ *
+ * If we keep the object freelisted, in the worst case losing this race just
+ * becomes a spurious read notification on a reused fd.
+ */
+/* TODO(klempner): We could use some form of polling generation count to know
+ * when these are safe to free. */
+/* TODO(klempner): Consider disabling freelisting if we don't have multiple
+ * threads in poll on the same fd */
+/* TODO(klempner): Batch these allocations to reduce fragmentation */
+static grpc_fd *fd_freelist = NULL;
+static gpr_mu fd_freelist_mu;
+
+static void freelist_fd(grpc_fd *fd) {
+  gpr_mu_lock(&fd_freelist_mu);
+  fd->freelist_next = fd_freelist;
+  fd_freelist = fd;
+  grpc_iomgr_unregister_object(&fd->iomgr_object);
+  gpr_mu_unlock(&fd_freelist_mu);
+}
+
+static grpc_fd *alloc_fd(int fd) {
+  grpc_fd *r = NULL;
+  gpr_mu_lock(&fd_freelist_mu);
+  if (fd_freelist != NULL) {
+    r = fd_freelist;
+    fd_freelist = fd_freelist->freelist_next;
+  }
+  gpr_mu_unlock(&fd_freelist_mu);
+  if (r == NULL) {
+    r = gpr_malloc(sizeof(grpc_fd));
+    gpr_mu_init(&r->mu);
+  }
+
+  gpr_atm_rel_store(&r->refst, 1);
+  r->shutdown = 0;
+  r->read_closure = CLOSURE_NOT_READY;
+  r->write_closure = CLOSURE_NOT_READY;
+  r->fd = fd;
+  r->inactive_watcher_root.next = r->inactive_watcher_root.prev =
+      &r->inactive_watcher_root;
+  r->freelist_next = NULL;
+  r->read_watcher = r->write_watcher = NULL;
+  r->on_done_closure = NULL;
+  r->closed = 0;
+  r->released = 0;
+  return r;
+}
+
+static void destroy(grpc_fd *fd) {
+  gpr_mu_destroy(&fd->mu);
+  gpr_free(fd);
+}
+
+#ifdef GRPC_FD_REF_COUNT_DEBUG
+#define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
+#define UNREF_BY(fd, n, reason) unref_by(fd, n, reason, __FILE__, __LINE__)
+static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file,
+                   int line) {
+  gpr_log(GPR_DEBUG, "FD %d %p   ref %d %d -> %d [%s; %s:%d]", fd->fd, fd, n,
+          gpr_atm_no_barrier_load(&fd->refst),
+          gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line);
+#else
+#define REF_BY(fd, n, reason) ref_by(fd, n)
+#define UNREF_BY(fd, n, reason) unref_by(fd, n)
+static void ref_by(grpc_fd *fd, int n) {
+#endif
+  GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&fd->refst, n) > 0);
+}
+
+#ifdef GRPC_FD_REF_COUNT_DEBUG
+static void unref_by(grpc_fd *fd, int n, const char *reason, const char *file,
+                     int line) {
+  gpr_atm old;
+  gpr_log(GPR_DEBUG, "FD %d %p unref %d %d -> %d [%s; %s:%d]", fd->fd, fd, n,
+          gpr_atm_no_barrier_load(&fd->refst),
+          gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line);
+#else
+static void unref_by(grpc_fd *fd, int n) {
+  gpr_atm old;
+#endif
+  old = gpr_atm_full_fetch_add(&fd->refst, -n);
+  if (old == n) {
+    freelist_fd(fd);
+  } else {
+    GPR_ASSERT(old > n);
+  }
+}
+
+static void fd_global_init(void) { gpr_mu_init(&fd_freelist_mu); }
+
+static void fd_global_shutdown(void) {
+  gpr_mu_lock(&fd_freelist_mu);
+  gpr_mu_unlock(&fd_freelist_mu);
+  while (fd_freelist != NULL) {
+    grpc_fd *fd = fd_freelist;
+    fd_freelist = fd_freelist->freelist_next;
+    destroy(fd);
+  }
+  gpr_mu_destroy(&fd_freelist_mu);
+}
+
+static grpc_fd *fd_create(int fd, const char *name) {
+  grpc_fd *r = alloc_fd(fd);
+  char *name2;
+  gpr_asprintf(&name2, "%s fd=%d", name, fd);
+  grpc_iomgr_register_object(&r->iomgr_object, name2);
+  gpr_free(name2);
+#ifdef GRPC_FD_REF_COUNT_DEBUG
+  gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, r, name);
+#endif
+  return r;
+}
+
+static bool fd_is_orphaned(grpc_fd *fd) {
+  return (gpr_atm_acq_load(&fd->refst) & 1) == 0;
+}
+
+static void pollset_kick_locked(grpc_fd_watcher *watcher) {
+  gpr_mu_lock(watcher->pollset->mu);
+  GPR_ASSERT(watcher->worker);
+  pollset_kick_ext(watcher->pollset, watcher->worker,
+                   GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP);
+  gpr_mu_unlock(watcher->pollset->mu);
+}
+
+static void maybe_wake_one_watcher_locked(grpc_fd *fd) {
+  if (fd->inactive_watcher_root.next != &fd->inactive_watcher_root) {
+    pollset_kick_locked(fd->inactive_watcher_root.next);
+  } else if (fd->read_watcher) {
+    pollset_kick_locked(fd->read_watcher);
+  } else if (fd->write_watcher) {
+    pollset_kick_locked(fd->write_watcher);
+  }
+}
+
+static void wake_all_watchers_locked(grpc_fd *fd) {
+  grpc_fd_watcher *watcher;
+  for (watcher = fd->inactive_watcher_root.next;
+       watcher != &fd->inactive_watcher_root; watcher = watcher->next) {
+    pollset_kick_locked(watcher);
+  }
+  if (fd->read_watcher) {
+    pollset_kick_locked(fd->read_watcher);
+  }
+  if (fd->write_watcher && fd->write_watcher != fd->read_watcher) {
+    pollset_kick_locked(fd->write_watcher);
+  }
+}
+
+static int has_watchers(grpc_fd *fd) {
+  return fd->read_watcher != NULL || fd->write_watcher != NULL ||
+         fd->inactive_watcher_root.next != &fd->inactive_watcher_root;
+}
+
+static void close_fd_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
+  fd->closed = 1;
+  if (!fd->released) {
+    close(fd->fd);
+  } else {
+    remove_fd_from_all_epoll_sets(fd->fd);
+  }
+  grpc_exec_ctx_enqueue(exec_ctx, fd->on_done_closure, true, NULL);
+}
+
+static int fd_wrapped_fd(grpc_fd *fd) {
+  if (fd->released || fd->closed) {
+    return -1;
+  } else {
+    return fd->fd;
+  }
+}
+
+static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
+                      grpc_closure *on_done, int *release_fd,
+                      const char *reason) {
+  fd->on_done_closure = on_done;
+  fd->released = release_fd != NULL;
+  if (!fd->released) {
+    shutdown(fd->fd, SHUT_RDWR);
+  } else {
+    *release_fd = fd->fd;
+  }
+  gpr_mu_lock(&fd->mu);
+  REF_BY(fd, 1, reason); /* remove active status, but keep referenced */
+  if (!has_watchers(fd)) {
+    close_fd_locked(exec_ctx, fd);
+  } else {
+    wake_all_watchers_locked(fd);
+  }
+  gpr_mu_unlock(&fd->mu);
+  UNREF_BY(fd, 2, reason); /* drop the reference */
+}
+
+/* increment refcount by two to avoid changing the orphan bit */
+#ifdef GRPC_FD_REF_COUNT_DEBUG
+static void fd_ref(grpc_fd *fd, const char *reason, const char *file,
+                   int line) {
+  ref_by(fd, 2, reason, file, line);
+}
+
+static void fd_unref(grpc_fd *fd, const char *reason, const char *file,
+                     int line) {
+  unref_by(fd, 2, reason, file, line);
+}
+#else
+static void fd_ref(grpc_fd *fd) { ref_by(fd, 2); }
+
+static void fd_unref(grpc_fd *fd) { unref_by(fd, 2); }
+#endif
+
+static void notify_on_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
+                             grpc_closure **st, grpc_closure *closure) {
+  if (*st == CLOSURE_NOT_READY) {
+    /* not ready ==> switch to a waiting state by setting the closure */
+    *st = closure;
+  } else if (*st == CLOSURE_READY) {
+    /* already ready ==> queue the closure to run immediately */
+    *st = CLOSURE_NOT_READY;
+    grpc_exec_ctx_enqueue(exec_ctx, closure, !fd->shutdown, NULL);
+    maybe_wake_one_watcher_locked(fd);
+  } else {
+    /* upcallptr was set to a different closure.  This is an error! */
+    gpr_log(GPR_ERROR,
+            "User called a notify_on function with a previous callback still "
+            "pending");
+    abort();
+  }
+}
+
+/* returns 1 if state becomes not ready */
+static int set_ready_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
+                            grpc_closure **st) {
+  if (*st == CLOSURE_READY) {
+    /* duplicate ready ==> ignore */
+    return 0;
+  } else if (*st == CLOSURE_NOT_READY) {
+    /* not ready, and not waiting ==> flag ready */
+    *st = CLOSURE_READY;
+    return 0;
+  } else {
+    /* waiting ==> queue closure */
+    grpc_exec_ctx_enqueue(exec_ctx, *st, !fd->shutdown, NULL);
+    *st = CLOSURE_NOT_READY;
+    return 1;
+  }
+}
+
+static void set_ready(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure **st) {
+  /* only one set_ready can be active at once (but there may be a racing
+     notify_on) */
+  gpr_mu_lock(&fd->mu);
+  set_ready_locked(exec_ctx, fd, st);
+  gpr_mu_unlock(&fd->mu);
+}
+
+static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
+  gpr_mu_lock(&fd->mu);
+  GPR_ASSERT(!fd->shutdown);
+  fd->shutdown = 1;
+  set_ready_locked(exec_ctx, fd, &fd->read_closure);
+  set_ready_locked(exec_ctx, fd, &fd->write_closure);
+  gpr_mu_unlock(&fd->mu);
+}
+
+static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
+                              grpc_closure *closure) {
+  gpr_mu_lock(&fd->mu);
+  notify_on_locked(exec_ctx, fd, &fd->read_closure, closure);
+  gpr_mu_unlock(&fd->mu);
+}
+
+static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
+                               grpc_closure *closure) {
+  gpr_mu_lock(&fd->mu);
+  notify_on_locked(exec_ctx, fd, &fd->write_closure, closure);
+  gpr_mu_unlock(&fd->mu);
+}
+
+static uint32_t fd_begin_poll(grpc_fd *fd, grpc_pollset *pollset,
+                              grpc_pollset_worker *worker, uint32_t read_mask,
+                              uint32_t write_mask, grpc_fd_watcher *watcher) {
+  uint32_t mask = 0;
+  grpc_closure *cur;
+  int requested;
+  /* keep track of pollers that have requested our events, in case they change
+   */
+  GRPC_FD_REF(fd, "poll");
+
+  gpr_mu_lock(&fd->mu);
+
+  /* if we are shutdown, then don't add to the watcher set */
+  if (fd->shutdown) {
+    watcher->fd = NULL;
+    watcher->pollset = NULL;
+    watcher->worker = NULL;
+    gpr_mu_unlock(&fd->mu);
+    GRPC_FD_UNREF(fd, "poll");
+    return 0;
+  }
+
+  /* if there is nobody polling for read, but we need to, then start doing so */
+  cur = fd->read_closure;
+  requested = cur != CLOSURE_READY;
+  if (read_mask && fd->read_watcher == NULL && requested) {
+    fd->read_watcher = watcher;
+    mask |= read_mask;
+  }
+  /* if there is nobody polling for write, but we need to, then start doing so
+   */
+  cur = fd->write_closure;
+  requested = cur != CLOSURE_READY;
+  if (write_mask && fd->write_watcher == NULL && requested) {
+    fd->write_watcher = watcher;
+    mask |= write_mask;
+  }
+  /* if not polling, remember this watcher in case we need someone to later */
+  if (mask == 0 && worker != NULL) {
+    watcher->next = &fd->inactive_watcher_root;
+    watcher->prev = watcher->next->prev;
+    watcher->next->prev = watcher->prev->next = watcher;
+  }
+  watcher->pollset = pollset;
+  watcher->worker = worker;
+  watcher->fd = fd;
+  gpr_mu_unlock(&fd->mu);
+
+  return mask;
+}
+
+static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *watcher,
+                        int got_read, int got_write) {
+  int was_polling = 0;
+  int kick = 0;
+  grpc_fd *fd = watcher->fd;
+
+  if (fd == NULL) {
+    return;
+  }
+
+  gpr_mu_lock(&fd->mu);
+
+  if (watcher == fd->read_watcher) {
+    /* remove read watcher, kick if we still need a read */
+    was_polling = 1;
+    if (!got_read) {
+      kick = 1;
+    }
+    fd->read_watcher = NULL;
+  }
+  if (watcher == fd->write_watcher) {
+    /* remove write watcher, kick if we still need a write */
+    was_polling = 1;
+    if (!got_write) {
+      kick = 1;
+    }
+    fd->write_watcher = NULL;
+  }
+  if (!was_polling && watcher->worker != NULL) {
+    /* remove from inactive list */
+    watcher->next->prev = watcher->prev;
+    watcher->prev->next = watcher->next;
+  }
+  if (got_read) {
+    if (set_ready_locked(exec_ctx, fd, &fd->read_closure)) {
+      kick = 1;
+    }
+  }
+  if (got_write) {
+    if (set_ready_locked(exec_ctx, fd, &fd->write_closure)) {
+      kick = 1;
+    }
+  }
+  if (kick) {
+    maybe_wake_one_watcher_locked(fd);
+  }
+  if (fd_is_orphaned(fd) && !has_watchers(fd) && !fd->closed) {
+    close_fd_locked(exec_ctx, fd);
+  }
+  gpr_mu_unlock(&fd->mu);
+
+  GRPC_FD_UNREF(fd, "poll");
+}
+
+static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
+  set_ready(exec_ctx, fd, &fd->read_closure);
+}
+
+static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
+  set_ready(exec_ctx, fd, &fd->write_closure);
+}
+
+/*******************************************************************************
+ * pollset_posix.c
+ */
+
+GPR_TLS_DECL(g_current_thread_poller);
+GPR_TLS_DECL(g_current_thread_worker);
+
+/** Default poll() function - a pointer so that it can be overridden by some
+ *  tests */
+grpc_poll_function_type grpc_poll_function = poll;
+
+/** The alarm system needs to be able to wakeup 'some poller' sometimes
+ *  (specifically when a new alarm needs to be triggered earlier than the next
+ *  alarm 'epoch').
+ *  This wakeup_fd gives us something to alert on when such a case occurs. */
+grpc_wakeup_fd grpc_global_wakeup_fd;
+
+static void remove_worker(grpc_pollset *p, grpc_pollset_worker *worker) {
+  worker->prev->next = worker->next;
+  worker->next->prev = worker->prev;
+}
+
+static int pollset_has_workers(grpc_pollset *p) {
+  return p->root_worker.next != &p->root_worker;
+}
+
+static grpc_pollset_worker *pop_front_worker(grpc_pollset *p) {
+  if (pollset_has_workers(p)) {
+    grpc_pollset_worker *w = p->root_worker.next;
+    remove_worker(p, w);
+    return w;
+  } else {
+    return NULL;
+  }
+}
+
+static void push_back_worker(grpc_pollset *p, grpc_pollset_worker *worker) {
+  worker->next = &p->root_worker;
+  worker->prev = worker->next->prev;
+  worker->prev->next = worker->next->prev = worker;
+}
+
+static void push_front_worker(grpc_pollset *p, grpc_pollset_worker *worker) {
+  worker->prev = &p->root_worker;
+  worker->next = worker->prev->next;
+  worker->prev->next = worker->next->prev = worker;
+}
+
+static void pollset_kick_ext(grpc_pollset *p,
+                             grpc_pollset_worker *specific_worker,
+                             uint32_t flags) {
+  GPR_TIMER_BEGIN("pollset_kick_ext", 0);
+
+  /* pollset->mu already held */
+  if (specific_worker != NULL) {
+    if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) {
+      GPR_TIMER_BEGIN("pollset_kick_ext.broadcast", 0);
+      GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
+      for (specific_worker = p->root_worker.next;
+           specific_worker != &p->root_worker;
+           specific_worker = specific_worker->next) {
+        grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd);
+      }
+      p->kicked_without_pollers = 1;
+      GPR_TIMER_END("pollset_kick_ext.broadcast", 0);
+    } else if (gpr_tls_get(&g_current_thread_worker) !=
+               (intptr_t)specific_worker) {
+      GPR_TIMER_MARK("different_thread_worker", 0);
+      if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) {
+        specific_worker->reevaluate_polling_on_wakeup = 1;
+      }
+      specific_worker->kicked_specifically = 1;
+      grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd);
+    } else if ((flags & GRPC_POLLSET_CAN_KICK_SELF) != 0) {
+      GPR_TIMER_MARK("kick_yoself", 0);
+      if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) {
+        specific_worker->reevaluate_polling_on_wakeup = 1;
+      }
+      specific_worker->kicked_specifically = 1;
+      grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd);
+    }
+  } else if (gpr_tls_get(&g_current_thread_poller) != (intptr_t)p) {
+    GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
+    GPR_TIMER_MARK("kick_anonymous", 0);
+    specific_worker = pop_front_worker(p);
+    if (specific_worker != NULL) {
+      if (gpr_tls_get(&g_current_thread_worker) == (intptr_t)specific_worker) {
+        GPR_TIMER_MARK("kick_anonymous_not_self", 0);
+        push_back_worker(p, specific_worker);
+        specific_worker = pop_front_worker(p);
+        if ((flags & GRPC_POLLSET_CAN_KICK_SELF) == 0 &&
+            gpr_tls_get(&g_current_thread_worker) ==
+                (intptr_t)specific_worker) {
+          push_back_worker(p, specific_worker);
+          specific_worker = NULL;
+        }
+      }
+      if (specific_worker != NULL) {
+        GPR_TIMER_MARK("finally_kick", 0);
+        push_back_worker(p, specific_worker);
+        grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd);
+      }
+    } else {
+      GPR_TIMER_MARK("kicked_no_pollers", 0);
+      p->kicked_without_pollers = 1;
+    }
+  }
+
+  GPR_TIMER_END("pollset_kick_ext", 0);
+}
+
+static void pollset_kick(grpc_pollset *p,
+                         grpc_pollset_worker *specific_worker) {
+  pollset_kick_ext(p, specific_worker, 0);
+}
+
+/* global state management */
+
+static void pollset_global_init(void) {
+  gpr_tls_init(&g_current_thread_poller);
+  gpr_tls_init(&g_current_thread_worker);
+  grpc_wakeup_fd_global_init();
+  grpc_wakeup_fd_init(&grpc_global_wakeup_fd);
+}
+
+static void pollset_global_shutdown(void) {
+  grpc_wakeup_fd_destroy(&grpc_global_wakeup_fd);
+  gpr_tls_destroy(&g_current_thread_poller);
+  gpr_tls_destroy(&g_current_thread_worker);
+  grpc_wakeup_fd_global_destroy();
+}
+
+static void kick_poller(void) { grpc_wakeup_fd_wakeup(&grpc_global_wakeup_fd); }
+
+/* main interface */
+
+static void become_basic_pollset(grpc_pollset *pollset, grpc_fd *fd_or_null);
+
+static void pollset_init(grpc_pollset *pollset, gpr_mu *mu) {
+  pollset->mu = mu;
+  pollset->root_worker.next = pollset->root_worker.prev = &pollset->root_worker;
+  pollset->in_flight_cbs = 0;
+  pollset->shutting_down = 0;
+  pollset->called_shutdown = 0;
+  pollset->kicked_without_pollers = 0;
+  pollset->idle_jobs.head = pollset->idle_jobs.tail = NULL;
+  pollset->local_wakeup_cache = NULL;
+  pollset->kicked_without_pollers = 0;
+  become_basic_pollset(pollset, NULL);
+}
+
+static void pollset_destroy(grpc_pollset *pollset) {
+  GPR_ASSERT(pollset->in_flight_cbs == 0);
+  GPR_ASSERT(!pollset_has_workers(pollset));
+  GPR_ASSERT(pollset->idle_jobs.head == pollset->idle_jobs.tail);
+  pollset->vtable->destroy(pollset);
+  while (pollset->local_wakeup_cache) {
+    grpc_cached_wakeup_fd *next = pollset->local_wakeup_cache->next;
+    grpc_wakeup_fd_destroy(&pollset->local_wakeup_cache->fd);
+    gpr_free(pollset->local_wakeup_cache);
+    pollset->local_wakeup_cache = next;
+  }
+}
+
+static void pollset_reset(grpc_pollset *pollset) {
+  GPR_ASSERT(pollset->shutting_down);
+  GPR_ASSERT(pollset->in_flight_cbs == 0);
+  GPR_ASSERT(!pollset_has_workers(pollset));
+  GPR_ASSERT(pollset->idle_jobs.head == pollset->idle_jobs.tail);
+  pollset->vtable->destroy(pollset);
+  pollset->shutting_down = 0;
+  pollset->called_shutdown = 0;
+  pollset->kicked_without_pollers = 0;
+  become_basic_pollset(pollset, NULL);
+}
+
+static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                           grpc_fd *fd) {
+  gpr_mu_lock(pollset->mu);
+  pollset->vtable->add_fd(exec_ctx, pollset, fd, 1);
+/* the following (enabled only in debug) will reacquire and then release
+   our lock - meaning that if the unlocking flag passed to add_fd above is
+   not respected, the code will deadlock (in a way that we have a chance of
+   debugging) */
+#ifndef NDEBUG
+  gpr_mu_lock(pollset->mu);
+  gpr_mu_unlock(pollset->mu);
+#endif
+}
+
+static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
+  GPR_ASSERT(grpc_closure_list_empty(pollset->idle_jobs));
+  pollset->vtable->finish_shutdown(pollset);
+  grpc_exec_ctx_enqueue(exec_ctx, pollset->shutdown_done, true, NULL);
+}
+
+static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                         grpc_pollset_worker **worker_hdl, gpr_timespec now,
+                         gpr_timespec deadline) {
+  grpc_pollset_worker worker;
+  *worker_hdl = &worker;
+
+  /* pollset->mu already held */
+  int added_worker = 0;
+  int locked = 1;
+  int queued_work = 0;
+  int keep_polling = 0;
+  GPR_TIMER_BEGIN("pollset_work", 0);
+  /* this must happen before we (potentially) drop pollset->mu */
+  worker.next = worker.prev = NULL;
+  worker.reevaluate_polling_on_wakeup = 0;
+  if (pollset->local_wakeup_cache != NULL) {
+    worker.wakeup_fd = pollset->local_wakeup_cache;
+    pollset->local_wakeup_cache = worker.wakeup_fd->next;
+  } else {
+    worker.wakeup_fd = gpr_malloc(sizeof(*worker.wakeup_fd));
+    grpc_wakeup_fd_init(&worker.wakeup_fd->fd);
+  }
+  worker.kicked_specifically = 0;
+  /* If there's work waiting for the pollset to be idle, and the
+     pollset is idle, then do that work */
+  if (!pollset_has_workers(pollset) &&
+      !grpc_closure_list_empty(pollset->idle_jobs)) {
+    GPR_TIMER_MARK("pollset_work.idle_jobs", 0);
+    grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs, NULL);
+    goto done;
+  }
+  /* If we're shutting down then we don't execute any extended work */
+  if (pollset->shutting_down) {
+    GPR_TIMER_MARK("pollset_work.shutting_down", 0);
+    goto done;
+  }
+  /* Give do_promote priority so we don't starve it out */
+  if (pollset->in_flight_cbs) {
+    GPR_TIMER_MARK("pollset_work.in_flight_cbs", 0);
+    gpr_mu_unlock(pollset->mu);
+    locked = 0;
+    goto done;
+  }
+  /* Start polling, and keep doing so while we're being asked to
+     re-evaluate our pollers (this allows poll() based pollers to
+     ensure they don't miss wakeups) */
+  keep_polling = 1;
+  while (keep_polling) {
+    keep_polling = 0;
+    if (!pollset->kicked_without_pollers) {
+      if (!added_worker) {
+        push_front_worker(pollset, &worker);
+        added_worker = 1;
+        gpr_tls_set(&g_current_thread_worker, (intptr_t)&worker);
+      }
+      gpr_tls_set(&g_current_thread_poller, (intptr_t)pollset);
+      GPR_TIMER_BEGIN("maybe_work_and_unlock", 0);
+      pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, &worker,
+                                             deadline, now);
+      GPR_TIMER_END("maybe_work_and_unlock", 0);
+      locked = 0;
+      gpr_tls_set(&g_current_thread_poller, 0);
+    } else {
+      GPR_TIMER_MARK("pollset_work.kicked_without_pollers", 0);
+      pollset->kicked_without_pollers = 0;
+    }
+  /* Finished execution - start cleaning up.
+     Note that we may arrive here from outside the enclosing while() loop.
+     In that case we won't loop though as we haven't added worker to the
+     worker list, which means nobody could ask us to re-evaluate polling). */
+  done:
+    if (!locked) {
+      queued_work |= grpc_exec_ctx_flush(exec_ctx);
+      gpr_mu_lock(pollset->mu);
+      locked = 1;
+    }
+    /* If we're forced to re-evaluate polling (via pollset_kick with
+       GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) then we land here and force
+       a loop */
+    if (worker.reevaluate_polling_on_wakeup) {
+      worker.reevaluate_polling_on_wakeup = 0;
+      pollset->kicked_without_pollers = 0;
+      if (queued_work || worker.kicked_specifically) {
+        /* If there's queued work on the list, then set the deadline to be
+           immediate so we get back out of the polling loop quickly */
+        deadline = gpr_inf_past(GPR_CLOCK_MONOTONIC);
+      }
+      keep_polling = 1;
+    }
+  }
+  if (added_worker) {
+    remove_worker(pollset, &worker);
+    gpr_tls_set(&g_current_thread_worker, 0);
+  }
+  /* release wakeup fd to the local pool */
+  worker.wakeup_fd->next = pollset->local_wakeup_cache;
+  pollset->local_wakeup_cache = worker.wakeup_fd;
+  /* check shutdown conditions */
+  if (pollset->shutting_down) {
+    if (pollset_has_workers(pollset)) {
+      pollset_kick(pollset, NULL);
+    } else if (!pollset->called_shutdown && pollset->in_flight_cbs == 0) {
+      pollset->called_shutdown = 1;
+      gpr_mu_unlock(pollset->mu);
+      finish_shutdown(exec_ctx, pollset);
+      grpc_exec_ctx_flush(exec_ctx);
+      /* Continuing to access pollset here is safe -- it is the caller's
+       * responsibility to not destroy when it has outstanding calls to
+       * pollset_work.
+       * TODO(dklempner): Can we refactor the shutdown logic to avoid this? */
+      gpr_mu_lock(pollset->mu);
+    } else if (!grpc_closure_list_empty(pollset->idle_jobs)) {
+      grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs, NULL);
+      gpr_mu_unlock(pollset->mu);
+      grpc_exec_ctx_flush(exec_ctx);
+      gpr_mu_lock(pollset->mu);
+    }
+  }
+  *worker_hdl = NULL;
+  GPR_TIMER_END("pollset_work", 0);
+}
+
+static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                             grpc_closure *closure) {
+  GPR_ASSERT(!pollset->shutting_down);
+  pollset->shutting_down = 1;
+  pollset->shutdown_done = closure;
+  pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
+  if (!pollset_has_workers(pollset)) {
+    grpc_exec_ctx_enqueue_list(exec_ctx, &pollset->idle_jobs, NULL);
+  }
+  if (!pollset->called_shutdown && pollset->in_flight_cbs == 0 &&
+      !pollset_has_workers(pollset)) {
+    pollset->called_shutdown = 1;
+    finish_shutdown(exec_ctx, pollset);
+  }
+}
+
+static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
+                                           gpr_timespec now) {
+  gpr_timespec timeout;
+  static const int64_t max_spin_polling_us = 10;
+  if (gpr_time_cmp(deadline, gpr_inf_future(deadline.clock_type)) == 0) {
+    return -1;
+  }
+  if (gpr_time_cmp(deadline, gpr_time_add(now, gpr_time_from_micros(
+                                                   max_spin_polling_us,
+                                                   GPR_TIMESPAN))) <= 0) {
+    return 0;
+  }
+  timeout = gpr_time_sub(deadline, now);
+  return gpr_time_to_millis(gpr_time_add(
+      timeout, gpr_time_from_nanos(GPR_NS_PER_MS - 1, GPR_TIMESPAN)));
+}
+
+/*
+ * basic_pollset - a vtable that provides polling for zero or one file
+ *                 descriptor via poll()
+ */
+
+typedef struct grpc_unary_promote_args {
+  const grpc_pollset_vtable *original_vtable;
+  grpc_pollset *pollset;
+  grpc_fd *fd;
+  grpc_closure promotion_closure;
+} grpc_unary_promote_args;
+
+static void basic_do_promote(grpc_exec_ctx *exec_ctx, void *args,
+                             bool success) {
+  grpc_unary_promote_args *up_args = args;
+  const grpc_pollset_vtable *original_vtable = up_args->original_vtable;
+  grpc_pollset *pollset = up_args->pollset;
+  grpc_fd *fd = up_args->fd;
+
+  /*
+   * This is quite tricky. There are a number of cases to keep in mind here:
+   * 1. fd may have been orphaned
+   * 2. The pollset may no longer be a unary poller (and we can't let case #1
+   * leak to other pollset types!)
+   * 3. pollset's fd (which may have changed) may have been orphaned
+   * 4. The pollset may be shutting down.
+   */
+
+  gpr_mu_lock(pollset->mu);
+  /* First we need to ensure that nobody is polling concurrently */
+  GPR_ASSERT(!pollset_has_workers(pollset));
+
+  gpr_free(up_args);
+  /* At this point the pollset may no longer be a unary poller. In that case
+   * we should just call the right add function and be done. */
+  /* TODO(klempner): If we're not careful this could cause infinite recursion.
+   * That's not a problem for now because empty_pollset has a trivial poller
+   * and we don't have any mechanism to unbecome multipoller. */
+  pollset->in_flight_cbs--;
+  if (pollset->shutting_down) {
+    /* We don't care about this pollset anymore. */
+    if (pollset->in_flight_cbs == 0 && !pollset->called_shutdown) {
+      pollset->called_shutdown = 1;
+      finish_shutdown(exec_ctx, pollset);
+    }
+  } else if (fd_is_orphaned(fd)) {
+    /* Don't try to add it to anything, we'll drop our ref on it below */
+  } else if (pollset->vtable != original_vtable) {
+    pollset->vtable->add_fd(exec_ctx, pollset, fd, 0);
+  } else if (fd != pollset->data.ptr) {
+    grpc_fd *fds[2];
+    fds[0] = pollset->data.ptr;
+    fds[1] = fd;
+
+    if (fds[0] && !fd_is_orphaned(fds[0])) {
+      platform_become_multipoller(exec_ctx, pollset, fds, GPR_ARRAY_SIZE(fds));
+      GRPC_FD_UNREF(fds[0], "basicpoll");
+    } else {
+      /* old fd is orphaned and we haven't cleaned it up until now, so remain a
+       * unary poller */
+      /* Note that it is possible that fds[1] is also orphaned at this point.
+       * That's okay, we'll correct it at the next add or poll. */
+      if (fds[0]) GRPC_FD_UNREF(fds[0], "basicpoll");
+      pollset->data.ptr = fd;
+      GRPC_FD_REF(fd, "basicpoll");
+    }
+  }
+
+  gpr_mu_unlock(pollset->mu);
+
+  /* Matching ref in basic_pollset_add_fd */
+  GRPC_FD_UNREF(fd, "basicpoll_add");
+}
+
+static void basic_pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                                 grpc_fd *fd, int and_unlock_pollset) {
+  grpc_unary_promote_args *up_args;
+  GPR_ASSERT(fd);
+  if (fd == pollset->data.ptr) goto exit;
+
+  if (!pollset_has_workers(pollset)) {
+    /* Fast path -- no in flight cbs */
+    /* TODO(klempner): Comment this out and fix any test failures or establish
+     * they are due to timing issues */
+    grpc_fd *fds[2];
+    fds[0] = pollset->data.ptr;
+    fds[1] = fd;
+
+    if (fds[0] == NULL) {
+      pollset->data.ptr = fd;
+      GRPC_FD_REF(fd, "basicpoll");
+    } else if (!fd_is_orphaned(fds[0])) {
+      platform_become_multipoller(exec_ctx, pollset, fds, GPR_ARRAY_SIZE(fds));
+      GRPC_FD_UNREF(fds[0], "basicpoll");
+    } else {
+      /* old fd is orphaned and we haven't cleaned it up until now, so remain a
+       * unary poller */
+      GRPC_FD_UNREF(fds[0], "basicpoll");
+      pollset->data.ptr = fd;
+      GRPC_FD_REF(fd, "basicpoll");
+    }
+    goto exit;
+  }
+
+  /* Now we need to promote. This needs to happen when we're not polling. Since
+   * this may be called from poll, the wait needs to happen asynchronously. */
+  GRPC_FD_REF(fd, "basicpoll_add");
+  pollset->in_flight_cbs++;
+  up_args = gpr_malloc(sizeof(*up_args));
+  up_args->fd = fd;
+  up_args->original_vtable = pollset->vtable;
+  up_args->pollset = pollset;
+  up_args->promotion_closure.cb = basic_do_promote;
+  up_args->promotion_closure.cb_arg = up_args;
+
+  grpc_closure_list_add(&pollset->idle_jobs, &up_args->promotion_closure, 1);
+  pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
+
+exit:
+  if (and_unlock_pollset) {
+    gpr_mu_unlock(pollset->mu);
+  }
+}
+
+static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx,
+                                                grpc_pollset *pollset,
+                                                grpc_pollset_worker *worker,
+                                                gpr_timespec deadline,
+                                                gpr_timespec now) {
+#define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
+#define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
+
+  struct pollfd pfd[3];
+  grpc_fd *fd;
+  grpc_fd_watcher fd_watcher;
+  int timeout;
+  int r;
+  nfds_t nfds;
+
+  fd = pollset->data.ptr;
+  if (fd && fd_is_orphaned(fd)) {
+    GRPC_FD_UNREF(fd, "basicpoll");
+    fd = pollset->data.ptr = NULL;
+  }
+  timeout = poll_deadline_to_millis_timeout(deadline, now);
+  pfd[0].fd = GRPC_WAKEUP_FD_GET_READ_FD(&grpc_global_wakeup_fd);
+  pfd[0].events = POLLIN;
+  pfd[0].revents = 0;
+  pfd[1].fd = GRPC_WAKEUP_FD_GET_READ_FD(&worker->wakeup_fd->fd);
+  pfd[1].events = POLLIN;
+  pfd[1].revents = 0;
+  nfds = 2;
+  if (fd) {
+    pfd[2].fd = fd->fd;
+    pfd[2].revents = 0;
+    GRPC_FD_REF(fd, "basicpoll_begin");
+    gpr_mu_unlock(pollset->mu);
+    pfd[2].events =
+        (short)fd_begin_poll(fd, pollset, worker, POLLIN, POLLOUT, &fd_watcher);
+    if (pfd[2].events != 0) {
+      nfds++;
+    }
+  } else {
+    gpr_mu_unlock(pollset->mu);
+  }
+
+  /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
+     even going into the blocking annotation if possible */
+  /* poll fd count (argument 2) is shortened by one if we have no events
+     to poll on - such that it only includes the kicker */
+  GPR_TIMER_BEGIN("poll", 0);
+  GRPC_SCHEDULING_START_BLOCKING_REGION;
+  r = grpc_poll_function(pfd, nfds, timeout);
+  GRPC_SCHEDULING_END_BLOCKING_REGION;
+  GPR_TIMER_END("poll", 0);
+
+  if (r < 0) {
+    if (errno != EINTR) {
+      gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno));
+    }
+    if (fd) {
+      fd_end_poll(exec_ctx, &fd_watcher, 0, 0);
+    }
+  } else if (r == 0) {
+    if (fd) {
+      fd_end_poll(exec_ctx, &fd_watcher, 0, 0);
+    }
+  } else {
+    if (pfd[0].revents & POLLIN_CHECK) {
+      grpc_wakeup_fd_consume_wakeup(&grpc_global_wakeup_fd);
+    }
+    if (pfd[1].revents & POLLIN_CHECK) {
+      grpc_wakeup_fd_consume_wakeup(&worker->wakeup_fd->fd);
+    }
+    if (nfds > 2) {
+      fd_end_poll(exec_ctx, &fd_watcher, pfd[2].revents & POLLIN_CHECK,
+                  pfd[2].revents & POLLOUT_CHECK);
+    } else if (fd) {
+      fd_end_poll(exec_ctx, &fd_watcher, 0, 0);
+    }
+  }
+
+  if (fd) {
+    GRPC_FD_UNREF(fd, "basicpoll_begin");
+  }
+}
+
+static void basic_pollset_destroy(grpc_pollset *pollset) {
+  if (pollset->data.ptr != NULL) {
+    GRPC_FD_UNREF(pollset->data.ptr, "basicpoll");
+    pollset->data.ptr = NULL;
+  }
+}
+
+static const grpc_pollset_vtable basic_pollset = {
+    basic_pollset_add_fd, basic_pollset_maybe_work_and_unlock,
+    basic_pollset_destroy, basic_pollset_destroy};
+
+static void become_basic_pollset(grpc_pollset *pollset, grpc_fd *fd_or_null) {
+  pollset->vtable = &basic_pollset;
+  pollset->data.ptr = fd_or_null;
+  if (fd_or_null != NULL) {
+    GRPC_FD_REF(fd_or_null, "basicpoll");
+  }
+}
+
+/*******************************************************************************
+ * pollset_multipoller_with_poll_posix.c
+ */
+
+typedef struct {
+  /* all polled fds */
+  size_t fd_count;
+  size_t fd_capacity;
+  grpc_fd **fds;
+  /* fds that have been removed from the pollset explicitly */
+  size_t del_count;
+  size_t del_capacity;
+  grpc_fd **dels;
+} poll_hdr;
+
+static void multipoll_with_poll_pollset_add_fd(grpc_exec_ctx *exec_ctx,
+                                               grpc_pollset *pollset,
+                                               grpc_fd *fd,
+                                               int and_unlock_pollset) {
+  size_t i;
+  poll_hdr *h = pollset->data.ptr;
+  /* TODO(ctiller): this is O(num_fds^2); maybe switch to a hash set here */
+  for (i = 0; i < h->fd_count; i++) {
+    if (h->fds[i] == fd) goto exit;
+  }
+  if (h->fd_count == h->fd_capacity) {
+    h->fd_capacity = GPR_MAX(h->fd_capacity + 8, h->fd_count * 3 / 2);
+    h->fds = gpr_realloc(h->fds, sizeof(grpc_fd *) * h->fd_capacity);
+  }
+  h->fds[h->fd_count++] = fd;
+  GRPC_FD_REF(fd, "multipoller");
+exit:
+  if (and_unlock_pollset) {
+    gpr_mu_unlock(pollset->mu);
+  }
+}
+
+static void multipoll_with_poll_pollset_maybe_work_and_unlock(
+    grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, grpc_pollset_worker *worker,
+    gpr_timespec deadline, gpr_timespec now) {
+#define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
+#define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
+
+  int timeout;
+  int r;
+  size_t i, j, fd_count;
+  nfds_t pfd_count;
+  poll_hdr *h;
+  /* TODO(ctiller): inline some elements to avoid an allocation */
+  grpc_fd_watcher *watchers;
+  struct pollfd *pfds;
+
+  h = pollset->data.ptr;
+  timeout = poll_deadline_to_millis_timeout(deadline, now);
+  /* TODO(ctiller): perform just one malloc here if we exceed the inline case */
+  pfds = gpr_malloc(sizeof(*pfds) * (h->fd_count + 2));
+  watchers = gpr_malloc(sizeof(*watchers) * (h->fd_count + 2));
+  fd_count = 0;
+  pfd_count = 2;
+  pfds[0].fd = GRPC_WAKEUP_FD_GET_READ_FD(&grpc_global_wakeup_fd);
+  pfds[0].events = POLLIN;
+  pfds[0].revents = 0;
+  pfds[1].fd = GRPC_WAKEUP_FD_GET_READ_FD(&worker->wakeup_fd->fd);
+  pfds[1].events = POLLIN;
+  pfds[1].revents = 0;
+  for (i = 0; i < h->fd_count; i++) {
+    int remove = fd_is_orphaned(h->fds[i]);
+    for (j = 0; !remove && j < h->del_count; j++) {
+      if (h->fds[i] == h->dels[j]) remove = 1;
+    }
+    if (remove) {
+      GRPC_FD_UNREF(h->fds[i], "multipoller");
+    } else {
+      h->fds[fd_count++] = h->fds[i];
+      watchers[pfd_count].fd = h->fds[i];
+      pfds[pfd_count].fd = h->fds[i]->fd;
+      pfds[pfd_count].revents = 0;
+      pfd_count++;
+    }
+  }
+  for (j = 0; j < h->del_count; j++) {
+    GRPC_FD_UNREF(h->dels[j], "multipoller_del");
+  }
+  h->del_count = 0;
+  h->fd_count = fd_count;
+  gpr_mu_unlock(pollset->mu);
+
+  for (i = 2; i < pfd_count; i++) {
+    pfds[i].events = (short)fd_begin_poll(watchers[i].fd, pollset, worker,
+                                          POLLIN, POLLOUT, &watchers[i]);
+  }
+
+  /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
+     even going into the blocking annotation if possible */
+  GRPC_SCHEDULING_START_BLOCKING_REGION;
+  r = grpc_poll_function(pfds, pfd_count, timeout);
+  GRPC_SCHEDULING_END_BLOCKING_REGION;
+
+  if (r < 0) {
+    if (errno != EINTR) {
+      gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno));
+    }
+    for (i = 2; i < pfd_count; i++) {
+      fd_end_poll(exec_ctx, &watchers[i], 0, 0);
+    }
+  } else if (r == 0) {
+    for (i = 2; i < pfd_count; i++) {
+      fd_end_poll(exec_ctx, &watchers[i], 0, 0);
+    }
+  } else {
+    if (pfds[0].revents & POLLIN_CHECK) {
+      grpc_wakeup_fd_consume_wakeup(&grpc_global_wakeup_fd);
+    }
+    if (pfds[1].revents & POLLIN_CHECK) {
+      grpc_wakeup_fd_consume_wakeup(&worker->wakeup_fd->fd);
+    }
+    for (i = 2; i < pfd_count; i++) {
+      if (watchers[i].fd == NULL) {
+        fd_end_poll(exec_ctx, &watchers[i], 0, 0);
+        continue;
+      }
+      fd_end_poll(exec_ctx, &watchers[i], pfds[i].revents & POLLIN_CHECK,
+                  pfds[i].revents & POLLOUT_CHECK);
+    }
+  }
+
+  gpr_free(pfds);
+  gpr_free(watchers);
+}
+
+static void multipoll_with_poll_pollset_finish_shutdown(grpc_pollset *pollset) {
+  size_t i;
+  poll_hdr *h = pollset->data.ptr;
+  for (i = 0; i < h->fd_count; i++) {
+    GRPC_FD_UNREF(h->fds[i], "multipoller");
+  }
+  for (i = 0; i < h->del_count; i++) {
+    GRPC_FD_UNREF(h->dels[i], "multipoller_del");
+  }
+  h->fd_count = 0;
+  h->del_count = 0;
+}
+
+static void multipoll_with_poll_pollset_destroy(grpc_pollset *pollset) {
+  poll_hdr *h = pollset->data.ptr;
+  multipoll_with_poll_pollset_finish_shutdown(pollset);
+  gpr_free(h->fds);
+  gpr_free(h->dels);
+  gpr_free(h);
+}
+
+static const grpc_pollset_vtable multipoll_with_poll_pollset = {
+    multipoll_with_poll_pollset_add_fd,
+    multipoll_with_poll_pollset_maybe_work_and_unlock,
+    multipoll_with_poll_pollset_finish_shutdown,
+    multipoll_with_poll_pollset_destroy};
+
+static void poll_become_multipoller(grpc_exec_ctx *exec_ctx,
+                                    grpc_pollset *pollset, grpc_fd **fds,
+                                    size_t nfds) {
+  size_t i;
+  poll_hdr *h = gpr_malloc(sizeof(poll_hdr));
+  pollset->vtable = &multipoll_with_poll_pollset;
+  pollset->data.ptr = h;
+  h->fd_count = nfds;
+  h->fd_capacity = nfds;
+  h->fds = gpr_malloc(nfds * sizeof(grpc_fd *));
+  h->del_count = 0;
+  h->del_capacity = 0;
+  h->dels = NULL;
+  for (i = 0; i < nfds; i++) {
+    h->fds[i] = fds[i];
+    GRPC_FD_REF(fds[i], "multipoller");
+  }
+}
+
+/*******************************************************************************
+ * pollset_set_posix.c
+ */
+
+static grpc_pollset_set *pollset_set_create(void) {
+  grpc_pollset_set *pollset_set = gpr_malloc(sizeof(*pollset_set));
+  memset(pollset_set, 0, sizeof(*pollset_set));
+  gpr_mu_init(&pollset_set->mu);
+  return pollset_set;
+}
+
+static void pollset_set_destroy(grpc_pollset_set *pollset_set) {
+  size_t i;
+  gpr_mu_destroy(&pollset_set->mu);
+  for (i = 0; i < pollset_set->fd_count; i++) {
+    GRPC_FD_UNREF(pollset_set->fds[i], "pollset_set");
+  }
+  gpr_free(pollset_set->pollsets);
+  gpr_free(pollset_set->pollset_sets);
+  gpr_free(pollset_set->fds);
+  gpr_free(pollset_set);
+}
+
+static void pollset_set_add_pollset(grpc_exec_ctx *exec_ctx,
+                                    grpc_pollset_set *pollset_set,
+                                    grpc_pollset *pollset) {
+  size_t i, j;
+  gpr_mu_lock(&pollset_set->mu);
+  if (pollset_set->pollset_count == pollset_set->pollset_capacity) {
+    pollset_set->pollset_capacity =
+        GPR_MAX(8, 2 * pollset_set->pollset_capacity);
+    pollset_set->pollsets =
+        gpr_realloc(pollset_set->pollsets, pollset_set->pollset_capacity *
+                                               sizeof(*pollset_set->pollsets));
+  }
+  pollset_set->pollsets[pollset_set->pollset_count++] = pollset;
+  for (i = 0, j = 0; i < pollset_set->fd_count; i++) {
+    if (fd_is_orphaned(pollset_set->fds[i])) {
+      GRPC_FD_UNREF(pollset_set->fds[i], "pollset_set");
+    } else {
+      pollset_add_fd(exec_ctx, pollset, pollset_set->fds[i]);
+      pollset_set->fds[j++] = pollset_set->fds[i];
+    }
+  }
+  pollset_set->fd_count = j;
+  gpr_mu_unlock(&pollset_set->mu);
+}
+
+static void pollset_set_del_pollset(grpc_exec_ctx *exec_ctx,
+                                    grpc_pollset_set *pollset_set,
+                                    grpc_pollset *pollset) {
+  size_t i;
+  gpr_mu_lock(&pollset_set->mu);
+  for (i = 0; i < pollset_set->pollset_count; i++) {
+    if (pollset_set->pollsets[i] == pollset) {
+      pollset_set->pollset_count--;
+      GPR_SWAP(grpc_pollset *, pollset_set->pollsets[i],
+               pollset_set->pollsets[pollset_set->pollset_count]);
+      break;
+    }
+  }
+  gpr_mu_unlock(&pollset_set->mu);
+}
+
+static void pollset_set_add_pollset_set(grpc_exec_ctx *exec_ctx,
+                                        grpc_pollset_set *bag,
+                                        grpc_pollset_set *item) {
+  size_t i, j;
+  gpr_mu_lock(&bag->mu);
+  if (bag->pollset_set_count == bag->pollset_set_capacity) {
+    bag->pollset_set_capacity = GPR_MAX(8, 2 * bag->pollset_set_capacity);
+    bag->pollset_sets =
+        gpr_realloc(bag->pollset_sets,
+                    bag->pollset_set_capacity * sizeof(*bag->pollset_sets));
+  }
+  bag->pollset_sets[bag->pollset_set_count++] = item;
+  for (i = 0, j = 0; i < bag->fd_count; i++) {
+    if (fd_is_orphaned(bag->fds[i])) {
+      GRPC_FD_UNREF(bag->fds[i], "pollset_set");
+    } else {
+      pollset_set_add_fd(exec_ctx, item, bag->fds[i]);
+      bag->fds[j++] = bag->fds[i];
+    }
+  }
+  bag->fd_count = j;
+  gpr_mu_unlock(&bag->mu);
+}
+
+static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx,
+                                        grpc_pollset_set *bag,
+                                        grpc_pollset_set *item) {
+  size_t i;
+  gpr_mu_lock(&bag->mu);
+  for (i = 0; i < bag->pollset_set_count; i++) {
+    if (bag->pollset_sets[i] == item) {
+      bag->pollset_set_count--;
+      GPR_SWAP(grpc_pollset_set *, bag->pollset_sets[i],
+               bag->pollset_sets[bag->pollset_set_count]);
+      break;
+    }
+  }
+  gpr_mu_unlock(&bag->mu);
+}
+
+static void pollset_set_add_fd(grpc_exec_ctx *exec_ctx,
+                               grpc_pollset_set *pollset_set, grpc_fd *fd) {
+  size_t i;
+  gpr_mu_lock(&pollset_set->mu);
+  if (pollset_set->fd_count == pollset_set->fd_capacity) {
+    pollset_set->fd_capacity = GPR_MAX(8, 2 * pollset_set->fd_capacity);
+    pollset_set->fds = gpr_realloc(
+        pollset_set->fds, pollset_set->fd_capacity * sizeof(*pollset_set->fds));
+  }
+  GRPC_FD_REF(fd, "pollset_set");
+  pollset_set->fds[pollset_set->fd_count++] = fd;
+  for (i = 0; i < pollset_set->pollset_count; i++) {
+    pollset_add_fd(exec_ctx, pollset_set->pollsets[i], fd);
+  }
+  for (i = 0; i < pollset_set->pollset_set_count; i++) {
+    pollset_set_add_fd(exec_ctx, pollset_set->pollset_sets[i], fd);
+  }
+  gpr_mu_unlock(&pollset_set->mu);
+}
+
+static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx,
+                               grpc_pollset_set *pollset_set, grpc_fd *fd) {
+  size_t i;
+  gpr_mu_lock(&pollset_set->mu);
+  for (i = 0; i < pollset_set->fd_count; i++) {
+    if (pollset_set->fds[i] == fd) {
+      pollset_set->fd_count--;
+      GPR_SWAP(grpc_fd *, pollset_set->fds[i],
+               pollset_set->fds[pollset_set->fd_count]);
+      GRPC_FD_UNREF(fd, "pollset_set");
+      break;
+    }
+  }
+  for (i = 0; i < pollset_set->pollset_set_count; i++) {
+    pollset_set_del_fd(exec_ctx, pollset_set->pollset_sets[i], fd);
+  }
+  gpr_mu_unlock(&pollset_set->mu);
+}
+
+/*******************************************************************************
+ * event engine binding
+ */
+
+static void shutdown_engine(void) {
+  fd_global_shutdown();
+  pollset_global_shutdown();
+}
+
+static const grpc_event_engine_vtable vtable = {
+    .pollset_size = sizeof(grpc_pollset),
+
+    .fd_create = fd_create,
+    .fd_wrapped_fd = fd_wrapped_fd,
+    .fd_orphan = fd_orphan,
+    .fd_shutdown = fd_shutdown,
+    .fd_notify_on_read = fd_notify_on_read,
+    .fd_notify_on_write = fd_notify_on_write,
+
+    .pollset_init = pollset_init,
+    .pollset_shutdown = pollset_shutdown,
+    .pollset_reset = pollset_reset,
+    .pollset_destroy = pollset_destroy,
+    .pollset_work = pollset_work,
+    .pollset_kick = pollset_kick,
+    .pollset_add_fd = pollset_add_fd,
+
+    .pollset_set_create = pollset_set_create,
+    .pollset_set_destroy = pollset_set_destroy,
+    .pollset_set_add_pollset = pollset_set_add_pollset,
+    .pollset_set_del_pollset = pollset_set_del_pollset,
+    .pollset_set_add_pollset_set = pollset_set_add_pollset_set,
+    .pollset_set_del_pollset_set = pollset_set_del_pollset_set,
+    .pollset_set_add_fd = pollset_set_add_fd,
+    .pollset_set_del_fd = pollset_set_del_fd,
+
+    .kick_poller = kick_poller,
+
+    .shutdown_engine = shutdown_engine,
+};
+
+const grpc_event_engine_vtable *grpc_init_poll_posix(void) {
+  fd_global_init();
+  pollset_global_init();
+  return &vtable;
+}
+
+#endif
diff --git a/src/core/iomgr/ev_poll_posix.h b/src/core/iomgr/ev_poll_posix.h
new file mode 100644
index 0000000000..39dbc16442
--- /dev/null
+++ b/src/core/iomgr/ev_poll_posix.h
@@ -0,0 +1,41 @@
+/*
+ *
+ * Copyright 2015-2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_CORE_IOMGR_EV_POLL_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_EV_POLL_POSIX_H
+
+#include "src/core/iomgr/ev_posix.h"
+
+const grpc_event_engine_vtable *grpc_init_poll_posix(void);
+
+#endif  // GRPC_INTERNAL_CORE_IOMGR_EV_POLL_AND_EPOLL_POSIX_H
diff --git a/src/core/iomgr/ev_posix.c b/src/core/iomgr/ev_posix.c
index 4229d8d2e4..127ab4b181 100644
--- a/src/core/iomgr/ev_posix.c
+++ b/src/core/iomgr/ev_posix.c
@@ -33,18 +33,93 @@
 
 #include "src/core/iomgr/ev_posix.h"
 
+#include <string.h>
+
+#include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/useful.h>
 
 #include "src/core/iomgr/ev_poll_and_epoll_posix.h"
+#include "src/core/iomgr/ev_poll_posix.h"
+#include "src/core/support/env.h"
 
 static const grpc_event_engine_vtable *g_event_engine;
 
+typedef const grpc_event_engine_vtable *(*event_engine_factory_fn)(void);
+
+typedef struct {
+  const char *name;
+  event_engine_factory_fn factory;
+} event_engine_factory;
+
+static const event_engine_factory g_factories[] = {
+    {"poll", grpc_init_poll_posix}, {"legacy", grpc_init_poll_and_epoll_posix},
+};
+
+static void add(const char *beg, const char *end, char ***ss, size_t *ns) {
+  size_t n = *ns;
+  size_t np = n + 1;
+  char *s;
+  size_t len;
+  GPR_ASSERT(end >= beg);
+  len = (size_t)(end - beg);
+  s = gpr_malloc(len + 1);
+  memcpy(s, beg, len);
+  s[len] = 0;
+  *ss = gpr_realloc(*ss, sizeof(char **) * np);
+  (*ss)[n] = s;
+  *ns = np;
+}
+
+static void split(const char *s, char ***ss, size_t *ns) {
+  const char *c = strchr(s, ',');
+  if (c == NULL) {
+    add(s, s + strlen(s), ss, ns);
+  } else {
+    add(s, c, ss, ns);
+    split(c + 1, ss, ns);
+  }
+}
+
+static bool is(const char *want, const char *have) {
+  return 0 == strcmp(want, "all") || 0 == strcmp(want, have);
+}
+
+static void try_engine(const char *engine) {
+  for (size_t i = 0; i < GPR_ARRAY_SIZE(g_factories); i++) {
+    if (is(engine, g_factories[i].name)) {
+      if ((g_event_engine = g_factories[i].factory())) {
+        return;
+      }
+    }
+  }
+}
+
 void grpc_event_engine_init(void) {
-  if ((g_event_engine = grpc_init_poll_and_epoll_posix())) {
-    return;
+  char *s = gpr_getenv("GRPC_POLL_STRATEGY");
+  if (s == NULL) {
+    s = gpr_strdup("all");
+  }
+
+  char **strings = NULL;
+  size_t nstrings = 0;
+  split(s, &strings, &nstrings);
+
+  for (size_t i = 0; g_event_engine == NULL && i < nstrings; i++) {
+    try_engine(strings[i]);
+  }
+
+  for (size_t i = 0; i < nstrings; i++) {
+    gpr_free(strings[i]);
+  }
+  gpr_free(strings);
+  gpr_free(s);
+
+  if (g_event_engine == NULL) {
+    gpr_log(GPR_ERROR, "No event engine could be initialized");
+    abort();
   }
-  gpr_log(GPR_ERROR, "No event engine could be initialized");
-  abort();
 }
 
 void grpc_event_engine_shutdown(void) { g_event_engine->shutdown_engine(); }
diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py
index 330d153415..971457ddcf 100755
--- a/test/core/end2end/gen_build_yaml.py
+++ b/test/core/end2end/gen_build_yaml.py
@@ -47,6 +47,15 @@ default_secure_fixture_options = default_unsecure_fixture_options._replace(secur
 uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'])
 
 
+# map a platform to available polling strategies
+POLLING_STRATEGY = {
+'windows': ['all'],
+'linux': ['poll', 'legacy'],
+'mac': ['poll'],
+'posix': ['poll'],
+}
+
+
 # maps fixture name to whether it requires the security library
 END2END_FIXTURES = {
     'h2_compress': default_unsecure_fixture_options,
@@ -241,17 +250,22 @@ def main():
           {
               'name': '%s_test' % f,
               'args': [t],
+              'env': {
+                'GRPC_POLL_STRATEGY': poll_strategy
+              },
               'exclude_configs': [],
-              'platforms': END2END_FIXTURES[f].platforms,
-              'ci_platforms': (END2END_FIXTURES[f].platforms
-                               if END2END_FIXTURES[f].ci_mac else without(
-                                   END2END_FIXTURES[f].platforms, 'mac')),
+              'platforms': [platform],
+              'ci_platforms': [platform],
               'flaky': False,
               'language': 'c',
               'cpu_cost': END2END_TESTS[t].cpu_cost,
           }
           for f in sorted(END2END_FIXTURES.keys())
-          for t in sorted(END2END_TESTS.keys()) if compatible(f, t)
+          for t in sorted(END2END_TESTS.keys())
+          for platform in sorted(END2END_FIXTURES[f].platforms)
+          for poll_strategy in POLLING_STRATEGY[platform]
+          if compatible(f, t)
+          and (END2END_FIXTURES[f].ci_mac or platform != 'mac')
       ] + [
           {
               'name': '%s_nosec_test' % f,
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 7b2bc53716..b6810e83a2 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -159,13 +159,21 @@ class CLanguage(object):
             target['name'])
       else:
         binary = 'bins/%s/%s' % (self.config.build_config, target['name'])
+      env = {}
+      shortname = ' '.join(cmdline)
+      if 'env' in target:
+        tenv = target['env']
+        env.update(tenv)
+        shortname += ' '
+        shortname += ' '.join('%s=%s' % (key, tenv[key]) for key in sorted(tenv.keys()))
+      env['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH'] = (
+          _ROOT + '/src/core/tsi/test_creds/ca.pem')
       if os.path.isfile(binary):
         cmdline = [binary] + target['args']
         out.append(self.config.job_spec(cmdline, [binary],
                                         shortname=' '.join(cmdline),
                                         cpu_cost=target['cpu_cost'],
-                                        environ={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
-                                                 _ROOT + '/src/core/tsi/test_creds/ca.pem'}))
+                                        environ=env))
       elif self.args.regex == '.*' or self.platform == 'windows':
         print '\nWARNING: binary not found, skipping', binary
     return sorted(out)
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 2f514bfc00..a3195277b6 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -4042,966 +4042,834 @@
       "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
@@ -5010,21 +4878,18 @@
       "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
@@ -5032,949 +4897,834 @@
       "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
@@ -5983,20 +5733,18 @@
       "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
@@ -6004,948 +5752,834 @@
       "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_fakesec_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
@@ -6954,21 +6588,18 @@
       "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
@@ -6976,757 +6607,835 @@
       "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "simple_metadata"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "simple_metadata"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "simple_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "simple_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "posix"
     ]
   }, 
   {
@@ -7734,15 +7443,18 @@
       "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_full+pipe_test", 
+    "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows"
     ]
   }, 
   {
@@ -7750,922 +7462,834 @@
       "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_oauth2_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
@@ -8674,713 +8298,645 @@
       "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_proxy_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
@@ -9388,816 +8944,721 @@
       "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -10205,787 +9666,702 @@
       "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair+trace_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
@@ -10993,1148 +10369,30304 @@
       "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_fakesec_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_full+pipe_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_oauth2_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair+trace_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_sockpair_1byte_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "default_host"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_delayed_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_ssl_proxy_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "graceful_server_shutdown"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "high_initial_seqno"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "hpack_size"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "invoke_large_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "large_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_concurrent_streams"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "max_message_length"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "negative_deadline"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "no_op"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "ping_pong_streaming"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "registered_call"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_flags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "request_with_payload"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "server_finishes_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_calls"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "shutdown_finishes_tags"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "simple_request"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "trailing_metadata"
+    ], 
+    "ci_platforms": [
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "all"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uchannel_test", 
+    "platforms": [
+      "windows"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "bad_hostname"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "binary_metadata"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "call_creds"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_accept"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_client_done"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_after_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_before_invoke"
+    ], 
+    "ci_platforms": [
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_in_a_vacuum"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
+    ], 
+    "ci_platforms": [
+      "mac"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "mac"
+    ]
+  }, 
+  {
+    "args": [
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "empty_batch"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
@@ -12142,19 +40674,17 @@
       "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
@@ -12163,1718 +40693,1576 @@
       "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_ssl_proxy_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "payload"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "h2_uds_test", 
+    "platforms": [
+      "linux"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_uds_test", 
     "platforms": [
-      "windows", 
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
-    "cpu_cost": 1.0, 
+    "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
+    "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "legacy"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "posix"
+      "mac"
     ]
   }, 
   {
@@ -13882,18 +42270,17 @@
       "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
+    "env": {
+      "GRPC_POLL_STRATEGY": "poll"
+    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux", 
-      "mac", 
       "posix"
     ]
   }, 
-- 
GitLab


From 7ac6bf07a90ce8921c3b24aa69644c9d581cfeea Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 25 Feb 2016 12:54:59 -0800
Subject: [PATCH 010/525] Finish porting rough implementation of poll() event
 strategy

---
 BUILD                                         |   6 +
 Makefile                                      |   2 +
 binding.gyp                                   |   1 +
 build.yaml                                    |   2 +
 config.m4                                     |   1 +
 gRPC.podspec                                  |   3 +
 grpc.gemspec                                  |   2 +
 package.json                                  |   2 +
 package.xml                                   |   2 +
 src/core/iomgr/ev_poll_and_epoll_posix.c      |   9 -
 src/core/iomgr/ev_poll_posix.c                | 708 ++++--------------
 src/core/iomgr/ev_posix.c                     |  10 +
 src/core/iomgr/ev_posix.h                     |   8 +
 src/python/grpcio/grpc_core_dependencies.py   |   1 +
 tools/doxygen/Doxyfile.core.internal          |   2 +
 tools/run_tests/sources_and_headers.json      |   6 +
 vsprojects/vcxproj/grpc/grpc.vcxproj          |   3 +
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters  |   6 +
 .../grpc_unsecure/grpc_unsecure.vcxproj       |   3 +
 .../grpc_unsecure.vcxproj.filters             |   6 +
 20 files changed, 209 insertions(+), 574 deletions(-)

diff --git a/BUILD b/BUILD
index 1898b4231b..e0fc55e5f7 100644
--- a/BUILD
+++ b/BUILD
@@ -194,6 +194,7 @@ cc_library(
     "src/core/iomgr/endpoint.h",
     "src/core/iomgr/endpoint_pair.h",
     "src/core/iomgr/ev_poll_and_epoll_posix.h",
+    "src/core/iomgr/ev_poll_posix.h",
     "src/core/iomgr/ev_posix.h",
     "src/core/iomgr/exec_ctx.h",
     "src/core/iomgr/executor.h",
@@ -331,6 +332,7 @@ cc_library(
     "src/core/iomgr/endpoint_pair_posix.c",
     "src/core/iomgr/endpoint_pair_windows.c",
     "src/core/iomgr/ev_poll_and_epoll_posix.c",
+    "src/core/iomgr/ev_poll_posix.c",
     "src/core/iomgr/ev_posix.c",
     "src/core/iomgr/exec_ctx.c",
     "src/core/iomgr/executor.c",
@@ -520,6 +522,7 @@ cc_library(
     "src/core/iomgr/endpoint.h",
     "src/core/iomgr/endpoint_pair.h",
     "src/core/iomgr/ev_poll_and_epoll_posix.h",
+    "src/core/iomgr/ev_poll_posix.h",
     "src/core/iomgr/ev_posix.h",
     "src/core/iomgr/exec_ctx.h",
     "src/core/iomgr/executor.h",
@@ -644,6 +647,7 @@ cc_library(
     "src/core/iomgr/endpoint_pair_posix.c",
     "src/core/iomgr/endpoint_pair_windows.c",
     "src/core/iomgr/ev_poll_and_epoll_posix.c",
+    "src/core/iomgr/ev_poll_posix.c",
     "src/core/iomgr/ev_posix.c",
     "src/core/iomgr/exec_ctx.c",
     "src/core/iomgr/executor.c",
@@ -1304,6 +1308,7 @@ objc_library(
     "src/core/iomgr/endpoint_pair_posix.c",
     "src/core/iomgr/endpoint_pair_windows.c",
     "src/core/iomgr/ev_poll_and_epoll_posix.c",
+    "src/core/iomgr/ev_poll_posix.c",
     "src/core/iomgr/ev_posix.c",
     "src/core/iomgr/exec_ctx.c",
     "src/core/iomgr/executor.c",
@@ -1474,6 +1479,7 @@ objc_library(
     "src/core/iomgr/endpoint.h",
     "src/core/iomgr/endpoint_pair.h",
     "src/core/iomgr/ev_poll_and_epoll_posix.h",
+    "src/core/iomgr/ev_poll_posix.h",
     "src/core/iomgr/ev_posix.h",
     "src/core/iomgr/exec_ctx.h",
     "src/core/iomgr/executor.h",
diff --git a/Makefile b/Makefile
index 2cbb34d85e..11b2bfbb4d 100644
--- a/Makefile
+++ b/Makefile
@@ -2381,6 +2381,7 @@ LIBGRPC_SRC = \
     src/core/iomgr/endpoint_pair_posix.c \
     src/core/iomgr/endpoint_pair_windows.c \
     src/core/iomgr/ev_poll_and_epoll_posix.c \
+    src/core/iomgr/ev_poll_posix.c \
     src/core/iomgr/ev_posix.c \
     src/core/iomgr/exec_ctx.c \
     src/core/iomgr/executor.c \
@@ -2690,6 +2691,7 @@ LIBGRPC_UNSECURE_SRC = \
     src/core/iomgr/endpoint_pair_posix.c \
     src/core/iomgr/endpoint_pair_windows.c \
     src/core/iomgr/ev_poll_and_epoll_posix.c \
+    src/core/iomgr/ev_poll_posix.c \
     src/core/iomgr/ev_posix.c \
     src/core/iomgr/exec_ctx.c \
     src/core/iomgr/executor.c \
diff --git a/binding.gyp b/binding.gyp
index ee2b361f14..18df012257 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -598,6 +598,7 @@
         'src/core/iomgr/endpoint_pair_posix.c',
         'src/core/iomgr/endpoint_pair_windows.c',
         'src/core/iomgr/ev_poll_and_epoll_posix.c',
+        'src/core/iomgr/ev_poll_posix.c',
         'src/core/iomgr/ev_posix.c',
         'src/core/iomgr/exec_ctx.c',
         'src/core/iomgr/executor.c',
diff --git a/build.yaml b/build.yaml
index e7afc03db4..d19bf67d52 100644
--- a/build.yaml
+++ b/build.yaml
@@ -284,6 +284,7 @@ filegroups:
   - src/core/iomgr/endpoint.h
   - src/core/iomgr/endpoint_pair.h
   - src/core/iomgr/ev_poll_and_epoll_posix.h
+  - src/core/iomgr/ev_poll_posix.h
   - src/core/iomgr/ev_posix.h
   - src/core/iomgr/exec_ctx.h
   - src/core/iomgr/executor.h
@@ -401,6 +402,7 @@ filegroups:
   - src/core/iomgr/endpoint_pair_posix.c
   - src/core/iomgr/endpoint_pair_windows.c
   - src/core/iomgr/ev_poll_and_epoll_posix.c
+  - src/core/iomgr/ev_poll_posix.c
   - src/core/iomgr/ev_posix.c
   - src/core/iomgr/exec_ctx.c
   - src/core/iomgr/executor.c
diff --git a/config.m4 b/config.m4
index ac2c2cb1ab..25d3cb0e9f 100644
--- a/config.m4
+++ b/config.m4
@@ -120,6 +120,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/iomgr/endpoint_pair_posix.c \
     src/core/iomgr/endpoint_pair_windows.c \
     src/core/iomgr/ev_poll_and_epoll_posix.c \
+    src/core/iomgr/ev_poll_posix.c \
     src/core/iomgr/ev_posix.c \
     src/core/iomgr/exec_ctx.c \
     src/core/iomgr/executor.c \
diff --git a/gRPC.podspec b/gRPC.podspec
index 0f56518d6b..e3db166881 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -198,6 +198,7 @@ Pod::Spec.new do |s|
                       'src/core/iomgr/endpoint.h',
                       'src/core/iomgr/endpoint_pair.h',
                       'src/core/iomgr/ev_poll_and_epoll_posix.h',
+                      'src/core/iomgr/ev_poll_posix.h',
                       'src/core/iomgr/ev_posix.h',
                       'src/core/iomgr/exec_ctx.h',
                       'src/core/iomgr/executor.h',
@@ -348,6 +349,7 @@ Pod::Spec.new do |s|
                       'src/core/iomgr/endpoint_pair_posix.c',
                       'src/core/iomgr/endpoint_pair_windows.c',
                       'src/core/iomgr/ev_poll_and_epoll_posix.c',
+                      'src/core/iomgr/ev_poll_posix.c',
                       'src/core/iomgr/ev_posix.c',
                       'src/core/iomgr/exec_ctx.c',
                       'src/core/iomgr/executor.c',
@@ -515,6 +517,7 @@ Pod::Spec.new do |s|
                               'src/core/iomgr/endpoint.h',
                               'src/core/iomgr/endpoint_pair.h',
                               'src/core/iomgr/ev_poll_and_epoll_posix.h',
+                              'src/core/iomgr/ev_poll_posix.h',
                               'src/core/iomgr/ev_posix.h',
                               'src/core/iomgr/exec_ctx.h',
                               'src/core/iomgr/executor.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index de41947c09..4f95d4cc9a 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -194,6 +194,7 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/iomgr/endpoint.h )
   s.files += %w( src/core/iomgr/endpoint_pair.h )
   s.files += %w( src/core/iomgr/ev_poll_and_epoll_posix.h )
+  s.files += %w( src/core/iomgr/ev_poll_posix.h )
   s.files += %w( src/core/iomgr/ev_posix.h )
   s.files += %w( src/core/iomgr/exec_ctx.h )
   s.files += %w( src/core/iomgr/executor.h )
@@ -331,6 +332,7 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/iomgr/endpoint_pair_posix.c )
   s.files += %w( src/core/iomgr/endpoint_pair_windows.c )
   s.files += %w( src/core/iomgr/ev_poll_and_epoll_posix.c )
+  s.files += %w( src/core/iomgr/ev_poll_posix.c )
   s.files += %w( src/core/iomgr/ev_posix.c )
   s.files += %w( src/core/iomgr/exec_ctx.c )
   s.files += %w( src/core/iomgr/executor.c )
diff --git a/package.json b/package.json
index 1741d0cf20..e6c18bf1e1 100644
--- a/package.json
+++ b/package.json
@@ -138,6 +138,7 @@
     "src/core/iomgr/endpoint.h",
     "src/core/iomgr/endpoint_pair.h",
     "src/core/iomgr/ev_poll_and_epoll_posix.h",
+    "src/core/iomgr/ev_poll_posix.h",
     "src/core/iomgr/ev_posix.h",
     "src/core/iomgr/exec_ctx.h",
     "src/core/iomgr/executor.h",
@@ -275,6 +276,7 @@
     "src/core/iomgr/endpoint_pair_posix.c",
     "src/core/iomgr/endpoint_pair_windows.c",
     "src/core/iomgr/ev_poll_and_epoll_posix.c",
+    "src/core/iomgr/ev_poll_posix.c",
     "src/core/iomgr/ev_posix.c",
     "src/core/iomgr/exec_ctx.c",
     "src/core/iomgr/executor.c",
diff --git a/package.xml b/package.xml
index 316cc34519..28287c6fa7 100644
--- a/package.xml
+++ b/package.xml
@@ -198,6 +198,7 @@
     <file baseinstalldir="/" name="src/core/iomgr/endpoint.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/endpoint_pair.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/ev_poll_and_epoll_posix.h" role="src" />
+    <file baseinstalldir="/" name="src/core/iomgr/ev_poll_posix.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/ev_posix.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/exec_ctx.h" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/executor.h" role="src" />
@@ -335,6 +336,7 @@
     <file baseinstalldir="/" name="src/core/iomgr/endpoint_pair_posix.c" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/endpoint_pair_windows.c" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/ev_poll_and_epoll_posix.c" role="src" />
+    <file baseinstalldir="/" name="src/core/iomgr/ev_poll_posix.c" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/ev_posix.c" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/exec_ctx.c" role="src" />
     <file baseinstalldir="/" name="src/core/iomgr/executor.c" role="src" />
diff --git a/src/core/iomgr/ev_poll_and_epoll_posix.c b/src/core/iomgr/ev_poll_and_epoll_posix.c
index 72a8f9f969..7de8c665e2 100644
--- a/src/core/iomgr/ev_poll_and_epoll_posix.c
+++ b/src/core/iomgr/ev_poll_and_epoll_posix.c
@@ -271,11 +271,6 @@ static int pollset_has_workers(grpc_pollset *pollset);
 
 static void remove_fd_from_all_epoll_sets(int fd);
 
-/* override to allow tests to hook poll() usage */
-typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int);
-extern grpc_poll_function_type grpc_poll_function;
-extern grpc_wakeup_fd grpc_global_wakeup_fd;
-
 /*******************************************************************************
  * pollset_set definitions
  */
@@ -706,10 +701,6 @@ static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
 GPR_TLS_DECL(g_current_thread_poller);
 GPR_TLS_DECL(g_current_thread_worker);
 
-/** Default poll() function - a pointer so that it can be overridden by some
- *  tests */
-grpc_poll_function_type grpc_poll_function = poll;
-
 /** The alarm system needs to be able to wakeup 'some poller' sometimes
  *  (specifically when a new alarm needs to be triggered earlier than the next
  *  alarm 'epoch').
diff --git a/src/core/iomgr/ev_poll_posix.c b/src/core/iomgr/ev_poll_posix.c
index 3693e13729..e2b0b08ac3 100644
--- a/src/core/iomgr/ev_poll_posix.c
+++ b/src/core/iomgr/ev_poll_posix.c
@@ -121,8 +121,6 @@ struct grpc_fd {
   grpc_closure *read_closure;
   grpc_closure *write_closure;
 
-  struct grpc_fd *freelist_next;
-
   grpc_closure *on_done_closure;
 
   grpc_iomgr_object iomgr_object;
@@ -152,13 +150,6 @@ static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *rec,
 /* Return 1 if this fd is orphaned, 0 otherwise */
 static bool fd_is_orphaned(grpc_fd *fd);
 
-/* Notification from the poller to an fd that it has become readable or
-   writable.
-   If allow_synchronous_callback is 1, allow running the fd callback inline
-   in this callstack, otherwise register an asynchronous callback and return */
-static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd);
-static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd);
-
 /* Reference counting for fds */
 /*#define GRPC_FD_REF_COUNT_DEBUG*/
 #ifdef GRPC_FD_REF_COUNT_DEBUG
@@ -174,9 +165,6 @@ static void fd_unref(grpc_fd *fd);
 #define GRPC_FD_UNREF(fd, reason) fd_unref(fd)
 #endif
 
-static void fd_global_init(void);
-static void fd_global_shutdown(void);
-
 #define CLOSURE_NOT_READY ((grpc_closure *)0)
 #define CLOSURE_READY ((grpc_closure *)1)
 
@@ -184,8 +172,6 @@ static void fd_global_shutdown(void);
  * pollset declarations
  */
 
-typedef struct grpc_pollset_vtable grpc_pollset_vtable;
-
 typedef struct grpc_cached_wakeup_fd {
   grpc_wakeup_fd fd;
   struct grpc_cached_wakeup_fd *next;
@@ -200,11 +186,6 @@ struct grpc_pollset_worker {
 };
 
 struct grpc_pollset {
-  /* pollsets under posix can mutate representation as fds are added and
-     removed.
-     For example, we may choose a poll() based implementation on linux for
-     few fds, and an epoll() based implementation for many fds */
-  const grpc_pollset_vtable *vtable;
   gpr_mu *mu;
   grpc_pollset_worker root_worker;
   int in_flight_cbs;
@@ -213,10 +194,14 @@ struct grpc_pollset {
   int kicked_without_pollers;
   grpc_closure *shutdown_done;
   grpc_closure_list idle_jobs;
-  union {
-    int fd;
-    void *ptr;
-  } data;
+  /* all polled fds */
+  size_t fd_count;
+  size_t fd_capacity;
+  grpc_fd **fds;
+  /* fds that have been removed from the pollset explicitly */
+  size_t del_count;
+  size_t del_capacity;
+  grpc_fd **dels;
   /* Local cache of eventfds for workers */
   grpc_cached_wakeup_fd *local_wakeup_cache;
 };
@@ -258,24 +243,10 @@ static void pollset_kick_ext(grpc_pollset *p,
                              grpc_pollset_worker *specific_worker,
                              uint32_t flags);
 
-/* turn a pollset into a multipoller: platform specific */
-typedef void (*platform_become_multipoller_type)(grpc_exec_ctx *exec_ctx,
-                                                 grpc_pollset *pollset,
-                                                 struct grpc_fd **fds,
-                                                 size_t fd_count);
-static platform_become_multipoller_type platform_become_multipoller;
-
 /* Return 1 if the pollset has active threads in pollset_work (pollset must
  * be locked) */
 static int pollset_has_workers(grpc_pollset *pollset);
 
-static void remove_fd_from_all_epoll_sets(int fd);
-
-/* override to allow tests to hook poll() usage */
-typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int);
-extern grpc_poll_function_type grpc_poll_function;
-extern grpc_wakeup_fd grpc_global_wakeup_fd;
-
 /*******************************************************************************
  * pollset_set definitions
  */
@@ -300,67 +271,6 @@ struct grpc_pollset_set {
  * fd_posix.c
  */
 
-/* We need to keep a freelist not because of any concerns of malloc performance
- * but instead so that implementations with multiple threads in (for example)
- * epoll_wait deal with the race between pollset removal and incoming poll
- * notifications.
- *
- * The problem is that the poller ultimately holds a reference to this
- * object, so it is very difficult to know when is safe to free it, at least
- * without some expensive synchronization.
- *
- * If we keep the object freelisted, in the worst case losing this race just
- * becomes a spurious read notification on a reused fd.
- */
-/* TODO(klempner): We could use some form of polling generation count to know
- * when these are safe to free. */
-/* TODO(klempner): Consider disabling freelisting if we don't have multiple
- * threads in poll on the same fd */
-/* TODO(klempner): Batch these allocations to reduce fragmentation */
-static grpc_fd *fd_freelist = NULL;
-static gpr_mu fd_freelist_mu;
-
-static void freelist_fd(grpc_fd *fd) {
-  gpr_mu_lock(&fd_freelist_mu);
-  fd->freelist_next = fd_freelist;
-  fd_freelist = fd;
-  grpc_iomgr_unregister_object(&fd->iomgr_object);
-  gpr_mu_unlock(&fd_freelist_mu);
-}
-
-static grpc_fd *alloc_fd(int fd) {
-  grpc_fd *r = NULL;
-  gpr_mu_lock(&fd_freelist_mu);
-  if (fd_freelist != NULL) {
-    r = fd_freelist;
-    fd_freelist = fd_freelist->freelist_next;
-  }
-  gpr_mu_unlock(&fd_freelist_mu);
-  if (r == NULL) {
-    r = gpr_malloc(sizeof(grpc_fd));
-    gpr_mu_init(&r->mu);
-  }
-
-  gpr_atm_rel_store(&r->refst, 1);
-  r->shutdown = 0;
-  r->read_closure = CLOSURE_NOT_READY;
-  r->write_closure = CLOSURE_NOT_READY;
-  r->fd = fd;
-  r->inactive_watcher_root.next = r->inactive_watcher_root.prev =
-      &r->inactive_watcher_root;
-  r->freelist_next = NULL;
-  r->read_watcher = r->write_watcher = NULL;
-  r->on_done_closure = NULL;
-  r->closed = 0;
-  r->released = 0;
-  return r;
-}
-
-static void destroy(grpc_fd *fd) {
-  gpr_mu_destroy(&fd->mu);
-  gpr_free(fd);
-}
-
 #ifdef GRPC_FD_REF_COUNT_DEBUG
 #define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
 #define UNREF_BY(fd, n, reason) unref_by(fd, n, reason, __FILE__, __LINE__)
@@ -390,27 +300,28 @@ static void unref_by(grpc_fd *fd, int n) {
 #endif
   old = gpr_atm_full_fetch_add(&fd->refst, -n);
   if (old == n) {
-    freelist_fd(fd);
+    gpr_mu_destroy(&fd->mu);
+    gpr_free(fd);
   } else {
     GPR_ASSERT(old > n);
   }
 }
 
-static void fd_global_init(void) { gpr_mu_init(&fd_freelist_mu); }
-
-static void fd_global_shutdown(void) {
-  gpr_mu_lock(&fd_freelist_mu);
-  gpr_mu_unlock(&fd_freelist_mu);
-  while (fd_freelist != NULL) {
-    grpc_fd *fd = fd_freelist;
-    fd_freelist = fd_freelist->freelist_next;
-    destroy(fd);
-  }
-  gpr_mu_destroy(&fd_freelist_mu);
-}
-
 static grpc_fd *fd_create(int fd, const char *name) {
-  grpc_fd *r = alloc_fd(fd);
+  grpc_fd *r = gpr_malloc(sizeof(*r));
+  gpr_mu_init(&r->mu);
+  gpr_atm_rel_store(&r->refst, 1);
+  r->shutdown = 0;
+  r->read_closure = CLOSURE_NOT_READY;
+  r->write_closure = CLOSURE_NOT_READY;
+  r->fd = fd;
+  r->inactive_watcher_root.next = r->inactive_watcher_root.prev =
+      &r->inactive_watcher_root;
+  r->read_watcher = r->write_watcher = NULL;
+  r->on_done_closure = NULL;
+  r->closed = 0;
+  r->released = 0;
+
   char *name2;
   gpr_asprintf(&name2, "%s fd=%d", name, fd);
   grpc_iomgr_register_object(&r->iomgr_object, name2);
@@ -466,8 +377,6 @@ static void close_fd_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
   fd->closed = 1;
   if (!fd->released) {
     close(fd->fd);
-  } else {
-    remove_fd_from_all_epoll_sets(fd->fd);
   }
   grpc_exec_ctx_enqueue(exec_ctx, fd->on_done_closure, true, NULL);
 }
@@ -555,14 +464,6 @@ static int set_ready_locked(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
   }
 }
 
-static void set_ready(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure **st) {
-  /* only one set_ready can be active at once (but there may be a racing
-     notify_on) */
-  gpr_mu_lock(&fd->mu);
-  set_ready_locked(exec_ctx, fd, st);
-  gpr_mu_unlock(&fd->mu);
-}
-
 static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
   gpr_mu_lock(&fd->mu);
   GPR_ASSERT(!fd->shutdown);
@@ -691,14 +592,6 @@ static void fd_end_poll(grpc_exec_ctx *exec_ctx, grpc_fd_watcher *watcher,
   GRPC_FD_UNREF(fd, "poll");
 }
 
-static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
-  set_ready(exec_ctx, fd, &fd->read_closure);
-}
-
-static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
-  set_ready(exec_ctx, fd, &fd->write_closure);
-}
-
 /*******************************************************************************
  * pollset_posix.c
  */
@@ -706,16 +599,6 @@ static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
 GPR_TLS_DECL(g_current_thread_poller);
 GPR_TLS_DECL(g_current_thread_worker);
 
-/** Default poll() function - a pointer so that it can be overridden by some
- *  tests */
-grpc_poll_function_type grpc_poll_function = poll;
-
-/** The alarm system needs to be able to wakeup 'some poller' sometimes
- *  (specifically when a new alarm needs to be triggered earlier than the next
- *  alarm 'epoch').
- *  This wakeup_fd gives us something to alert on when such a case occurs. */
-grpc_wakeup_fd grpc_global_wakeup_fd;
-
 static void remove_worker(grpc_pollset *p, grpc_pollset_worker *worker) {
   worker->prev->next = worker->next;
   worker->next->prev = worker->prev;
@@ -835,8 +718,6 @@ static void kick_poller(void) { grpc_wakeup_fd_wakeup(&grpc_global_wakeup_fd); }
 
 /* main interface */
 
-static void become_basic_pollset(grpc_pollset *pollset, grpc_fd *fd_or_null);
-
 static void pollset_init(grpc_pollset *pollset, gpr_mu *mu) {
   pollset->mu = mu;
   pollset->root_worker.next = pollset->root_worker.prev = &pollset->root_worker;
@@ -847,20 +728,24 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu *mu) {
   pollset->idle_jobs.head = pollset->idle_jobs.tail = NULL;
   pollset->local_wakeup_cache = NULL;
   pollset->kicked_without_pollers = 0;
-  become_basic_pollset(pollset, NULL);
+  pollset->fd_count = 0;
+  pollset->del_count = 0;
+  pollset->fds = NULL;
+  pollset->dels = NULL;
 }
 
 static void pollset_destroy(grpc_pollset *pollset) {
   GPR_ASSERT(pollset->in_flight_cbs == 0);
   GPR_ASSERT(!pollset_has_workers(pollset));
   GPR_ASSERT(pollset->idle_jobs.head == pollset->idle_jobs.tail);
-  pollset->vtable->destroy(pollset);
   while (pollset->local_wakeup_cache) {
     grpc_cached_wakeup_fd *next = pollset->local_wakeup_cache->next;
     grpc_wakeup_fd_destroy(&pollset->local_wakeup_cache->fd);
     gpr_free(pollset->local_wakeup_cache);
     pollset->local_wakeup_cache = next;
   }
+  gpr_free(pollset->fds);
+  gpr_free(pollset->dels);
 }
 
 static void pollset_reset(grpc_pollset *pollset) {
@@ -868,30 +753,44 @@ static void pollset_reset(grpc_pollset *pollset) {
   GPR_ASSERT(pollset->in_flight_cbs == 0);
   GPR_ASSERT(!pollset_has_workers(pollset));
   GPR_ASSERT(pollset->idle_jobs.head == pollset->idle_jobs.tail);
-  pollset->vtable->destroy(pollset);
+  GPR_ASSERT(pollset->fd_count == 0);
+  GPR_ASSERT(pollset->del_count == 0);
   pollset->shutting_down = 0;
   pollset->called_shutdown = 0;
   pollset->kicked_without_pollers = 0;
-  become_basic_pollset(pollset, NULL);
 }
 
 static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
                            grpc_fd *fd) {
   gpr_mu_lock(pollset->mu);
-  pollset->vtable->add_fd(exec_ctx, pollset, fd, 1);
-/* the following (enabled only in debug) will reacquire and then release
-   our lock - meaning that if the unlocking flag passed to add_fd above is
-   not respected, the code will deadlock (in a way that we have a chance of
-   debugging) */
-#ifndef NDEBUG
-  gpr_mu_lock(pollset->mu);
+  size_t i;
+  /* TODO(ctiller): this is O(num_fds^2); maybe switch to a hash set here */
+  for (i = 0; i < pollset->fd_count; i++) {
+    if (pollset->fds[i] == fd) goto exit;
+  }
+  if (pollset->fd_count == pollset->fd_capacity) {
+    pollset->fd_capacity =
+        GPR_MAX(pollset->fd_capacity + 8, pollset->fd_count * 3 / 2);
+    pollset->fds =
+        gpr_realloc(pollset->fds, sizeof(grpc_fd *) * pollset->fd_capacity);
+  }
+  pollset->fds[pollset->fd_count++] = fd;
+  GRPC_FD_REF(fd, "multipoller");
+exit:
   gpr_mu_unlock(pollset->mu);
-#endif
 }
 
 static void finish_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
   GPR_ASSERT(grpc_closure_list_empty(pollset->idle_jobs));
-  pollset->vtable->finish_shutdown(pollset);
+  size_t i;
+  for (i = 0; i < pollset->fd_count; i++) {
+    GRPC_FD_UNREF(pollset->fds[i], "multipoller");
+  }
+  for (i = 0; i < pollset->del_count; i++) {
+    GRPC_FD_UNREF(pollset->dels[i], "multipoller_del");
+  }
+  pollset->fd_count = 0;
+  pollset->del_count = 0;
   grpc_exec_ctx_enqueue(exec_ctx, pollset->shutdown_done, true, NULL);
 }
 
@@ -952,8 +851,93 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
       }
       gpr_tls_set(&g_current_thread_poller, (intptr_t)pollset);
       GPR_TIMER_BEGIN("maybe_work_and_unlock", 0);
-      pollset->vtable->maybe_work_and_unlock(exec_ctx, pollset, &worker,
-                                             deadline, now);
+#define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
+#define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
+
+      int timeout;
+      int r;
+      size_t i, j, fd_count;
+      nfds_t pfd_count;
+      /* TODO(ctiller): inline some elements to avoid an allocation */
+      grpc_fd_watcher *watchers;
+      struct pollfd *pfds;
+
+      timeout = poll_deadline_to_millis_timeout(deadline, now);
+      /* TODO(ctiller): perform just one malloc here if we exceed the inline
+       * case */
+      pfds = gpr_malloc(sizeof(*pfds) * (pollset->fd_count + 2));
+      watchers = gpr_malloc(sizeof(*watchers) * (pollset->fd_count + 2));
+      fd_count = 0;
+      pfd_count = 2;
+      pfds[0].fd = GRPC_WAKEUP_FD_GET_READ_FD(&grpc_global_wakeup_fd);
+      pfds[0].events = POLLIN;
+      pfds[0].revents = 0;
+      pfds[1].fd = GRPC_WAKEUP_FD_GET_READ_FD(&worker.wakeup_fd->fd);
+      pfds[1].events = POLLIN;
+      pfds[1].revents = 0;
+      for (i = 0; i < pollset->fd_count; i++) {
+        int remove = fd_is_orphaned(pollset->fds[i]);
+        for (j = 0; !remove && j < pollset->del_count; j++) {
+          if (pollset->fds[i] == pollset->dels[j]) remove = 1;
+        }
+        if (remove) {
+          GRPC_FD_UNREF(pollset->fds[i], "multipoller");
+        } else {
+          pollset->fds[fd_count++] = pollset->fds[i];
+          watchers[pfd_count].fd = pollset->fds[i];
+          pfds[pfd_count].fd = pollset->fds[i]->fd;
+          pfds[pfd_count].revents = 0;
+          pfd_count++;
+        }
+      }
+      for (j = 0; j < pollset->del_count; j++) {
+        GRPC_FD_UNREF(pollset->dels[j], "multipoller_del");
+      }
+      pollset->del_count = 0;
+      pollset->fd_count = fd_count;
+      gpr_mu_unlock(pollset->mu);
+
+      for (i = 2; i < pfd_count; i++) {
+        pfds[i].events = (short)fd_begin_poll(watchers[i].fd, pollset, &worker,
+                                              POLLIN, POLLOUT, &watchers[i]);
+      }
+
+      /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
+         even going into the blocking annotation if possible */
+      GRPC_SCHEDULING_START_BLOCKING_REGION;
+      r = grpc_poll_function(pfds, pfd_count, timeout);
+      GRPC_SCHEDULING_END_BLOCKING_REGION;
+
+      if (r < 0) {
+        if (errno != EINTR) {
+          gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno));
+        }
+        for (i = 2; i < pfd_count; i++) {
+          fd_end_poll(exec_ctx, &watchers[i], 0, 0);
+        }
+      } else if (r == 0) {
+        for (i = 2; i < pfd_count; i++) {
+          fd_end_poll(exec_ctx, &watchers[i], 0, 0);
+        }
+      } else {
+        if (pfds[0].revents & POLLIN_CHECK) {
+          grpc_wakeup_fd_consume_wakeup(&grpc_global_wakeup_fd);
+        }
+        if (pfds[1].revents & POLLIN_CHECK) {
+          grpc_wakeup_fd_consume_wakeup(&worker.wakeup_fd->fd);
+        }
+        for (i = 2; i < pfd_count; i++) {
+          if (watchers[i].fd == NULL) {
+            fd_end_poll(exec_ctx, &watchers[i], 0, 0);
+            continue;
+          }
+          fd_end_poll(exec_ctx, &watchers[i], pfds[i].revents & POLLIN_CHECK,
+                      pfds[i].revents & POLLOUT_CHECK);
+        }
+      }
+
+      gpr_free(pfds);
+      gpr_free(watchers);
       GPR_TIMER_END("maybe_work_and_unlock", 0);
       locked = 0;
       gpr_tls_set(&g_current_thread_poller, 0);
@@ -1050,408 +1034,6 @@ static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
       timeout, gpr_time_from_nanos(GPR_NS_PER_MS - 1, GPR_TIMESPAN)));
 }
 
-/*
- * basic_pollset - a vtable that provides polling for zero or one file
- *                 descriptor via poll()
- */
-
-typedef struct grpc_unary_promote_args {
-  const grpc_pollset_vtable *original_vtable;
-  grpc_pollset *pollset;
-  grpc_fd *fd;
-  grpc_closure promotion_closure;
-} grpc_unary_promote_args;
-
-static void basic_do_promote(grpc_exec_ctx *exec_ctx, void *args,
-                             bool success) {
-  grpc_unary_promote_args *up_args = args;
-  const grpc_pollset_vtable *original_vtable = up_args->original_vtable;
-  grpc_pollset *pollset = up_args->pollset;
-  grpc_fd *fd = up_args->fd;
-
-  /*
-   * This is quite tricky. There are a number of cases to keep in mind here:
-   * 1. fd may have been orphaned
-   * 2. The pollset may no longer be a unary poller (and we can't let case #1
-   * leak to other pollset types!)
-   * 3. pollset's fd (which may have changed) may have been orphaned
-   * 4. The pollset may be shutting down.
-   */
-
-  gpr_mu_lock(pollset->mu);
-  /* First we need to ensure that nobody is polling concurrently */
-  GPR_ASSERT(!pollset_has_workers(pollset));
-
-  gpr_free(up_args);
-  /* At this point the pollset may no longer be a unary poller. In that case
-   * we should just call the right add function and be done. */
-  /* TODO(klempner): If we're not careful this could cause infinite recursion.
-   * That's not a problem for now because empty_pollset has a trivial poller
-   * and we don't have any mechanism to unbecome multipoller. */
-  pollset->in_flight_cbs--;
-  if (pollset->shutting_down) {
-    /* We don't care about this pollset anymore. */
-    if (pollset->in_flight_cbs == 0 && !pollset->called_shutdown) {
-      pollset->called_shutdown = 1;
-      finish_shutdown(exec_ctx, pollset);
-    }
-  } else if (fd_is_orphaned(fd)) {
-    /* Don't try to add it to anything, we'll drop our ref on it below */
-  } else if (pollset->vtable != original_vtable) {
-    pollset->vtable->add_fd(exec_ctx, pollset, fd, 0);
-  } else if (fd != pollset->data.ptr) {
-    grpc_fd *fds[2];
-    fds[0] = pollset->data.ptr;
-    fds[1] = fd;
-
-    if (fds[0] && !fd_is_orphaned(fds[0])) {
-      platform_become_multipoller(exec_ctx, pollset, fds, GPR_ARRAY_SIZE(fds));
-      GRPC_FD_UNREF(fds[0], "basicpoll");
-    } else {
-      /* old fd is orphaned and we haven't cleaned it up until now, so remain a
-       * unary poller */
-      /* Note that it is possible that fds[1] is also orphaned at this point.
-       * That's okay, we'll correct it at the next add or poll. */
-      if (fds[0]) GRPC_FD_UNREF(fds[0], "basicpoll");
-      pollset->data.ptr = fd;
-      GRPC_FD_REF(fd, "basicpoll");
-    }
-  }
-
-  gpr_mu_unlock(pollset->mu);
-
-  /* Matching ref in basic_pollset_add_fd */
-  GRPC_FD_UNREF(fd, "basicpoll_add");
-}
-
-static void basic_pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
-                                 grpc_fd *fd, int and_unlock_pollset) {
-  grpc_unary_promote_args *up_args;
-  GPR_ASSERT(fd);
-  if (fd == pollset->data.ptr) goto exit;
-
-  if (!pollset_has_workers(pollset)) {
-    /* Fast path -- no in flight cbs */
-    /* TODO(klempner): Comment this out and fix any test failures or establish
-     * they are due to timing issues */
-    grpc_fd *fds[2];
-    fds[0] = pollset->data.ptr;
-    fds[1] = fd;
-
-    if (fds[0] == NULL) {
-      pollset->data.ptr = fd;
-      GRPC_FD_REF(fd, "basicpoll");
-    } else if (!fd_is_orphaned(fds[0])) {
-      platform_become_multipoller(exec_ctx, pollset, fds, GPR_ARRAY_SIZE(fds));
-      GRPC_FD_UNREF(fds[0], "basicpoll");
-    } else {
-      /* old fd is orphaned and we haven't cleaned it up until now, so remain a
-       * unary poller */
-      GRPC_FD_UNREF(fds[0], "basicpoll");
-      pollset->data.ptr = fd;
-      GRPC_FD_REF(fd, "basicpoll");
-    }
-    goto exit;
-  }
-
-  /* Now we need to promote. This needs to happen when we're not polling. Since
-   * this may be called from poll, the wait needs to happen asynchronously. */
-  GRPC_FD_REF(fd, "basicpoll_add");
-  pollset->in_flight_cbs++;
-  up_args = gpr_malloc(sizeof(*up_args));
-  up_args->fd = fd;
-  up_args->original_vtable = pollset->vtable;
-  up_args->pollset = pollset;
-  up_args->promotion_closure.cb = basic_do_promote;
-  up_args->promotion_closure.cb_arg = up_args;
-
-  grpc_closure_list_add(&pollset->idle_jobs, &up_args->promotion_closure, 1);
-  pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
-
-exit:
-  if (and_unlock_pollset) {
-    gpr_mu_unlock(pollset->mu);
-  }
-}
-
-static void basic_pollset_maybe_work_and_unlock(grpc_exec_ctx *exec_ctx,
-                                                grpc_pollset *pollset,
-                                                grpc_pollset_worker *worker,
-                                                gpr_timespec deadline,
-                                                gpr_timespec now) {
-#define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
-#define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
-
-  struct pollfd pfd[3];
-  grpc_fd *fd;
-  grpc_fd_watcher fd_watcher;
-  int timeout;
-  int r;
-  nfds_t nfds;
-
-  fd = pollset->data.ptr;
-  if (fd && fd_is_orphaned(fd)) {
-    GRPC_FD_UNREF(fd, "basicpoll");
-    fd = pollset->data.ptr = NULL;
-  }
-  timeout = poll_deadline_to_millis_timeout(deadline, now);
-  pfd[0].fd = GRPC_WAKEUP_FD_GET_READ_FD(&grpc_global_wakeup_fd);
-  pfd[0].events = POLLIN;
-  pfd[0].revents = 0;
-  pfd[1].fd = GRPC_WAKEUP_FD_GET_READ_FD(&worker->wakeup_fd->fd);
-  pfd[1].events = POLLIN;
-  pfd[1].revents = 0;
-  nfds = 2;
-  if (fd) {
-    pfd[2].fd = fd->fd;
-    pfd[2].revents = 0;
-    GRPC_FD_REF(fd, "basicpoll_begin");
-    gpr_mu_unlock(pollset->mu);
-    pfd[2].events =
-        (short)fd_begin_poll(fd, pollset, worker, POLLIN, POLLOUT, &fd_watcher);
-    if (pfd[2].events != 0) {
-      nfds++;
-    }
-  } else {
-    gpr_mu_unlock(pollset->mu);
-  }
-
-  /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
-     even going into the blocking annotation if possible */
-  /* poll fd count (argument 2) is shortened by one if we have no events
-     to poll on - such that it only includes the kicker */
-  GPR_TIMER_BEGIN("poll", 0);
-  GRPC_SCHEDULING_START_BLOCKING_REGION;
-  r = grpc_poll_function(pfd, nfds, timeout);
-  GRPC_SCHEDULING_END_BLOCKING_REGION;
-  GPR_TIMER_END("poll", 0);
-
-  if (r < 0) {
-    if (errno != EINTR) {
-      gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno));
-    }
-    if (fd) {
-      fd_end_poll(exec_ctx, &fd_watcher, 0, 0);
-    }
-  } else if (r == 0) {
-    if (fd) {
-      fd_end_poll(exec_ctx, &fd_watcher, 0, 0);
-    }
-  } else {
-    if (pfd[0].revents & POLLIN_CHECK) {
-      grpc_wakeup_fd_consume_wakeup(&grpc_global_wakeup_fd);
-    }
-    if (pfd[1].revents & POLLIN_CHECK) {
-      grpc_wakeup_fd_consume_wakeup(&worker->wakeup_fd->fd);
-    }
-    if (nfds > 2) {
-      fd_end_poll(exec_ctx, &fd_watcher, pfd[2].revents & POLLIN_CHECK,
-                  pfd[2].revents & POLLOUT_CHECK);
-    } else if (fd) {
-      fd_end_poll(exec_ctx, &fd_watcher, 0, 0);
-    }
-  }
-
-  if (fd) {
-    GRPC_FD_UNREF(fd, "basicpoll_begin");
-  }
-}
-
-static void basic_pollset_destroy(grpc_pollset *pollset) {
-  if (pollset->data.ptr != NULL) {
-    GRPC_FD_UNREF(pollset->data.ptr, "basicpoll");
-    pollset->data.ptr = NULL;
-  }
-}
-
-static const grpc_pollset_vtable basic_pollset = {
-    basic_pollset_add_fd, basic_pollset_maybe_work_and_unlock,
-    basic_pollset_destroy, basic_pollset_destroy};
-
-static void become_basic_pollset(grpc_pollset *pollset, grpc_fd *fd_or_null) {
-  pollset->vtable = &basic_pollset;
-  pollset->data.ptr = fd_or_null;
-  if (fd_or_null != NULL) {
-    GRPC_FD_REF(fd_or_null, "basicpoll");
-  }
-}
-
-/*******************************************************************************
- * pollset_multipoller_with_poll_posix.c
- */
-
-typedef struct {
-  /* all polled fds */
-  size_t fd_count;
-  size_t fd_capacity;
-  grpc_fd **fds;
-  /* fds that have been removed from the pollset explicitly */
-  size_t del_count;
-  size_t del_capacity;
-  grpc_fd **dels;
-} poll_hdr;
-
-static void multipoll_with_poll_pollset_add_fd(grpc_exec_ctx *exec_ctx,
-                                               grpc_pollset *pollset,
-                                               grpc_fd *fd,
-                                               int and_unlock_pollset) {
-  size_t i;
-  poll_hdr *h = pollset->data.ptr;
-  /* TODO(ctiller): this is O(num_fds^2); maybe switch to a hash set here */
-  for (i = 0; i < h->fd_count; i++) {
-    if (h->fds[i] == fd) goto exit;
-  }
-  if (h->fd_count == h->fd_capacity) {
-    h->fd_capacity = GPR_MAX(h->fd_capacity + 8, h->fd_count * 3 / 2);
-    h->fds = gpr_realloc(h->fds, sizeof(grpc_fd *) * h->fd_capacity);
-  }
-  h->fds[h->fd_count++] = fd;
-  GRPC_FD_REF(fd, "multipoller");
-exit:
-  if (and_unlock_pollset) {
-    gpr_mu_unlock(pollset->mu);
-  }
-}
-
-static void multipoll_with_poll_pollset_maybe_work_and_unlock(
-    grpc_exec_ctx *exec_ctx, grpc_pollset *pollset, grpc_pollset_worker *worker,
-    gpr_timespec deadline, gpr_timespec now) {
-#define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
-#define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
-
-  int timeout;
-  int r;
-  size_t i, j, fd_count;
-  nfds_t pfd_count;
-  poll_hdr *h;
-  /* TODO(ctiller): inline some elements to avoid an allocation */
-  grpc_fd_watcher *watchers;
-  struct pollfd *pfds;
-
-  h = pollset->data.ptr;
-  timeout = poll_deadline_to_millis_timeout(deadline, now);
-  /* TODO(ctiller): perform just one malloc here if we exceed the inline case */
-  pfds = gpr_malloc(sizeof(*pfds) * (h->fd_count + 2));
-  watchers = gpr_malloc(sizeof(*watchers) * (h->fd_count + 2));
-  fd_count = 0;
-  pfd_count = 2;
-  pfds[0].fd = GRPC_WAKEUP_FD_GET_READ_FD(&grpc_global_wakeup_fd);
-  pfds[0].events = POLLIN;
-  pfds[0].revents = 0;
-  pfds[1].fd = GRPC_WAKEUP_FD_GET_READ_FD(&worker->wakeup_fd->fd);
-  pfds[1].events = POLLIN;
-  pfds[1].revents = 0;
-  for (i = 0; i < h->fd_count; i++) {
-    int remove = fd_is_orphaned(h->fds[i]);
-    for (j = 0; !remove && j < h->del_count; j++) {
-      if (h->fds[i] == h->dels[j]) remove = 1;
-    }
-    if (remove) {
-      GRPC_FD_UNREF(h->fds[i], "multipoller");
-    } else {
-      h->fds[fd_count++] = h->fds[i];
-      watchers[pfd_count].fd = h->fds[i];
-      pfds[pfd_count].fd = h->fds[i]->fd;
-      pfds[pfd_count].revents = 0;
-      pfd_count++;
-    }
-  }
-  for (j = 0; j < h->del_count; j++) {
-    GRPC_FD_UNREF(h->dels[j], "multipoller_del");
-  }
-  h->del_count = 0;
-  h->fd_count = fd_count;
-  gpr_mu_unlock(pollset->mu);
-
-  for (i = 2; i < pfd_count; i++) {
-    pfds[i].events = (short)fd_begin_poll(watchers[i].fd, pollset, worker,
-                                          POLLIN, POLLOUT, &watchers[i]);
-  }
-
-  /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
-     even going into the blocking annotation if possible */
-  GRPC_SCHEDULING_START_BLOCKING_REGION;
-  r = grpc_poll_function(pfds, pfd_count, timeout);
-  GRPC_SCHEDULING_END_BLOCKING_REGION;
-
-  if (r < 0) {
-    if (errno != EINTR) {
-      gpr_log(GPR_ERROR, "poll() failed: %s", strerror(errno));
-    }
-    for (i = 2; i < pfd_count; i++) {
-      fd_end_poll(exec_ctx, &watchers[i], 0, 0);
-    }
-  } else if (r == 0) {
-    for (i = 2; i < pfd_count; i++) {
-      fd_end_poll(exec_ctx, &watchers[i], 0, 0);
-    }
-  } else {
-    if (pfds[0].revents & POLLIN_CHECK) {
-      grpc_wakeup_fd_consume_wakeup(&grpc_global_wakeup_fd);
-    }
-    if (pfds[1].revents & POLLIN_CHECK) {
-      grpc_wakeup_fd_consume_wakeup(&worker->wakeup_fd->fd);
-    }
-    for (i = 2; i < pfd_count; i++) {
-      if (watchers[i].fd == NULL) {
-        fd_end_poll(exec_ctx, &watchers[i], 0, 0);
-        continue;
-      }
-      fd_end_poll(exec_ctx, &watchers[i], pfds[i].revents & POLLIN_CHECK,
-                  pfds[i].revents & POLLOUT_CHECK);
-    }
-  }
-
-  gpr_free(pfds);
-  gpr_free(watchers);
-}
-
-static void multipoll_with_poll_pollset_finish_shutdown(grpc_pollset *pollset) {
-  size_t i;
-  poll_hdr *h = pollset->data.ptr;
-  for (i = 0; i < h->fd_count; i++) {
-    GRPC_FD_UNREF(h->fds[i], "multipoller");
-  }
-  for (i = 0; i < h->del_count; i++) {
-    GRPC_FD_UNREF(h->dels[i], "multipoller_del");
-  }
-  h->fd_count = 0;
-  h->del_count = 0;
-}
-
-static void multipoll_with_poll_pollset_destroy(grpc_pollset *pollset) {
-  poll_hdr *h = pollset->data.ptr;
-  multipoll_with_poll_pollset_finish_shutdown(pollset);
-  gpr_free(h->fds);
-  gpr_free(h->dels);
-  gpr_free(h);
-}
-
-static const grpc_pollset_vtable multipoll_with_poll_pollset = {
-    multipoll_with_poll_pollset_add_fd,
-    multipoll_with_poll_pollset_maybe_work_and_unlock,
-    multipoll_with_poll_pollset_finish_shutdown,
-    multipoll_with_poll_pollset_destroy};
-
-static void poll_become_multipoller(grpc_exec_ctx *exec_ctx,
-                                    grpc_pollset *pollset, grpc_fd **fds,
-                                    size_t nfds) {
-  size_t i;
-  poll_hdr *h = gpr_malloc(sizeof(poll_hdr));
-  pollset->vtable = &multipoll_with_poll_pollset;
-  pollset->data.ptr = h;
-  h->fd_count = nfds;
-  h->fd_capacity = nfds;
-  h->fds = gpr_malloc(nfds * sizeof(grpc_fd *));
-  h->del_count = 0;
-  h->del_capacity = 0;
-  h->dels = NULL;
-  for (i = 0; i < nfds; i++) {
-    h->fds[i] = fds[i];
-    GRPC_FD_REF(fds[i], "multipoller");
-  }
-}
-
 /*******************************************************************************
  * pollset_set_posix.c
  */
@@ -1599,10 +1181,7 @@ static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx,
  * event engine binding
  */
 
-static void shutdown_engine(void) {
-  fd_global_shutdown();
-  pollset_global_shutdown();
-}
+static void shutdown_engine(void) { pollset_global_shutdown(); }
 
 static const grpc_event_engine_vtable vtable = {
     .pollset_size = sizeof(grpc_pollset),
@@ -1637,7 +1216,6 @@ static const grpc_event_engine_vtable vtable = {
 };
 
 const grpc_event_engine_vtable *grpc_init_poll_posix(void) {
-  fd_global_init();
   pollset_global_init();
   return &vtable;
 }
diff --git a/src/core/iomgr/ev_posix.c b/src/core/iomgr/ev_posix.c
index 127ab4b181..d7681769c3 100644
--- a/src/core/iomgr/ev_posix.c
+++ b/src/core/iomgr/ev_posix.c
@@ -44,6 +44,16 @@
 #include "src/core/iomgr/ev_poll_posix.h"
 #include "src/core/support/env.h"
 
+/** Default poll() function - a pointer so that it can be overridden by some
+ *  tests */
+grpc_poll_function_type grpc_poll_function = poll;
+
+/** The alarm system needs to be able to wakeup 'some poller' sometimes
+ *  (specifically when a new alarm needs to be triggered earlier than the next
+ *  alarm 'epoch').
+ *  This wakeup_fd gives us something to alert on when such a case occurs. */
+grpc_wakeup_fd grpc_global_wakeup_fd;
+
 static const grpc_event_engine_vtable *g_event_engine;
 
 typedef const grpc_event_engine_vtable *(*event_engine_factory_fn)(void);
diff --git a/src/core/iomgr/ev_posix.h b/src/core/iomgr/ev_posix.h
index bfd216d3f3..9d1f64652d 100644
--- a/src/core/iomgr/ev_posix.h
+++ b/src/core/iomgr/ev_posix.h
@@ -34,9 +34,12 @@
 #ifndef GRPC_INTERNAL_CORE_IOMGR_EV_POSIX_H
 #define GRPC_INTERNAL_CORE_IOMGR_EV_POSIX_H
 
+#include <poll.h>
+
 #include "src/core/iomgr/exec_ctx.h"
 #include "src/core/iomgr/pollset.h"
 #include "src/core/iomgr/pollset_set.h"
+#include "src/core/iomgr/wakeup_fd_posix.h"
 
 typedef struct grpc_fd grpc_fd;
 
@@ -147,4 +150,9 @@ void grpc_pollset_set_add_fd(grpc_exec_ctx *exec_ctx,
 void grpc_pollset_set_del_fd(grpc_exec_ctx *exec_ctx,
                              grpc_pollset_set *pollset_set, grpc_fd *fd);
 
+/* override to allow tests to hook poll() usage */
+typedef int (*grpc_poll_function_type)(struct pollfd *, nfds_t, int);
+extern grpc_poll_function_type grpc_poll_function;
+extern grpc_wakeup_fd grpc_global_wakeup_fd;
+
 #endif  // GRPC_INTERNAL_CORE_IOMGR_EV_POSIX_H
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 46b748ef36..2629b82aff 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -114,6 +114,7 @@ CORE_SOURCE_FILES = [
   'src/core/iomgr/endpoint_pair_posix.c',
   'src/core/iomgr/endpoint_pair_windows.c',
   'src/core/iomgr/ev_poll_and_epoll_posix.c',
+  'src/core/iomgr/ev_poll_posix.c',
   'src/core/iomgr/ev_posix.c',
   'src/core/iomgr/exec_ctx.c',
   'src/core/iomgr/executor.c',
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 863f8113af..544106eefc 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -812,6 +812,7 @@ src/core/iomgr/closure.h \
 src/core/iomgr/endpoint.h \
 src/core/iomgr/endpoint_pair.h \
 src/core/iomgr/ev_poll_and_epoll_posix.h \
+src/core/iomgr/ev_poll_posix.h \
 src/core/iomgr/ev_posix.h \
 src/core/iomgr/exec_ctx.h \
 src/core/iomgr/executor.h \
@@ -949,6 +950,7 @@ src/core/iomgr/endpoint.c \
 src/core/iomgr/endpoint_pair_posix.c \
 src/core/iomgr/endpoint_pair_windows.c \
 src/core/iomgr/ev_poll_and_epoll_posix.c \
+src/core/iomgr/ev_poll_posix.c \
 src/core/iomgr/ev_posix.c \
 src/core/iomgr/exec_ctx.c \
 src/core/iomgr/executor.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index e0c31db75e..0d3d97a829 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -3773,6 +3773,7 @@
       "src/core/iomgr/endpoint.h", 
       "src/core/iomgr/endpoint_pair.h", 
       "src/core/iomgr/ev_poll_and_epoll_posix.h", 
+      "src/core/iomgr/ev_poll_posix.h", 
       "src/core/iomgr/ev_posix.h", 
       "src/core/iomgr/exec_ctx.h", 
       "src/core/iomgr/executor.h", 
@@ -3973,6 +3974,8 @@
       "src/core/iomgr/endpoint_pair_windows.c", 
       "src/core/iomgr/ev_poll_and_epoll_posix.c", 
       "src/core/iomgr/ev_poll_and_epoll_posix.h", 
+      "src/core/iomgr/ev_poll_posix.c", 
+      "src/core/iomgr/ev_poll_posix.h", 
       "src/core/iomgr/ev_posix.c", 
       "src/core/iomgr/ev_posix.h", 
       "src/core/iomgr/exec_ctx.c", 
@@ -4325,6 +4328,7 @@
       "src/core/iomgr/endpoint.h", 
       "src/core/iomgr/endpoint_pair.h", 
       "src/core/iomgr/ev_poll_and_epoll_posix.h", 
+      "src/core/iomgr/ev_poll_posix.h", 
       "src/core/iomgr/ev_posix.h", 
       "src/core/iomgr/exec_ctx.h", 
       "src/core/iomgr/executor.h", 
@@ -4509,6 +4513,8 @@
       "src/core/iomgr/endpoint_pair_windows.c", 
       "src/core/iomgr/ev_poll_and_epoll_posix.c", 
       "src/core/iomgr/ev_poll_and_epoll_posix.h", 
+      "src/core/iomgr/ev_poll_posix.c", 
+      "src/core/iomgr/ev_poll_posix.h", 
       "src/core/iomgr/ev_posix.c", 
       "src/core/iomgr/ev_posix.h", 
       "src/core/iomgr/exec_ctx.c", 
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 8e0a5e8b94..fe77cea933 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -321,6 +321,7 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\endpoint.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\endpoint_pair.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\exec_ctx.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\executor.h" />
@@ -501,6 +502,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\exec_ctx.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 002379de62..0ecb2c636a 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -124,6 +124,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.c">
       <Filter>src\core\iomgr</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.c">
+      <Filter>src\core\iomgr</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.c">
       <Filter>src\core\iomgr</Filter>
     </ClCompile>
@@ -632,6 +635,9 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.h">
       <Filter>src\core\iomgr</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.h">
+      <Filter>src\core\iomgr</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.h">
       <Filter>src\core\iomgr</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 770eae403b..545aabb061 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -311,6 +311,7 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\endpoint.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\endpoint_pair.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\exec_ctx.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\executor.h" />
@@ -479,6 +480,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\exec_ctx.c">
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 09167ab050..f6a69a307e 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -127,6 +127,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.c">
       <Filter>src\core\iomgr</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.c">
+      <Filter>src\core\iomgr</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.c">
       <Filter>src\core\iomgr</Filter>
     </ClCompile>
@@ -569,6 +572,9 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_and_epoll_posix.h">
       <Filter>src\core\iomgr</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_poll_posix.h">
+      <Filter>src\core\iomgr</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\iomgr\ev_posix.h">
       <Filter>src\core\iomgr</Filter>
     </ClInclude>
-- 
GitLab


From b38197e0ccd1af098855f4a036ff55b58ceced38 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 26 Feb 2016 10:14:54 -0800
Subject: [PATCH 011/525] Progress on poll() based poller

---
 src/core/iomgr/ev_poll_and_epoll_posix.c |     4 +-
 src/core/iomgr/ev_poll_posix.c           |     5 +-
 src/core/iomgr/iomgr_posix.c             |     4 +-
 test/core/end2end/gen_build_yaml.py      |    24 +-
 test/core/util/port_posix.c              |     3 +-
 tools/run_tests/run_tests.py             |   104 +-
 tools/run_tests/tests.json               | 36637 +++------------------
 7 files changed, 4192 insertions(+), 32589 deletions(-)

diff --git a/src/core/iomgr/ev_poll_and_epoll_posix.c b/src/core/iomgr/ev_poll_and_epoll_posix.c
index 5ff02bb216..a1e0442a42 100644
--- a/src/core/iomgr/ev_poll_and_epoll_posix.c
+++ b/src/core/iomgr/ev_poll_and_epoll_posix.c
@@ -788,7 +788,6 @@ static void pollset_kick(grpc_pollset *p,
 static void pollset_global_init(void) {
   gpr_tls_init(&g_current_thread_poller);
   gpr_tls_init(&g_current_thread_worker);
-  grpc_wakeup_fd_global_init();
   grpc_wakeup_fd_init(&grpc_global_wakeup_fd);
 }
 
@@ -796,7 +795,6 @@ static void pollset_global_shutdown(void) {
   grpc_wakeup_fd_destroy(&grpc_global_wakeup_fd);
   gpr_tls_destroy(&g_current_thread_poller);
   gpr_tls_destroy(&g_current_thread_worker);
-  grpc_wakeup_fd_global_destroy();
 }
 
 static void kick_poller(void) { grpc_wakeup_fd_wakeup(&grpc_global_wakeup_fd); }
@@ -1881,8 +1879,8 @@ static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx,
  */
 
 static void shutdown_engine(void) {
-  fd_global_shutdown();
   pollset_global_shutdown();
+  fd_global_shutdown();
 }
 
 static const grpc_event_engine_vtable vtable = {
diff --git a/src/core/iomgr/ev_poll_posix.c b/src/core/iomgr/ev_poll_posix.c
index 989461f2ae..8878aa61bc 100644
--- a/src/core/iomgr/ev_poll_posix.c
+++ b/src/core/iomgr/ev_poll_posix.c
@@ -290,6 +290,7 @@ static void unref_by(grpc_fd *fd, int n) {
   old = gpr_atm_full_fetch_add(&fd->refst, -n);
   if (old == n) {
     gpr_mu_destroy(&fd->mu);
+    grpc_iomgr_unregister_object(&fd->iomgr_object);
     gpr_free(fd);
   } else {
     GPR_ASSERT(old > n);
@@ -692,7 +693,6 @@ static void pollset_kick(grpc_pollset *p,
 static void pollset_global_init(void) {
   gpr_tls_init(&g_current_thread_poller);
   gpr_tls_init(&g_current_thread_worker);
-  grpc_wakeup_fd_global_init();
   grpc_wakeup_fd_init(&grpc_global_wakeup_fd);
 }
 
@@ -700,7 +700,6 @@ static void pollset_global_shutdown(void) {
   grpc_wakeup_fd_destroy(&grpc_global_wakeup_fd);
   gpr_tls_destroy(&g_current_thread_poller);
   gpr_tls_destroy(&g_current_thread_worker);
-  grpc_wakeup_fd_global_destroy();
 }
 
 static void kick_poller(void) { grpc_wakeup_fd_wakeup(&grpc_global_wakeup_fd); }
@@ -719,7 +718,9 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
   pollset->local_wakeup_cache = NULL;
   pollset->kicked_without_pollers = 0;
   pollset->fd_count = 0;
+  pollset->fd_capacity = 0;
   pollset->del_count = 0;
+  pollset->del_capacity = 0;
   pollset->fds = NULL;
   pollset->dels = NULL;
 }
diff --git a/src/core/iomgr/iomgr_posix.c b/src/core/iomgr/iomgr_posix.c
index baf3bd5db8..e56f415493 100644
--- a/src/core/iomgr/iomgr_posix.c
+++ b/src/core/iomgr/iomgr_posix.c
@@ -39,14 +39,16 @@
 #include "src/core/iomgr/ev_posix.h"
 #include "src/core/iomgr/iomgr_posix.h"
 #include "src/core/iomgr/tcp_posix.h"
+#include "src/core/iomgr/wakeup_fd_posix.h"
 
 void grpc_iomgr_platform_init(void) {
+  grpc_wakeup_fd_global_init();
   grpc_event_engine_init();
   grpc_register_tracer("tcp", &grpc_tcp_trace);
 }
 
 void grpc_iomgr_platform_flush(void) {}
 
-void grpc_iomgr_platform_shutdown(void) { grpc_event_engine_shutdown(); }
+void grpc_iomgr_platform_shutdown(void) { grpc_event_engine_shutdown(); grpc_wakeup_fd_global_destroy(); }
 
 #endif /* GRPC_POSIX_SOCKET */
diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py
index 971457ddcf..330d153415 100755
--- a/test/core/end2end/gen_build_yaml.py
+++ b/test/core/end2end/gen_build_yaml.py
@@ -47,15 +47,6 @@ default_secure_fixture_options = default_unsecure_fixture_options._replace(secur
 uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'])
 
 
-# map a platform to available polling strategies
-POLLING_STRATEGY = {
-'windows': ['all'],
-'linux': ['poll', 'legacy'],
-'mac': ['poll'],
-'posix': ['poll'],
-}
-
-
 # maps fixture name to whether it requires the security library
 END2END_FIXTURES = {
     'h2_compress': default_unsecure_fixture_options,
@@ -250,22 +241,17 @@ def main():
           {
               'name': '%s_test' % f,
               'args': [t],
-              'env': {
-                'GRPC_POLL_STRATEGY': poll_strategy
-              },
               'exclude_configs': [],
-              'platforms': [platform],
-              'ci_platforms': [platform],
+              'platforms': END2END_FIXTURES[f].platforms,
+              'ci_platforms': (END2END_FIXTURES[f].platforms
+                               if END2END_FIXTURES[f].ci_mac else without(
+                                   END2END_FIXTURES[f].platforms, 'mac')),
               'flaky': False,
               'language': 'c',
               'cpu_cost': END2END_TESTS[t].cpu_cost,
           }
           for f in sorted(END2END_FIXTURES.keys())
-          for t in sorted(END2END_TESTS.keys())
-          for platform in sorted(END2END_FIXTURES[f].platforms)
-          for poll_strategy in POLLING_STRATEGY[platform]
-          if compatible(f, t)
-          and (END2END_FIXTURES[f].ci_mac or platform != 'mac')
+          for t in sorted(END2END_TESTS.keys()) if compatible(f, t)
       ] + [
           {
               'name': '%s_nosec_test' % f,
diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c
index ba382d242a..7b6429572e 100644
--- a/test/core/util/port_posix.c
+++ b/test/core/util/port_posix.c
@@ -77,7 +77,6 @@ typedef struct freereq {
 static void destroy_pollset_and_shutdown(grpc_exec_ctx *exec_ctx, void *p,
                                          bool success) {
   grpc_pollset_destroy(p);
-  grpc_shutdown();
 }
 
 static void freed_port_from_server(grpc_exec_ctx *exec_ctx, void *arg,
@@ -130,6 +129,8 @@ static void free_port_using_server(char *server, int port) {
   grpc_exec_ctx_finish(&exec_ctx);
   gpr_free(pr.pollset);
   gpr_free(path);
+
+  grpc_shutdown();
 }
 
 static void free_chosen_ports() {
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 30a398e3fc..106f6bea39 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -149,58 +149,60 @@ class CLanguage(object):
   def test_specs(self):
     out = []
     binaries = get_c_tests(self.args.travis, self.test_lang)
-    for target in binaries:
-      if self.config.build_config in target['exclude_configs']:
-        continue
-      if self.platform == 'windows':
-        binary = 'vsprojects/%s%s/%s.exe' % (
-            'x64/' if self.args.arch == 'x64' else '',
-            _MSBUILD_CONFIG[self.config.build_config],
-            target['name'])
-      else:
-        binary = 'bins/%s/%s' % (self.config.build_config, target['name'])
-      env = {}
-      shortname_ext = ''
-      if 'env' in target:
-        tenv = target['env']
-        env.update(tenv)
-        shortname_ext += ' '
-        shortname_ext += ' '.join('%s=%s' % (key, tenv[key]) for key in sorted(tenv.keys()))
-      env['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH'] = (
-          _ROOT + '/src/core/tsi/test_creds/ca.pem')
-      if os.path.isfile(binary):
-        if 'gtest' in target and target['gtest']:
-          # here we parse the output of --gtest_list_tests to build up a
-          # complete list of the tests contained in a binary
-          # for each test, we then add a job to run, filtering for just that
-          # test
-          with open(os.devnull, 'w') as fnull:
-            tests = subprocess.check_output([binary, '--gtest_list_tests'],
-                                            stderr=fnull)
-          base = None
-          for line in tests.split('\n'):
-            i = line.find('#')
-            if i >= 0: line = line[:i]
-            if not line: continue
-            if line[0] != ' ':
-              base = line.strip()
-            else:
-              assert base is not None
-              assert line[1] == ' '
-              test = base + line.strip()
-              cmdline = [binary] + ['--gtest_filter=%s' % test]
-              out.append(self.config.job_spec(cmdline, [binary],
-                                              shortname='%s:%s %s' % (binary, test, shortname_ext),
-                                              cpu_cost=target['cpu_cost'],
-                                              environ=env))
+    POLLING_STRATEGIES = {
+      'windows': ['all'],
+      'mac': ['all'],
+      'posix': ['all'],
+      'linux': ['poll', 'legacy']
+    }
+    for polling_strategy in POLLING_STRATEGIES[self.platform]:
+      env={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
+               _ROOT + '/src/core/tsi/test_creds/ca.pem',
+           'GRPC_POLLING_STRATEGY': polling_strategy}
+      shortname_ext = '' if polling_strategy=='all' else ' polling=%s' % polling_strategy
+      for target in binaries:
+        if self.config.build_config in target['exclude_configs']:
+          continue
+        if self.platform == 'windows':
+          binary = 'vsprojects/%s%s/%s.exe' % (
+              'x64/' if self.args.arch == 'x64' else '',
+              _MSBUILD_CONFIG[self.config.build_config],
+              target['name'])
         else:
-          cmdline = [binary] + target['args']
-          out.append(self.config.job_spec(cmdline, [binary],
-                                          shortname=' '.join(cmdline) + shortname_ext,
-                                          cpu_cost=target['cpu_cost'],
-                                          environ=env))
-      elif self.args.regex == '.*' or self.platform == 'windows':
-        print '\nWARNING: binary not found, skipping', binary
+          binary = 'bins/%s/%s' % (self.config.build_config, target['name'])
+        if os.path.isfile(binary):
+          if 'gtest' in target and target['gtest']:
+            # here we parse the output of --gtest_list_tests to build up a
+            # complete list of the tests contained in a binary
+            # for each test, we then add a job to run, filtering for just that
+            # test
+            with open(os.devnull, 'w') as fnull:
+              tests = subprocess.check_output([binary, '--gtest_list_tests'],
+                                              stderr=fnull)
+            base = None
+            for line in tests.split('\n'):
+              i = line.find('#')
+              if i >= 0: line = line[:i]
+              if not line: continue
+              if line[0] != ' ':
+                base = line.strip()
+              else:
+                assert base is not None
+                assert line[1] == ' '
+                test = base + line.strip()
+                cmdline = [binary] + ['--gtest_filter=%s' % test]
+                out.append(self.config.job_spec(cmdline, [binary],
+                                                shortname='%s:%s' % (binary, test, shortname_ext),
+                                                cpu_cost=target['cpu_cost'],
+                                                environ=env))
+          else:
+            cmdline = [binary] + target['args']
+            out.append(self.config.job_spec(cmdline, [binary],
+                                            shortname=' '.join(cmdline) + shortname_ext,
+                                            cpu_cost=target['cpu_cost'],
+                                            environ=env))
+        elif self.args.regex == '.*' or self.platform == 'windows':
+          print '\nWARNING: binary not found, skipping', binary
     return sorted(out)
 
   def make_targets(self):
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index dbc24462b6..629891a847 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -4172,834 +4172,966 @@
       "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "default_host"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "empty_batch"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "large_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "no_op"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "request_with_payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "simple_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_census_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "call_creds"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
@@ -5008,18 +5140,21 @@
       "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -5027,834 +5162,949 @@
       "compressed_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "default_host"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "disappearing_server"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "no_op"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "default_host"
+      "payload"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "ping"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "request_with_flags"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_compress_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "binary_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "default_host"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "hpack_size"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
@@ -5863,18 +6113,20 @@
       "invoke_large_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -5882,834 +6134,948 @@
       "large_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "negative_deadline"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "ping"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "registered_call"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows"
-    ]
-  }, 
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
-      "max_message_length"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_fakesec_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "bad_hostname"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "connectivity"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "default_host"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "max_message_length"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "no_op"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "ping"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
@@ -6718,18 +7084,21 @@
       "registered_call"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -6737,835 +7106,757 @@
       "request_with_flags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "binary_metadata"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "call_creds"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "mac"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "mac"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "default_host"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "disappearing_server"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "mac"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "hpack_size"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "mac"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "posix"
+      "linux"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "negative_deadline"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "no_op"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "mac"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "ping"
     ], 
     "ci_platforms": [
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "registered_call"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "request_with_flags"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "mac"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "posix"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
       "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
       "linux"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
       "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "mac"
+      "linux"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -7573,18 +7864,15 @@
       "trailing_metadata"
     ], 
     "ci_platforms": [
-      "windows"
+      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_census_test", 
+    "name": "h2_full+pipe_test", 
     "platforms": [
-      "windows"
+      "linux"
     ]
   }, 
   {
@@ -7592,30209 +7880,986 @@
       "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "default_host"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "empty_batch"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_compress_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_compress_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_fakesec_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_full+pipe_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_oauth2_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair+trace_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_sockpair_1byte_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "compressed_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "connectivity"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "hpack_size"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_concurrent_streams"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_flags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_before_invoke"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_in_a_vacuum"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_with_status"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "default_host"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "disappearing_server"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "empty_batch"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "graceful_server_shutdown"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "high_initial_seqno"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "invoke_large_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "large_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "max_message_length"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "negative_deadline"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "no_op"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "ping_pong_streaming"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "registered_call"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "request_with_payload"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "server_finishes_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_calls"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "shutdown_finishes_tags"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_delayed_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "simple_request"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "trailing_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_ssl_proxy_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "bad_hostname"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "posix"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
+      "windows", 
+      "linux", 
       "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "binary_metadata"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "call_creds"
-    ], 
-    "ci_platforms": [
-      "linux"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "large_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "max_message_length"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "mac"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "mac"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_client_done"
+      "negative_deadline"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
-    ], 
-    "ci_platforms": [
-      "windows"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "windows"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
-    ], 
-    "ci_platforms": [
-      "linux"
-    ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "h2_uchannel_test", 
-    "platforms": [
-      "linux"
-    ]
-  }, 
-  {
-    "args": [
-      "cancel_after_invoke"
+      "no_op"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "ping"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "request_with_payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "simple_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_oauth2_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "call_creds"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "default_host"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -37802,683 +8867,755 @@
       "empty_batch"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "negative_deadline"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "no_op"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "request_with_payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "simple_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "call_creds"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -38486,721 +9623,821 @@
       "max_message_length"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "no_op"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "registered_call"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "binary_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "max_message_length"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "no_op"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "registered_call"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -39208,740 +10445,826 @@
       "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair+trace_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "binary_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "no_op"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "all"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uchannel_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "windows"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "bad_hostname"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "binary_metadata"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_sockpair_1byte_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -39949,892 +11272,1020 @@
       "call_creds"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "call_creds"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_accept"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "connectivity"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_client_done"
+      "default_host"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_after_invoke"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_before_invoke"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "no_op"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_in_a_vacuum"
+      "payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "ping"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "cancel_with_status"
+      "request_with_flags"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "compressed_payload"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "connectivity"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "disappearing_server"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "empty_batch"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "default_host"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "graceful_server_shutdown"
+      "empty_batch"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -40842,1557 +12293,1718 @@
       "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "high_initial_seqno"
+      "large_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "no_op"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "hpack_size"
+      "payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "invoke_large_request"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "large_metadata"
+      "simple_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_ssl_proxy_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_concurrent_streams"
+      "binary_metadata"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "call_creds"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "max_message_length"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "negative_deadline"
+      "compressed_payload"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "no_op"
+      "hpack_size"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "payload"
+      "max_message_length"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "no_op"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "request_with_flags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "ping_pong_streaming"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "mac"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "registered_call"
+      "simple_request"
     ], 
     "ci_platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
+      "windows", 
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "trailing_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
-    "name": "h2_uds_test", 
+    "name": "h2_uchannel_test", 
     "platforms": [
-      "linux"
+      "windows", 
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "bad_hostname"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "binary_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_flags"
+      "call_creds"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "cancel_after_accept"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "cancel_after_client_done"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "cancel_after_invoke"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "request_with_payload"
+      "cancel_before_invoke"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "cancel_in_a_vacuum"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "cancel_with_status"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "compressed_payload"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "server_finishes_request"
+      "connectivity"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "disappearing_server"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "empty_batch"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "graceful_server_shutdown"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_calls"
+      "high_initial_seqno"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "hpack_size"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "invoke_large_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "large_metadata"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "shutdown_finishes_tags"
+      "max_concurrent_streams"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "max_message_length"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "negative_deadline"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "no_op"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 1.0, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_delayed_request"
+      "payload"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "ping"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "ping_pong_streaming"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "registered_call"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_metadata"
+      "request_with_flags"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "request_with_payload"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "server_finishes_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "shutdown_finishes_calls"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "simple_request"
+      "shutdown_finishes_tags"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "simple_delayed_request"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
-    "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
+    "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "simple_metadata"
     ], 
     "ci_platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "legacy"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "linux"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
     "args": [
-      "trailing_metadata"
+      "simple_request"
     ], 
     "ci_platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
-      "mac"
+      "linux", 
+      "mac", 
+      "posix"
     ]
   }, 
   {
@@ -42400,17 +14012,18 @@
       "trailing_metadata"
     ], 
     "ci_platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "env": {
-      "GRPC_POLL_STRATEGY": "poll"
-    }, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_uds_test", 
     "platforms": [
+      "linux", 
+      "mac", 
       "posix"
     ]
   }, 
-- 
GitLab


From d2ee81fcd4b1e9dd6f7dbfefc796de7dd20d0b5e Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 26 Feb 2016 11:10:33 -0800
Subject: [PATCH 012/525] Created a Node grpc plugin

---
 BUILD                                         |  15 +
 Makefile                                      |  37 ++-
 build.yaml                                    |  12 +
 src/compiler/generator_helpers.h              |  10 +
 src/compiler/node_generator.cc                | 273 ++++++++++++++++++
 src/compiler/node_generator.h                 |  49 ++++
 src/compiler/node_generator_helpers.h         |  50 ++++
 src/compiler/node_plugin.cc                   |  77 +++++
 tools/run_tests/sources_and_headers.json      |  16 +
 vsprojects/grpc_protoc_plugins.sln            |  16 +
 .../grpc_plugin_support.vcxproj               |   4 +
 .../grpc_plugin_support.vcxproj.filters       |   9 +
 12 files changed, 567 insertions(+), 1 deletion(-)
 create mode 100644 src/compiler/node_generator.cc
 create mode 100644 src/compiler/node_generator.h
 create mode 100644 src/compiler/node_generator_helpers.h
 create mode 100644 src/compiler/node_plugin.cc

diff --git a/BUILD b/BUILD
index b4db5d5678..3599a07bf6 100644
--- a/BUILD
+++ b/BUILD
@@ -1041,6 +1041,8 @@ cc_library(
     "src/compiler/csharp_generator.h",
     "src/compiler/csharp_generator_helpers.h",
     "src/compiler/generator_helpers.h",
+    "src/compiler/node_generator.h",
+    "src/compiler/node_generator_helpers.h",
     "src/compiler/objective_c_generator.h",
     "src/compiler/objective_c_generator_helpers.h",
     "src/compiler/python_generator.h",
@@ -1050,6 +1052,7 @@ cc_library(
     "src/compiler/ruby_generator_string-inl.h",
     "src/compiler/cpp_generator.cc",
     "src/compiler/csharp_generator.cc",
+    "src/compiler/node_generator.cc",
     "src/compiler/objective_c_generator.cc",
     "src/compiler/python_generator.cc",
     "src/compiler/ruby_generator.cc",
@@ -1588,6 +1591,18 @@ cc_binary(
 )
 
 
+cc_binary(
+  name = "grpc_node_plugin",
+  srcs = [
+    "src/compiler/node_plugin.cc",
+  ],
+  deps = [
+    "//external:protobuf_compiler",
+    ":grpc_plugin_support",
+  ],
+)
+
+
 cc_binary(
   name = "grpc_objective_c_plugin",
   srcs = [
diff --git a/Makefile b/Makefile
index 6c7febdabc..8e876e2b04 100644
--- a/Makefile
+++ b/Makefile
@@ -723,7 +723,7 @@ endif
 
 .SECONDARY = %.pb.h %.pb.cc
 
-PROTOC_PLUGINS = $(BINDIR)/$(CONFIG)/grpc_cpp_plugin $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(BINDIR)/$(CONFIG)/grpc_python_plugin $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
+PROTOC_PLUGINS = $(BINDIR)/$(CONFIG)/grpc_cpp_plugin $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(BINDIR)/$(CONFIG)/grpc_node_plugin $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(BINDIR)/$(CONFIG)/grpc_python_plugin $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
 ifeq ($(DEP_MISSING),)
 all: static shared plugins
 dep_error:
@@ -938,6 +938,7 @@ generic_end2end_test: $(BINDIR)/$(CONFIG)/generic_end2end_test
 grpc_cli: $(BINDIR)/$(CONFIG)/grpc_cli
 grpc_cpp_plugin: $(BINDIR)/$(CONFIG)/grpc_cpp_plugin
 grpc_csharp_plugin: $(BINDIR)/$(CONFIG)/grpc_csharp_plugin
+grpc_node_plugin: $(BINDIR)/$(CONFIG)/grpc_node_plugin
 grpc_objective_c_plugin: $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin
 grpc_python_plugin: $(BINDIR)/$(CONFIG)/grpc_python_plugin
 grpc_ruby_plugin: $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
@@ -2112,6 +2113,8 @@ else
 	$(Q) $(INSTALL) -d $(prefix)/bin
 	$(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_csharp_plugin $(prefix)/bin/grpc_csharp_plugin
 	$(Q) $(INSTALL) -d $(prefix)/bin
+	$(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_node_plugin $(prefix)/bin/grpc_node_plugin
+	$(Q) $(INSTALL) -d $(prefix)/bin
 	$(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_objective_c_plugin $(prefix)/bin/grpc_objective_c_plugin
 	$(Q) $(INSTALL) -d $(prefix)/bin
 	$(Q) $(INSTALL) $(BINDIR)/$(CONFIG)/grpc_python_plugin $(prefix)/bin/grpc_python_plugin
@@ -3372,6 +3375,7 @@ endif
 LIBGRPC_PLUGIN_SUPPORT_SRC = \
     src/compiler/cpp_generator.cc \
     src/compiler/csharp_generator.cc \
+    src/compiler/node_generator.cc \
     src/compiler/objective_c_generator.cc \
     src/compiler/python_generator.cc \
     src/compiler/ruby_generator.cc \
@@ -9617,6 +9621,37 @@ ifneq ($(NO_DEPS),true)
 endif
 
 
+GRPC_NODE_PLUGIN_SRC = \
+    src/compiler/node_plugin.cc \
+
+GRPC_NODE_PLUGIN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_NODE_PLUGIN_SRC))))
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/grpc_node_plugin: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/grpc_node_plugin: $(PROTOBUF_DEP) $(GRPC_NODE_PLUGIN_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a
+	$(E) "[HOSTLD]  Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(HOST_LDXX) $(HOST_LDFLAGS) $(GRPC_NODE_PLUGIN_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a $(HOST_LDLIBSXX) $(HOST_LDLIBS_PROTOC) $(HOST_LDLIBS) $(HOST_LDLIBS_PROTOC) -o $(BINDIR)/$(CONFIG)/grpc_node_plugin
+
+endif
+
+$(OBJDIR)/$(CONFIG)/src/compiler/node_plugin.o:  $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a
+
+deps_grpc_node_plugin: $(GRPC_NODE_PLUGIN_OBJS:.o=.dep)
+
+ifneq ($(NO_DEPS),true)
+-include $(GRPC_NODE_PLUGIN_OBJS:.o=.dep)
+endif
+
+
 GRPC_OBJECTIVE_C_PLUGIN_SRC = \
     src/compiler/objective_c_plugin.cc \
 
diff --git a/build.yaml b/build.yaml
index b639b5d21e..6462f7b9f6 100644
--- a/build.yaml
+++ b/build.yaml
@@ -756,6 +756,8 @@ libs:
   - src/compiler/csharp_generator.h
   - src/compiler/csharp_generator_helpers.h
   - src/compiler/generator_helpers.h
+  - src/compiler/node_generator.h
+  - src/compiler/node_generator_helpers.h
   - src/compiler/objective_c_generator.h
   - src/compiler/objective_c_generator_helpers.h
   - src/compiler/python_generator.h
@@ -766,6 +768,7 @@ libs:
   src:
   - src/compiler/cpp_generator.cc
   - src/compiler/csharp_generator.cc
+  - src/compiler/node_generator.cc
   - src/compiler/objective_c_generator.cc
   - src/compiler/python_generator.cc
   - src/compiler/ruby_generator.cc
@@ -2156,6 +2159,15 @@ targets:
   secure: false
   vs_config_type: Application
   vs_project_guid: '{3C813052-A49A-4662-B90A-1ADBEC7EE453}'
+- name: grpc_node_plugin
+  build: protoc
+  language: c++
+  src:
+  - src/compiler/node_plugin.cc
+  deps:
+  - grpc_plugin_support
+  secure: false
+  vs_config_type: Application
 - name: grpc_objective_c_plugin
   build: protoc
   language: c++
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index e1bb66a875..3ed0500efc 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -52,6 +52,16 @@ inline bool StripSuffix(grpc::string *filename, const grpc::string &suffix) {
   return false;
 }
 
+inline bool StripPrefix(grpc::string *name, const grpc::string &prefix) {
+  if (name->length() >= prefix.length()) {
+    if (name->substr(0, prefix.size()) == prefix) {
+      *name = name->substr(prefix.size());
+      return true;
+    }
+  }
+  return false;
+}
+
 inline grpc::string StripProto(grpc::string filename) {
   if (!StripSuffix(&filename, ".protodevel")) {
     StripSuffix(&filename, ".proto");
diff --git a/src/compiler/node_generator.cc b/src/compiler/node_generator.cc
new file mode 100644
index 0000000000..00db79cabb
--- /dev/null
+++ b/src/compiler/node_generator.cc
@@ -0,0 +1,273 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <map>
+
+#include "src/compiler/config.h"
+#include "src/compiler/generator_helpers.h"
+#include "src/compiler/node_generator_helpers.h"
+
+using grpc::protobuf::FileDescriptor;
+using grpc::protobuf::ServiceDescriptor;
+using grpc::protobuf::MethodDescriptor;
+using grpc::protobuf::Descriptor;
+using grpc::protobuf::io::Printer;
+using grpc::protobuf::io::StringOutputStream;
+using std::map;
+
+namespace grpc_node_generator {
+namespace {
+
+// Returns the alias we assign to the module of the given .proto filename
+// when importing. Copied entirely from
+// github:google/protobuf/src/google/protobuf/compiler/js/js_generator.cc#L154
+grpc::string ModuleAlias(const grpc::string filename) {
+  // This scheme could technically cause problems if a file includes any 2 of:
+  //   foo/bar_baz.proto
+  //   foo_bar_baz.proto
+  //   foo_bar/baz.proto
+  //
+  // We'll worry about this problem if/when we actually see it.  This name isn't
+  // exposed to users so we can change it later if we need to.
+  grpc::string basename = grpc_generator::StripProto(filename);
+  basename = grpc_generator::StringReplace(basename, "-", "$");
+  basename = grpc_generator::StringReplace(basename, "/", "_");
+  return basename + "_pb";
+}
+
+// Given a filename like foo/bar/baz.proto, returns the corresponding JavaScript
+// message file foo/bar/baz.js
+grpc::string GetJSMessageFilename(const grpc::string& filename) {
+  grpc::string name = filename;
+  return grpc_generator::StripProto(name) + "_pb.js";
+}
+
+// Given a filename like foo/bar/baz.proto, returns the root directory
+// path ../../
+grpc::string GetRootPath(const grpc::string& filename) {
+  size_t slashes = std::count(filename.begin(), filename.end(), '/');
+  if (slashes == 0) {
+    return "./";
+  }
+  grpc::string result = "";
+  for (size_t i = 0; i < slashes; i++) {
+    result += "../";
+  }
+  return result;
+}
+
+// Return the relative path to load to_file from the directory containing
+// from_file, assuming that both paths are relative to the same directory
+grpc::string GetRelativePath(const grpc::string& from_file,
+                             const grpc::string& to_file) {
+  return GetRootPath(from_file) + to_file;
+}
+
+/* Finds all message types used in all services in the file, and returns them
+ * as a map of fully qualified message type name to message descriptor */
+map<grpc::string, const Descriptor*> GetAllMessages(const FileDescriptor *file) {
+  map<grpc::string, const Descriptor*> message_types;
+  for (int i = 0; i < file->service_count(); i++) {
+    const ServiceDescriptor* service = file->service(i);
+    for (int j = 0; j < service->method_count(); j++) {
+      const MethodDescriptor* method = service->method(i);
+      const Descriptor* input_type = method->input_type();
+      const Descriptor* output_type = method->output_type();
+      message_types[input_type->name()] = input_type;
+      message_types[output_type->name()] = output_type;
+    }
+  }
+  return message_types;
+}
+
+grpc::string MessageIdentifierName(const grpc::string& name) {
+  return grpc_generator::StringReplace(name, ".", "_");
+}
+
+grpc::string NodeObjectPath(const Descriptor *descriptor) {
+  grpc::string module_alias = ModuleAlias(descriptor->file()->name());
+  grpc::string name = descriptor->name();
+  grpc_generator::StripPrefix(&name, descriptor->file()->package() + ".");
+  return module_alias + "." + name;
+}
+
+// Prints out the message serializer and deserializer functions
+void PrintMessageTransformer(const Descriptor *descriptor, Printer *out) {
+  map<grpc::string, grpc::string> template_vars;
+  template_vars["identifier_name"] = MessageIdentifierName(descriptor->name());
+  template_vars["name"] = descriptor->name();
+  template_vars["node_name"] = NodeObjectPath(descriptor);
+  // Print the serializer
+  out->Print(template_vars, "function serialize_$identifier_name$(arg) {\n");
+  out->Indent();
+  out->Print(template_vars, "if (!(arg instanceof $node_name$)) {\n");
+  out->Indent();
+  out->Print(template_vars,
+             "throw new Error('Expected argument of type $name$');\n");
+  out->Outdent();
+  out->Print("}\n");
+  out->Print("return new Buffer(arg.serializeBinary());\n");
+  out->Outdent();
+  out->Print("}\n");
+
+  // Print the deserializer
+  out->Print(template_vars,
+             "function deserialize_$identifier_name$(buffer_arg) {\n");
+  out->Indent();
+  out->Print(
+      template_vars,
+      "return $node_name$.deserializeBinary(new Uint8Array(buffer_arg));\n");
+  out->Outdent();
+  out->Print("}\n");
+}
+
+void PrintMethod(const MethodDescriptor *method, Printer *out) {
+  const Descriptor *input_type = method->input_type();
+  const Descriptor *output_type = method->output_type();
+  map<grpc::string, grpc::string> vars;
+  vars["service_name"] = method->service()->full_name();
+  vars["name"] = method->name();
+  vars["input_type"] = NodeObjectPath(input_type);
+  vars["input_type_id"] = MessageIdentifierName(input_type->name());
+  vars["output_type"] = NodeObjectPath(output_type);
+  vars["output_type_id"] = MessageIdentifierName(output_type->name());
+  vars["client_stream"] = method->client_streaming() ? "true" : "false";
+  vars["server_stream"] = method->server_streaming() ? "true" : "false";
+  out->Print("{\n");
+  out->Indent();
+  out->Print(vars, "path: '/$service_name$/$name$',\n");
+  out->Print(vars, "requestStream: $client_stream$,\n");
+  out->Print(vars, "responseStream: $server_stream$,\n");
+  out->Print(vars, "requestType: $input_type$,\n");
+  out->Print(vars, "responseType: $output_type$,\n");
+  out->Print(vars, "requestSerialize: serialize_$input_type_id$,\n");
+  out->Print(vars, "requestDeserialize: deserialize_$input_type_id$,\n");
+  out->Print(vars, "responseSerialize: serialize_$output_type_id$,\n");
+  out->Print(vars, "responseDeserialize: deserialize_$output_type_id$,\n");
+  out->Outdent();
+  out->Print("}");
+}
+
+// Prints out the service descriptor object
+void PrintService(const ServiceDescriptor *service, Printer *out) {
+  map<grpc::string, grpc::string> template_vars;
+  template_vars["name"] = service->name();
+  out->Print(template_vars, "var $name$Service = exports.$name$Service = {\n");
+  out->Indent();
+  for (int i = 0; i < service->method_count(); i++) {
+    grpc::string method_name = grpc_generator::LowercaseFirstLetter(
+        service->method(i)->name());
+    out->Print("$method_name$: ",
+               "method_name", method_name);
+    PrintMethod(service->method(i), out);
+    out->Print(",\n");
+  }
+  out->Outdent();
+  out->Print("};\n\n");
+  out->Print(template_vars, "exports.$name$Client = "
+             "grpc.makeGenericClientConstructor($name$Service);\n");
+}
+
+}
+
+grpc::string GetImports(const FileDescriptor *file) {
+  grpc::string output;
+  {
+    StringOutputStream output_stream(&output);
+    Printer out(&output_stream, '$');
+
+    if (file->service_count() == 0) {
+      return output;
+    }
+
+    out.Print("var grpc = require('grpc');\n");
+    if (file->message_type_count() > 0) {
+      grpc::string file_path = GetRelativePath(file->name(),
+                                               GetJSMessageFilename(
+                                                   file->name()));
+      out.Print("var $module_alias$ = require('$file_path$');\n",
+                "module_alias", ModuleAlias(file->name()),
+                "file_path", file_path);
+    }
+
+    for (int i = 0; i < file->dependency_count(); i++) {
+      grpc::string file_path = GetRelativePath(
+          file->name(), GetJSMessageFilename(file->dependency(i)->name()));
+      out.Print("var $module_alias$ = require('$file_path$');\n",
+                "module_alias", ModuleAlias(file->dependency(i)->name()),
+                "file_path", file_path);
+    }
+    out.Print("\n");
+  }
+  return output;
+}
+
+grpc::string GetTransformers(const FileDescriptor *file) {
+  grpc::string output;
+  {
+    StringOutputStream output_stream(&output);
+    Printer out(&output_stream, '$');
+
+    if (file->service_count() == 0) {
+      return output;
+    }
+
+    map<grpc::string, const Descriptor*> messages = GetAllMessages(file);
+    for (std::map<grpc::string, const Descriptor*>::iterator it =
+             messages.begin();
+         it != messages.end(); it++) {
+      PrintMessageTransformer(it->second, &out);
+    }
+    out.Print("\n");
+  }
+  return output;
+}
+
+grpc::string GetServices(const FileDescriptor *file) {
+  grpc::string output;
+  {
+    StringOutputStream output_stream(&output);
+    Printer out(&output_stream, '$');
+
+    if (file->service_count() == 0) {
+      return output;
+    }
+
+    for (int i = 0; i < file->service_count(); i++) {
+      PrintService(file->service(i), &out);
+    }
+  }
+  return output;
+}
+
+}  // namespace grpc_node_generator
diff --git a/src/compiler/node_generator.h b/src/compiler/node_generator.h
new file mode 100644
index 0000000000..249a0d011f
--- /dev/null
+++ b/src/compiler/node_generator.h
@@ -0,0 +1,49 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H
+#define GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H
+
+#include "src/compiler/config.h"
+
+namespace grpc_node_generator {
+
+grpc::string GetImports(const grpc::protobuf::FileDescriptor *file);
+
+grpc::string GetTransformers(const grpc::protobuf::FileDescriptor *file);
+
+grpc::string GetServices(const grpc::protobuf::FileDescriptor *file);
+
+}  // namespace grpc_node_generator
+
+#endif  // GRPC_INTERNAL_COMPILER_NODE_GENERATOR_H
diff --git a/src/compiler/node_generator_helpers.h b/src/compiler/node_generator_helpers.h
new file mode 100644
index 0000000000..f41a2bcf59
--- /dev/null
+++ b/src/compiler/node_generator_helpers.h
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H
+#define GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H
+
+#include <algorithm>
+
+#include "src/compiler/config.h"
+#include "src/compiler/generator_helpers.h"
+
+namespace grpc_node_generator {
+
+inline grpc::string GetJSServiceFilename(const grpc::string& filename) {
+  return grpc_generator::StripProto(filename) + "_grpc_pb.js";
+}
+
+}  // namespace grpc_node_generator
+
+#endif  // GRPC_INTERNAL_COMPILER_NODE_GENERATOR_HELPERS_H
diff --git a/src/compiler/node_plugin.cc b/src/compiler/node_plugin.cc
new file mode 100644
index 0000000000..ac5ced3558
--- /dev/null
+++ b/src/compiler/node_plugin.cc
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+// Generates Node gRPC service interface out of Protobuf IDL.
+
+#include <memory>
+
+#include "src/compiler/config.h"
+#include "src/compiler/node_generator.h"
+#include "src/compiler/node_generator_helpers.h"
+
+using grpc_node_generator::GetImports;
+using grpc_node_generator::GetJSServiceFilename;
+using grpc_node_generator::GetServices;
+using grpc_node_generator::GetTransformers;
+
+class NodeGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
+ public:
+  NodeGrpcGenerator() {}
+  ~NodeGrpcGenerator() {}
+
+  bool Generate(const grpc::protobuf::FileDescriptor *file,
+                const grpc::string &parameter,
+                grpc::protobuf::compiler::GeneratorContext *context,
+                grpc::string *error) const {
+    grpc::string code = GetImports(file) +
+        GetTransformers(file) +
+        GetServices(file);
+    if (code.size() == 0) {
+      return true;
+    }
+
+    // Get output file name
+    grpc::string file_name = GetJSServiceFilename(file->name());
+
+    std::unique_ptr<grpc::protobuf::io::ZeroCopyOutputStream> output(
+        context->Open(file_name));
+    grpc::protobuf::io::CodedOutputStream coded_out(output.get());
+    coded_out.WriteRaw(code.data(), code.size());
+    return true;
+  }
+};
+
+int main(int argc, char *argv[]) {
+  NodeGrpcGenerator generator;
+  return grpc::protobuf::compiler::PluginMain(argc, argv, &generator);
+}
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 5b1b67439d..47cbd6befd 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -1625,6 +1625,17 @@
       "src/compiler/csharp_plugin.cc"
     ]
   }, 
+  {
+    "deps": [
+      "grpc_plugin_support"
+    ], 
+    "headers": [], 
+    "language": "c++", 
+    "name": "grpc_node_plugin", 
+    "src": [
+      "src/compiler/node_plugin.cc"
+    ]
+  }, 
   {
     "deps": [
       "grpc_plugin_support"
@@ -4462,6 +4473,8 @@
       "src/compiler/csharp_generator.h", 
       "src/compiler/csharp_generator_helpers.h", 
       "src/compiler/generator_helpers.h", 
+      "src/compiler/node_generator.h", 
+      "src/compiler/node_generator_helpers.h", 
       "src/compiler/objective_c_generator.h", 
       "src/compiler/objective_c_generator_helpers.h", 
       "src/compiler/python_generator.h", 
@@ -4533,6 +4546,9 @@
       "src/compiler/csharp_generator.h", 
       "src/compiler/csharp_generator_helpers.h", 
       "src/compiler/generator_helpers.h", 
+      "src/compiler/node_generator.cc", 
+      "src/compiler/node_generator.h", 
+      "src/compiler/node_generator_helpers.h", 
       "src/compiler/objective_c_generator.cc", 
       "src/compiler/objective_c_generator.h", 
       "src/compiler/objective_c_generator_helpers.h", 
diff --git a/vsprojects/grpc_protoc_plugins.sln b/vsprojects/grpc_protoc_plugins.sln
index ef1cbb8e57..ace295daea 100644
--- a/vsprojects/grpc_protoc_plugins.sln
+++ b/vsprojects/grpc_protoc_plugins.sln
@@ -24,6 +24,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_csharp_plugin", "vcxpr
 		{B6E81D84-2ACB-41B8-8781-493A944C7817} = {B6E81D84-2ACB-41B8-8781-493A944C7817}
 	EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_node_plugin", "vcxproj\.\grpc_node_plugin\grpc_node_plugin.vcxproj", "{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}"
+	ProjectSection(myProperties) = preProject
+        	lib = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{B6E81D84-2ACB-41B8-8781-493A944C7817} = {B6E81D84-2ACB-41B8-8781-493A944C7817}
+	EndProjectSection
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_objective_c_plugin", "vcxproj\.\grpc_objective_c_plugin\grpc_objective_c_plugin.vcxproj", "{19564640-CEE6-4921-ABA5-676ED79A36F6}"
 	ProjectSection(myProperties) = preProject
         	lib = "False"
@@ -80,6 +88,14 @@ Global
 		{3C813052-A49A-4662-B90A-1ADBEC7EE453}.Debug|x64.Build.0 = Debug|x64
 		{3C813052-A49A-4662-B90A-1ADBEC7EE453}.Release|Win32.Build.0 = Release|Win32
 		{3C813052-A49A-4662-B90A-1ADBEC7EE453}.Release|x64.Build.0 = Release|x64
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|Win32.ActiveCfg = Debug|Win32
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|x64.ActiveCfg = Debug|x64
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|Win32.ActiveCfg = Release|Win32
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|x64.ActiveCfg = Release|x64
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|Win32.Build.0 = Debug|Win32
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Debug|x64.Build.0 = Debug|x64
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|Win32.Build.0 = Release|Win32
+		{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}.Release|x64.Build.0 = Release|x64
 		{19564640-CEE6-4921-ABA5-676ED79A36F6}.Debug|Win32.ActiveCfg = Debug|Win32
 		{19564640-CEE6-4921-ABA5-676ED79A36F6}.Debug|x64.ActiveCfg = Debug|x64
 		{19564640-CEE6-4921-ABA5-676ED79A36F6}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
index 89183902d7..147c251169 100644
--- a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
+++ b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj
@@ -207,6 +207,8 @@
     <ClInclude Include="$(SolutionDir)\..\src\compiler\csharp_generator.h" />
     <ClInclude Include="$(SolutionDir)\..\src\compiler\csharp_generator_helpers.h" />
     <ClInclude Include="$(SolutionDir)\..\src\compiler\generator_helpers.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator_helpers.h" />
     <ClInclude Include="$(SolutionDir)\..\src\compiler\objective_c_generator.h" />
     <ClInclude Include="$(SolutionDir)\..\src\compiler\objective_c_generator_helpers.h" />
     <ClInclude Include="$(SolutionDir)\..\src\compiler\python_generator.h" />
@@ -220,6 +222,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\compiler\csharp_generator.cc">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\compiler\node_generator.cc">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\compiler\objective_c_generator.cc">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\compiler\python_generator.cc">
diff --git a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
index de33d98f6d..e9e68a9f27 100644
--- a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj.filters
@@ -7,6 +7,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\compiler\csharp_generator.cc">
       <Filter>src\compiler</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\compiler\node_generator.cc">
+      <Filter>src\compiler</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\compiler\objective_c_generator.cc">
       <Filter>src\compiler</Filter>
     </ClCompile>
@@ -197,6 +200,12 @@
     <ClInclude Include="$(SolutionDir)\..\src\compiler\generator_helpers.h">
       <Filter>src\compiler</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator.h">
+      <Filter>src\compiler</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\compiler\node_generator_helpers.h">
+      <Filter>src\compiler</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\compiler\objective_c_generator.h">
       <Filter>src\compiler</Filter>
     </ClInclude>
-- 
GitLab


From 4c8f8d89e7fec857167ff74803baf82e43b6e28a Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 26 Feb 2016 11:43:05 -0800
Subject: [PATCH 013/525] Rewrite Node greeter example to use generated code

---
 examples/node/greeter_client.js     |  22 +-
 examples/node/greeter_server.js     |  12 +-
 examples/node/helloworld_grpc_pb.js |  39 ++++
 examples/node/helloworld_pb.js      | 332 ++++++++++++++++++++++++++++
 examples/node/package.json          |   3 +-
 5 files changed, 395 insertions(+), 13 deletions(-)
 create mode 100644 examples/node/helloworld_grpc_pb.js
 create mode 100644 examples/node/helloworld_pb.js

diff --git a/examples/node/greeter_client.js b/examples/node/greeter_client.js
index ca5781514d..828ab51f49 100644
--- a/examples/node/greeter_client.js
+++ b/examples/node/greeter_client.js
@@ -31,22 +31,30 @@
  *
  */
 
-var PROTO_PATH = __dirname + '/../protos/helloworld.proto';
-
 var grpc = require('grpc');
-var hello_proto = grpc.load(PROTO_PATH).helloworld;
+
+var hello_messages = require('./helloworld_pb');
+var hello_service = require('./helloworld_grpc_pb');
 
 function main() {
-  var client = new hello_proto.Greeter('localhost:50051',
-                                       grpc.credentials.createInsecure());
+  var client = new hello_service.GreeterClient('localhost:50051',
+                                               grpc.credentials.createInsecure());
   var user;
   if (process.argv.length >= 3) {
     user = process.argv[2];
   } else {
     user = 'world';
   }
-  client.sayHello({name: user}, function(err, response) {
-    console.log('Greeting:', response.message);
+
+  var request = new hello_messages.HelloRequest();
+  request.setName(user);
+
+  client.sayHello(request, function(err, response) {
+    if (err) {
+      debugger;
+      throw err;
+    }
+    console.log('Greeting:', response.getMessage());
   });
 }
 
diff --git a/examples/node/greeter_server.js b/examples/node/greeter_server.js
index 47d9892816..08ca600fef 100644
--- a/examples/node/greeter_server.js
+++ b/examples/node/greeter_server.js
@@ -31,16 +31,18 @@
  *
  */
 
-var PROTO_PATH = __dirname + '/../protos/helloworld.proto';
-
 var grpc = require('grpc');
-var hello_proto = grpc.load(PROTO_PATH).helloworld;
+
+var hello_messages = require('./helloworld_pb');
+var hello_service = require('./helloworld_grpc_pb');
 
 /**
  * Implements the SayHello RPC method.
  */
 function sayHello(call, callback) {
-  callback(null, {message: 'Hello ' + call.request.name});
+  var reply = new hello_messages.HelloReply();
+  reply.setMessage("Hello " + call.request.getName());
+  callback(null, reply);
 }
 
 /**
@@ -49,7 +51,7 @@ function sayHello(call, callback) {
  */
 function main() {
   var server = new grpc.Server();
-  server.addProtoService(hello_proto.Greeter.service, {sayHello: sayHello});
+  server.addService(hello_service.GreeterService, {sayHello: sayHello});
   server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
   server.start();
 }
diff --git a/examples/node/helloworld_grpc_pb.js b/examples/node/helloworld_grpc_pb.js
new file mode 100644
index 0000000000..3d070d7de0
--- /dev/null
+++ b/examples/node/helloworld_grpc_pb.js
@@ -0,0 +1,39 @@
+// GENERATED CODE -- DO NOT EDIT!
+
+var grpc = require('grpc');
+var helloworld_pb = require('./helloworld_pb.js');
+
+function serialize_HelloReply(arg) {
+  if (!(arg instanceof helloworld_pb.HelloReply)) {
+    throw new Error('Expected argument of type HelloReply');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+function deserialize_HelloReply(buffer_arg) {
+  return helloworld_pb.HelloReply.deserializeBinary(new Uint8Array(buffer_arg));
+}
+function serialize_HelloRequest(arg) {
+  if (!(arg instanceof helloworld_pb.HelloRequest)) {
+    throw new Error('Expected argument of type HelloRequest');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+function deserialize_HelloRequest(buffer_arg) {
+  return helloworld_pb.HelloRequest.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+var GreeterService = exports.GreeterService = {
+  sayHello: {
+    path: '/helloworld.Greeter/SayHello',
+    requestStream: false,
+    responseStream: false,
+    requestType: helloworld_pb.HelloRequest,
+    responseType: helloworld_pb.HelloReply,
+    requestSerialize: serialize_HelloRequest,
+    requestDeserialize: deserialize_HelloRequest,
+    responseSerialize: serialize_HelloReply,
+    responseDeserialize: deserialize_HelloReply,
+  },
+};
+
+exports.GreeterClient = grpc.makeGenericClientConstructor(GreeterService);
diff --git a/examples/node/helloworld_pb.js b/examples/node/helloworld_pb.js
new file mode 100644
index 0000000000..6405bd90f1
--- /dev/null
+++ b/examples/node/helloworld_pb.js
@@ -0,0 +1,332 @@
+/**
+ * @fileoverview
+ * @enhanceable
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.helloworld.HelloReply', null, global);
+goog.exportSymbol('proto.helloworld.HelloRequest', null, global);
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.helloworld.HelloRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.helloworld.HelloRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.helloworld.HelloRequest.displayName = 'proto.helloworld.HelloRequest';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.helloworld.HelloRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.helloworld.HelloRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.helloworld.HelloRequest} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.helloworld.HelloRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    name: msg.getName()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.helloworld.HelloRequest}
+ */
+proto.helloworld.HelloRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.helloworld.HelloRequest;
+  return proto.helloworld.HelloRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.helloworld.HelloRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.helloworld.HelloRequest}
+ */
+proto.helloworld.HelloRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.helloworld.HelloRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloRequest.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.helloworld.HelloRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloRequest.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.helloworld.HelloRequest} The clone.
+ */
+proto.helloworld.HelloRequest.prototype.cloneMessage = function() {
+  return /** @type {!proto.helloworld.HelloRequest} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional string name = 1;
+ * @return {string}
+ */
+proto.helloworld.HelloRequest.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+};
+
+
+/** @param {string} value  */
+proto.helloworld.HelloRequest.prototype.setName = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.helloworld.HelloReply = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.helloworld.HelloReply, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.helloworld.HelloReply.displayName = 'proto.helloworld.HelloReply';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.helloworld.HelloReply.prototype.toObject = function(opt_includeInstance) {
+  return proto.helloworld.HelloReply.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.helloworld.HelloReply} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.helloworld.HelloReply.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    message: msg.getMessage()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.helloworld.HelloReply}
+ */
+proto.helloworld.HelloReply.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.helloworld.HelloReply;
+  return proto.helloworld.HelloReply.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.helloworld.HelloReply} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.helloworld.HelloReply}
+ */
+proto.helloworld.HelloReply.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setMessage(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.helloworld.HelloReply} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloReply.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.helloworld.HelloReply.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloReply.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getMessage();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.helloworld.HelloReply} The clone.
+ */
+proto.helloworld.HelloReply.prototype.cloneMessage = function() {
+  return /** @type {!proto.helloworld.HelloReply} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional string message = 1;
+ * @return {string}
+ */
+proto.helloworld.HelloReply.prototype.getMessage = function() {
+  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+};
+
+
+/** @param {string} value  */
+proto.helloworld.HelloReply.prototype.setMessage = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+goog.object.extend(exports, proto.helloworld);
diff --git a/examples/node/package.json b/examples/node/package.json
index 00ba428d96..d1834585f5 100644
--- a/examples/node/package.json
+++ b/examples/node/package.json
@@ -2,6 +2,7 @@
   "name": "grpc-examples",
   "version": "0.1.0",
   "dependencies": {
-    "grpc": "0.13.0"
+    "grpc": "0.13.0",
+    "google-protobuf": "*"
   }
 }
-- 
GitLab


From 7d69ea63c8af9c7be43434993c82f93033343dce Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 26 Feb 2016 11:44:24 -0800
Subject: [PATCH 014/525] Minor change to node generator, and add a folder

---
 src/compiler/node_generator.cc                |   2 +
 .../grpc_node_plugin/grpc_node_plugin.vcxproj | 168 ++++++++++++++++++
 .../grpc_node_plugin.vcxproj.filters          |  18 ++
 3 files changed, 188 insertions(+)
 create mode 100644 vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj
 create mode 100644 vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters

diff --git a/src/compiler/node_generator.cc b/src/compiler/node_generator.cc
index 00db79cabb..7605b64531 100644
--- a/src/compiler/node_generator.cc
+++ b/src/compiler/node_generator.cc
@@ -210,6 +210,8 @@ grpc::string GetImports(const FileDescriptor *file) {
       return output;
     }
 
+    out.Print("// GENERATED CODE -- DO NOT EDIT!\n\n");
+
     out.Print("var grpc = require('grpc');\n");
     if (file->message_type_count() > 0) {
       grpc::string file_path = GetRelativePath(file->name(),
diff --git a/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj
new file mode 100644
index 0000000000..faf93fd136
--- /dev/null
+++ b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{57ABD9A2-CE8E-CCA7-5171-35C4534F3595}</ProjectGuid>
+    <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+    <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+    <PlatformToolset>v100</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\protobuf.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\protoc.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <TargetName>grpc_node_plugin</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <TargetName>grpc_node_plugin</TargetName>
+  </PropertyGroup>
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\compiler\node_plugin.cc">
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_plugin_support\grpc_plugin_support.vcxproj">
+      <Project>{B6E81D84-2ACB-41B8-8781-493A944C7817}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+  </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters
new file mode 100644
index 0000000000..28b197f6f3
--- /dev/null
+++ b/vsprojects/vcxproj/grpc_node_plugin/grpc_node_plugin.vcxproj.filters
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\compiler\node_plugin.cc">
+      <Filter>src\compiler</Filter>
+    </ClCompile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Filter Include="src">
+      <UniqueIdentifier>{089d5d6b-d438-dc98-b30f-bd608e3bbb78}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\compiler">
+      <UniqueIdentifier>{1cc34440-c001-7578-c4d3-78f5d98fb602}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
+
-- 
GitLab


From e6dd0cb9f7233822fae6986b3e39d0ee6c825db9 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 26 Feb 2016 14:39:35 -0800
Subject: [PATCH 015/525] Revert unnecessary change

---
 src/core/iomgr/ev_poll_and_epoll_posix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/iomgr/ev_poll_and_epoll_posix.c b/src/core/iomgr/ev_poll_and_epoll_posix.c
index a1e0442a42..ead99b1497 100644
--- a/src/core/iomgr/ev_poll_and_epoll_posix.c
+++ b/src/core/iomgr/ev_poll_and_epoll_posix.c
@@ -1879,8 +1879,8 @@ static void pollset_set_del_fd(grpc_exec_ctx *exec_ctx,
  */
 
 static void shutdown_engine(void) {
-  pollset_global_shutdown();
   fd_global_shutdown();
+  pollset_global_shutdown();
 }
 
 static const grpc_event_engine_vtable vtable = {
-- 
GitLab


From c31256537045f1ad45bda9b8bbbdfad7f64f4607 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 26 Feb 2016 14:56:35 -0800
Subject: [PATCH 016/525] Fix crash

---
 src/core/iomgr/ev_posix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/iomgr/ev_posix.c b/src/core/iomgr/ev_posix.c
index fbfa13c347..0c0c9be9ad 100644
--- a/src/core/iomgr/ev_posix.c
+++ b/src/core/iomgr/ev_posix.c
@@ -132,7 +132,7 @@ void grpc_event_engine_init(void) {
   }
 }
 
-void grpc_event_engine_shutdown(void) { g_event_engine->shutdown_engine(); }
+void grpc_event_engine_shutdown(void) { g_event_engine->shutdown_engine(); g_event_engine = NULL; }
 
 grpc_fd *grpc_fd_create(int fd, const char *name) {
   return g_event_engine->fd_create(fd, name);
-- 
GitLab


From 334db35498fbe69a1f272880073ee4052df1009c Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 26 Feb 2016 15:19:49 -0800
Subject: [PATCH 017/525] Fix runtests

---
 tools/run_tests/run_tests.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 106f6bea39..b8a7f476bf 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -192,7 +192,7 @@ class CLanguage(object):
                 test = base + line.strip()
                 cmdline = [binary] + ['--gtest_filter=%s' % test]
                 out.append(self.config.job_spec(cmdline, [binary],
-                                                shortname='%s:%s' % (binary, test, shortname_ext),
+                                                shortname='%s:%s %s' % (binary, test, shortname_ext),
                                                 cpu_cost=target['cpu_cost'],
                                                 environ=env))
           else:
-- 
GitLab


From 2fad50d214b1b394c3b1a9f0d0ad9af1256c20b3 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 8 Mar 2016 07:52:42 -0800
Subject: [PATCH 018/525] Port forward changes

---
 src/core/iomgr/ev_poll_and_epoll_posix.c | 2 +-
 src/core/iomgr/ev_poll_posix.c           | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/core/iomgr/ev_poll_and_epoll_posix.c b/src/core/iomgr/ev_poll_and_epoll_posix.c
index 080f22396a..fd554107bf 100644
--- a/src/core/iomgr/ev_poll_and_epoll_posix.c
+++ b/src/core/iomgr/ev_poll_and_epoll_posix.c
@@ -1336,7 +1336,7 @@ static void multipoll_with_poll_pollset_maybe_work_and_unlock(
 
   for (i = 2; i < pfd_count; i++) {
     grpc_fd *fd = watchers[i].fd;
-    pfds[i].events = (short)grpc_fd_begin_poll(fd, pollset, worker, POLLIN,
+    pfds[i].events = (short)fd_begin_poll(fd, pollset, worker, POLLIN,
                                                POLLOUT, &watchers[i]);
     GRPC_FD_UNREF(fd, "multipoller_start");
   }
diff --git a/src/core/iomgr/ev_poll_posix.c b/src/core/iomgr/ev_poll_posix.c
index 8878aa61bc..5cc5bc3c68 100644
--- a/src/core/iomgr/ev_poll_posix.c
+++ b/src/core/iomgr/ev_poll_posix.c
@@ -877,6 +877,7 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
         } else {
           pollset->fds[fd_count++] = pollset->fds[i];
           watchers[pfd_count].fd = pollset->fds[i];
+          GRPC_FD_REF(watchers[pfd_count].fd, "multipoller_start");
           pfds[pfd_count].fd = pollset->fds[i]->fd;
           pfds[pfd_count].revents = 0;
           pfd_count++;
@@ -890,8 +891,10 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
       gpr_mu_unlock(&pollset->mu);
 
       for (i = 2; i < pfd_count; i++) {
-        pfds[i].events = (short)fd_begin_poll(watchers[i].fd, pollset, &worker,
-                                              POLLIN, POLLOUT, &watchers[i]);
+        grpc_fd *fd = watchers[i].fd;
+        pfds[i].events = (short)fd_begin_poll(fd, pollset, &worker, POLLIN,
+                                                   POLLOUT, &watchers[i]);
+        GRPC_FD_UNREF(fd, "multipoller_start");
       }
 
       /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
-- 
GitLab


From e73e9e1a98600dfbf405c9bcbbfdcd4bd05d78f4 Mon Sep 17 00:00:00 2001
From: Christian Svensson <blue@cmd.nu>
Date: Thu, 10 Mar 2016 17:04:11 +0100
Subject: [PATCH 019/525] Allow directly specifiying connection path

Make insecure_channel / secure_channel accept port=None and only use the
'host' argument. This enables using UNIX sockets without mangling the
path of the socket.

Signed-off-by: Christian Svensson <blue@cmd.nu>
---
 src/python/grpcio/grpc/beta/implementations.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/python/grpcio/grpc/beta/implementations.py b/src/python/grpcio/grpc/beta/implementations.py
index a0ca330d2c..6f1ca2bb5e 100644
--- a/src/python/grpcio/grpc/beta/implementations.py
+++ b/src/python/grpcio/grpc/beta/implementations.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2015-2016, Google Inc.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -187,12 +187,13 @@ def insecure_channel(host, port):
   Args:
     host: The name of the remote host to which to connect.
     port: The port of the remote host to which to connect.
+      If None only the 'host' part will be used.
 
   Returns:
     A Channel to the remote host through which RPCs may be conducted.
   """
   intermediary_low_channel = _intermediary_low.Channel(
-      '%s:%d' % (host, port), None)
+      '%s:%d' % (host, port) if port else host, None)
   return Channel(intermediary_low_channel._internal, intermediary_low_channel)  # pylint: disable=protected-access
 
 
@@ -202,13 +203,15 @@ def secure_channel(host, port, channel_credentials):
   Args:
     host: The name of the remote host to which to connect.
     port: The port of the remote host to which to connect.
+      If None only the 'host' part will be used.
     channel_credentials: A ChannelCredentials.
 
   Returns:
     A secure Channel to the remote host through which RPCs may be conducted.
   """
   intermediary_low_channel = _intermediary_low.Channel(
-      '%s:%d' % (host, port), channel_credentials._low_credentials)
+      '%s:%d' % (host, port) if port else host,
+      channel_credentials._low_credentials)
   return Channel(intermediary_low_channel._internal, intermediary_low_channel)  # pylint: disable=protected-access
 
 
-- 
GitLab


From 45b135e2f56ade45ecb9e6dc040edda595eb99c0 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 22 Mar 2016 16:02:39 -0700
Subject: [PATCH 020/525] Bring chttp2 executor code back up to compiling

---
 src/core/transport/chttp2/internal.h  |  29 +-
 src/core/transport/chttp2_transport.c | 479 ++++++++++++--------------
 2 files changed, 240 insertions(+), 268 deletions(-)

diff --git a/src/core/transport/chttp2/internal.h b/src/core/transport/chttp2/internal.h
index c2977c7b3f..7489cc67fb 100644
--- a/src/core/transport/chttp2/internal.h
+++ b/src/core/transport/chttp2/internal.h
@@ -291,9 +291,13 @@ struct grpc_chttp2_transport_parsing {
   int64_t outgoing_window;
 };
 
+typedef void (*grpc_chttp2_locked_action)(grpc_exec_ctx *ctx,
+                                          grpc_chttp2_transport *t,
+                                          grpc_chttp2_stream *s, void *arg);
+
 typedef struct grpc_chttp2_executor_action_header {
   grpc_chttp2_stream *stream;
-  void (*action)(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *arg);
+  grpc_chttp2_locked_action action;
   struct grpc_chttp2_executor_action_header *next;
   void *arg;
 } grpc_chttp2_executor_action_header;
@@ -311,13 +315,11 @@ struct grpc_chttp2_transport {
     gpr_mu mu;
 
     /** is a thread currently in the global lock */
-    uint8_t global_active;
+    bool global_active;
     /** is a thread currently writing */
-    uint8_t writing_active;
+    bool writing_active;
     /** is a thread currently parsing */
-    uint8_t parsing_active;
-    /** is a thread currently executing channel callbacks */
-    uint8_t channel_callback_active;
+    bool parsing_active;
 
     grpc_chttp2_executor_action_header *pending_actions;
   } executor;
@@ -352,11 +354,11 @@ struct grpc_chttp2_transport {
   grpc_chttp2_stream_map new_stream_map;
 
   /** closure to execute writing */
-  grpc_iomgr_closure writing_action;
+  grpc_closure writing_action;
   /** closure to start reading from the endpoint */
-  grpc_iomgr_closure reading_action;
+  grpc_closure reading_action;
   /** closure to actually do parsing */
-  grpc_iomgr_closure parsing_action;
+  grpc_closure parsing_action;
 
   struct {
     size_t nslices;
@@ -659,10 +661,11 @@ void grpc_chttp2_parsing_become_skip_parser(
 void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx,
                                        grpc_closure **pclosure, int success);
 
-void grpc_chttp2_run_with_global_lock(
-    grpc_chttp2_transport *transport, grpc_chttp2_stream *optional_stream,
-    void (*action)(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *arg),
-    void *arg, size_t sizeof_arg);
+void grpc_chttp2_run_with_global_lock(grpc_exec_ctx *exec_ctx,
+                                      grpc_chttp2_transport *transport,
+                                      grpc_chttp2_stream *optional_stream,
+                                      grpc_chttp2_locked_action action,
+                                      void *arg, size_t sizeof_arg);
 
 #define GRPC_CHTTP2_CLIENT_CONNECT_STRING "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
 #define GRPC_CHTTP2_CLIENT_CONNECT_STRLEN \
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index a7844ea8e5..eb9f7a2365 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -81,9 +81,6 @@ int grpc_flowctl_trace = 0;
 
 static const grpc_transport_vtable vtable;
 
-static void unlock_check_channel_callbacks(grpc_chttp2_transport *t);
-static void unlock_check_read_write_state(grpc_chttp2_transport *t);
-
 /* forward declarations of various callbacks that we'll build closures around */
 static void writing_action(grpc_exec_ctx *exec_ctx, void *t,
                            bool iomgr_success_ignored);
@@ -96,9 +93,6 @@ static void parsing_action(grpc_exec_ctx *exec_ctx, void *t,
 static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
                          uint32_t value);
 
-/** Endpoint callback to process incoming data */
-static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, bool success);
-
 /** Start disconnection chain */
 static void drop_connection(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t);
 
@@ -132,7 +126,8 @@ static void add_to_pollset_set_locked(grpc_exec_ctx *exec_ctx,
 static void maybe_start_some_streams(
     grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global);
 
-static void finish_global_actions(grpc_chttp2_transport *t);
+static void finish_global_actions(grpc_exec_ctx *exec_ctx,
+                                  grpc_chttp2_transport *t);
 
 static void connectivity_state_set(
     grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
@@ -246,9 +241,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
   /* ref is dropped at transport close() */
   gpr_ref_init(&t->shutdown_ep_refs, 1);
   gpr_mu_init(&t->executor.mu);
-  grpc_mdctx_ref(mdctx);
   t->peer_string = grpc_endpoint_get_peer(ep);
-  t->metadata_context = mdctx;
   t->endpoint_reading = 1;
   t->global.next_stream_id = is_client ? 1 : 2;
   t->global.is_client = is_client;
@@ -280,7 +273,6 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
 
   grpc_closure_init(&t->writing.done_cb, grpc_chttp2_terminate_writing,
                     &t->writing);
-  grpc_closure_init(&t->recv_data, recv_data, t);
   gpr_slice_buffer_init(&t->read_buffer);
 
   if (is_client) {
@@ -395,17 +387,19 @@ static void prevent_endpoint_shutdown(grpc_chttp2_transport *t) {
   gpr_ref(&t->shutdown_ep_refs);
 }
 
-static void destroy_transport_locked(grpc_chttp2_transport *t,
+static void destroy_transport_locked(grpc_exec_ctx *exec_ctx,
+                                     grpc_chttp2_transport *t,
                                      grpc_chttp2_stream *s_ignored,
                                      void *arg_ignored) {
   t->destroying = 1;
-  drop_connection(t);
+  drop_connection(exec_ctx, t);
 }
 
-static void destroy_transport(grpc_transport *gt) {
+static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  grpc_chttp2_run_with_global_lock(t, NULL, destroy_transport_locked, NULL, 0);
-  UNREF_TRANSPORT(t, "destroy");
+  grpc_chttp2_run_with_global_lock(exec_ctx, t, NULL, destroy_transport_locked,
+                                   NULL, 0);
+  UNREF_TRANSPORT(exec_ctx, t, "destroy");
 }
 
 static void allow_endpoint_shutdown_locked(grpc_exec_ctx *exec_ctx,
@@ -417,17 +411,6 @@ static void allow_endpoint_shutdown_locked(grpc_exec_ctx *exec_ctx,
   }
 }
 
-static void allow_endpoint_shutdown_unlocked(grpc_exec_ctx *exec_ctx,
-                                             grpc_chttp2_transport *t) {
-  if (gpr_unref(&t->shutdown_ep_refs)) {
-    gpr_mu_lock(&t->mu);
-    if (t->ep) {
-      grpc_endpoint_shutdown(exec_ctx, t->ep);
-    }
-    gpr_mu_unlock(&t->mu);
-  }
-}
-
 static void destroy_endpoint(grpc_exec_ctx *exec_ctx,
                              grpc_chttp2_transport *t) {
   grpc_endpoint_destroy(exec_ctx, t->ep);
@@ -479,34 +462,8 @@ void grpc_chttp2_stream_unref(grpc_exec_ctx *exec_ctx,
 }
 #endif
 
-static void close_transport(grpc_transport *gt) {
-  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  grpc_chttp2_run_with_global_lock(t, NULL, close_transport_locked, NULL, 0);
-}
-
-typedef struct {
-  grpc_status_code status;
-  gpr_slice debug_data;
-} goaway_arg;
-
-static void goaway_locked(grpc_chttp2_transport *t,
-                          grpc_chttp2_stream *s_ignored, void *a) {
-  goaway_arg *arg = a;
-  grpc_chttp2_goaway_append(t->global.last_incoming_stream_id,
-                            grpc_chttp2_grpc_status_to_http2_error(arg->status),
-                            arg->debug_data, &t->global.qbuf);
-}
-
-static void goaway(grpc_transport *gt, grpc_status_code status,
-                   gpr_slice debug_data) {
-  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  goaway_arg arg;
-  arg.status = status;
-  arg.debug_data = debug_data;
-  grpc_chttp2_run_with_global_lock(t, NULL, goaway_locked, &arg, sizeof(arg));
-}
-
-static void finish_init_stream_locked(grpc_chttp2_transport *t,
+static void finish_init_stream_locked(grpc_exec_ctx *exec_ctx,
+                                      grpc_chttp2_transport *t,
                                       grpc_chttp2_stream *s,
                                       void *arg_ignored) {
   grpc_chttp2_register_stream(t, s);
@@ -549,7 +506,8 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
     s->global.in_stream_map = 1;
   }
 
-  grpc_chttp2_run_with_global_lock(t, s, finish_init_stream_locked, NULL, 0);
+  grpc_chttp2_run_with_global_lock(exec_ctx, t, s, finish_init_stream_locked,
+                                   NULL, 0);
 
   return 0;
 }
@@ -558,10 +516,10 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                            grpc_stream *gs) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
   grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
+  grpc_byte_stream *bs;
 
 #if 0
   int i;
-  grpc_byte_stream *bs;
 
   GPR_TIMER_BEGIN("destroy_stream", 0);
 
@@ -644,60 +602,48 @@ grpc_chttp2_stream_parsing *grpc_chttp2_parsing_accept_stream(
  * LOCK MANAGEMENT
  */
 
-static void finish_global_actions(grpc_chttp2_transport *t) {
+static void finish_global_actions(grpc_exec_ctx *exec_ctx,
+                                  grpc_chttp2_transport *t) {
   grpc_chttp2_executor_action_header *hdr;
   grpc_chttp2_executor_action_header *next;
-  grpc_iomgr_closure *run_closures;
 
   for (;;) {
-    unlock_check_read_write_state(t);
     if (!t->executor.writing_active && !t->closed &&
-        grpc_chttp2_unlocking_check_writes(&t->global, &t->writing)) {
+        grpc_chttp2_unlocking_check_writes(exec_ctx, &t->global, &t->writing,
+                                           t->executor.parsing_active)) {
       t->executor.writing_active = 1;
       REF_TRANSPORT(t, "writing");
       prevent_endpoint_shutdown(t);
-      grpc_chttp2_schedule_closure(&t->global, &t->writing_action, 1);
+      grpc_exec_ctx_enqueue(exec_ctx, &t->writing_action, true, NULL);
     }
     check_read_ops(exec_ctx, &t->global);
-    unlock_check_channel_callbacks(t);
-
-    run_closures = t->global.pending_closures;
-    t->global.pending_closures = NULL;
-
-    gpr_mu_lock(&t->executor.mu);
-    t->executor.global_active = 0;
-    gpr_mu_unlock(&t->executor.mu);
-
-    while (run_closures) {
-      grpc_iomgr_closure *next = run_closures->next;
-      run_closures->cb(run_closures->cb_arg, run_closures->success);
-      run_closures = next;
-    }
 
     gpr_mu_lock(&t->executor.mu);
-    if (!t->executor.global_active && t->executor.pending_actions) {
-      t->executor.global_active = 1;
+    if (t->executor.pending_actions != NULL) {
       hdr = t->executor.pending_actions;
       t->executor.pending_actions = NULL;
       gpr_mu_unlock(&t->executor.mu);
       while (hdr != NULL) {
-        hdr->action(t, hdr->stream, hdr->arg);
+        hdr->action(exec_ctx, t, hdr->stream, hdr->arg);
         next = hdr->next;
         gpr_free(hdr);
-        UNREF_TRANSPORT(t, "pending_action");
+        UNREF_TRANSPORT(exec_ctx, t, "pending_action");
         hdr = next;
       }
       continue;
+    } else {
+      t->executor.global_active = false;
     }
     gpr_mu_unlock(&t->executor.mu);
     break;
   }
 }
 
-void grpc_chttp2_run_with_global_lock(
-    grpc_chttp2_transport *t, grpc_chttp2_stream *optional_stream,
-    void (*action)(grpc_chttp2_transport *t, grpc_chttp2_stream *s, void *arg),
-    void *arg, size_t sizeof_arg) {
+void grpc_chttp2_run_with_global_lock(grpc_exec_ctx *exec_ctx,
+                                      grpc_chttp2_transport *t,
+                                      grpc_chttp2_stream *optional_stream,
+                                      grpc_chttp2_locked_action action,
+                                      void *arg, size_t sizeof_arg) {
   grpc_chttp2_executor_action_header *hdr;
 
   REF_TRANSPORT(t, "run_global");
@@ -708,9 +654,9 @@ void grpc_chttp2_run_with_global_lock(
       t->executor.global_active = 1;
       gpr_mu_unlock(&t->executor.mu);
 
-      action(t, optional_stream, arg);
+      action(exec_ctx, t, optional_stream, arg);
 
-      finish_global_actions(t);
+      finish_global_actions(exec_ctx, t);
     } else {
       gpr_mu_unlock(&t->executor.mu);
 
@@ -726,6 +672,7 @@ void grpc_chttp2_run_with_global_lock(
 
       gpr_mu_lock(&t->executor.mu);
       if (!t->executor.global_active) {
+        /* global lock was released while allocating memory: release & retry */
         gpr_free(hdr);
         continue;
       }
@@ -737,7 +684,7 @@ void grpc_chttp2_run_with_global_lock(
     break;
   }
 
-  UNREF_TRANSPORT(t, "run_global");
+  UNREF_TRANSPORT(exec_ctx, t, "run_global");
 }
 
 /*******************************************************************************
@@ -767,7 +714,8 @@ static void push_setting(grpc_chttp2_transport *t, grpc_chttp2_setting_id id,
   }
 }
 
-static void terminate_writing_with_lock(grpc_chttp2_transport *t,
+static void terminate_writing_with_lock(grpc_exec_ctx *exec_ctx,
+                                        grpc_chttp2_transport *t,
                                         grpc_chttp2_stream *s_ignored,
                                         void *a) {
   int success = *(int *)a;
@@ -780,6 +728,7 @@ static void terminate_writing_with_lock(grpc_chttp2_transport *t,
 
   grpc_chttp2_cleanup_writing(exec_ctx, &t->global, &t->writing);
 
+  grpc_chttp2_stream_global *stream_global;
   while (grpc_chttp2_list_pop_closed_waiting_for_writing(&t->global,
                                                          &stream_global)) {
     fail_pending_writes(exec_ctx, stream_global);
@@ -794,14 +743,15 @@ static void terminate_writing_with_lock(grpc_chttp2_transport *t,
     destroy_endpoint(exec_ctx, t);
   }
 
-  UNREF_TRANSPORT(t, "writing");
+  UNREF_TRANSPORT(exec_ctx, t, "writing");
 }
 
-void grpc_chttp2_terminate_writing(
-    grpc_chttp2_transport_writing *transport_writing, int success) {
+void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
+                                   void *transport_writing, bool success) {
   grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
-  grpc_chttp2_run_with_global_lock(t, NULL, terminate_writing_with_lock,
-                                   &success, sizeof(success));
+  grpc_chttp2_run_with_global_lock(exec_ctx, t, NULL,
+                                   terminate_writing_with_lock, &success,
+                                   sizeof(success));
 }
 
 static void writing_action(grpc_exec_ctx *exec_ctx, void *gt,
@@ -915,14 +865,16 @@ static int contains_non_ok_status(
 
 static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, bool success) {}
 
-static void perform_stream_op_locked(
-    grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
-    grpc_chttp2_stream_global *stream_global, grpc_transport_stream_op *op) {
-  grpc_closure *on_complete;
-
+static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
+                                     grpc_chttp2_transport *t,
+                                     grpc_chttp2_stream *s, void *stream_op) {
   GPR_TIMER_BEGIN("perform_stream_op_locked", 0);
 
-  on_complete = op->on_complete;
+  grpc_transport_stream_op *op = stream_op;
+  grpc_chttp2_transport_global *transport_global = &t->global;
+  grpc_chttp2_stream_global *stream_global = &s->global;
+
+  grpc_closure *on_complete = op->on_complete;
   if (on_complete == NULL) {
     on_complete = grpc_closure_create(do_nothing, NULL);
   }
@@ -1039,12 +991,11 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                               grpc_stream *gs, grpc_transport_stream_op *op) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
   grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
-  grpc_chttp2_run_with_global_lock(t, s, perform_stream_op_locked, op,
+  grpc_chttp2_run_with_global_lock(exec_ctx, t, s, perform_stream_op_locked, op,
                                    sizeof(*op));
 }
 
-static void send_ping_locked(grpc_chttp2_transport *t,
-                             grpc_chttp2_stream *s_ignored, void *a) {
+static void send_ping_locked(grpc_chttp2_transport *t, grpc_closure *on_recv) {
   grpc_chttp2_outstanding_ping *p = gpr_malloc(sizeof(*p));
   p->next = &t->global.pings;
   p->prev = p->next->prev;
@@ -1057,23 +1008,14 @@ static void send_ping_locked(grpc_chttp2_transport *t,
   p->id[5] = (t->global.ping_counter >> 16) & 0xff;
   p->id[6] = (t->global.ping_counter >> 8) & 0xff;
   p->id[7] = t->global.ping_counter & 0xff;
-  p->on_recv = *(grpc_iomgr_closure **)a;
+  p->on_recv = on_recv;
   gpr_slice_buffer_add(&t->global.qbuf, grpc_chttp2_ping_create(0, p->id));
 }
 
-static void send_ping(grpc_transport *gt, grpc_iomgr_closure *on_recv) {
-  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  grpc_chttp2_run_with_global_lock(t, NULL, send_ping_locked, &on_recv,
-                                   sizeof(on_recv));
-}
-
-void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
-                          grpc_chttp2_transport_parsing *transport_parsing,
-                          const uint8_t *opaque_8bytes) {
+static void ack_ping_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
+                            grpc_chttp2_stream *s, void *opaque_8bytes) {
   grpc_chttp2_outstanding_ping *ping;
-  grpc_chttp2_transport *t = TRANSPORT_FROM_PARSING(transport_parsing);
   grpc_chttp2_transport_global *transport_global = &t->global;
-  lock(t);
   for (ping = transport_global->pings.next; ping != &transport_global->pings;
        ping = ping->next) {
     if (0 == memcmp(opaque_8bytes, ping->id, 8)) {
@@ -1084,13 +1026,30 @@ void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
       break;
     }
   }
-  unlock(exec_ctx, t);
+}
+
+void grpc_chttp2_ack_ping(grpc_exec_ctx *exec_ctx,
+                          grpc_chttp2_transport_parsing *transport_parsing,
+                          const uint8_t *opaque_8bytes) {
+  grpc_chttp2_run_with_global_lock(
+      exec_ctx, TRANSPORT_FROM_PARSING(transport_parsing), NULL,
+      ack_ping_locked, (void *)opaque_8bytes, 8);
 }
 
 static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx,
                                         grpc_chttp2_transport *t,
-                                        grpc_transport_op *op) {
-  bool close_transport = false;
+                                        grpc_chttp2_stream *s_unused,
+                                        void *stream_op) {
+  grpc_transport_op *op = stream_op;
+  bool close_transport = op->disconnect;
+
+  /* If there's a set_accept_stream ensure that we're not parsing
+     to avoid changing things out from underneath */
+  if (t->executor.parsing_active && op->set_accept_stream) {
+    GPR_ASSERT(t->post_parsing_op == NULL);
+    t->post_parsing_op = gpr_malloc(sizeof(*op));
+    memcpy(t->post_parsing_op, op, sizeof(*op));
+  }
 
   grpc_exec_ctx_enqueue(exec_ctx, op->on_consumed, true, NULL);
 
@@ -1116,47 +1075,31 @@ static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx,
   }
 
   if (op->bind_pollset) {
-    add_to_pollset_locked(exec_ctx, t, op->bind_pollset);
+    add_to_pollset_locked(exec_ctx, t, NULL, op->bind_pollset);
   }
 
   if (op->bind_pollset_set) {
-    add_to_pollset_set_locked(exec_ctx, t, op->bind_pollset_set);
+    add_to_pollset_set_locked(exec_ctx, t, NULL, op->bind_pollset_set);
   }
 
   if (op->send_ping) {
     send_ping_locked(t, op->send_ping);
   }
 
-  if (op->disconnect) {
-    close_transport_locked(exec_ctx, t);
-  }
-
   if (close_transport) {
-    close_transport_locked(exec_ctx, t);
+    close_transport_locked(exec_ctx, t, NULL, NULL);
   }
 }
 
 static void perform_transport_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                                  grpc_transport_op *op) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-
-  lock(t);
-
-  /* If there's a set_accept_stream ensure that we're not parsing
-     to avoid changing things out from underneath */
-  if (t->parsing_active && op->set_accept_stream) {
-    GPR_ASSERT(t->post_parsing_op == NULL);
-    t->post_parsing_op = gpr_malloc(sizeof(*op));
-    memcpy(t->post_parsing_op, op, sizeof(*op));
-  } else {
-    perform_transport_op_locked(exec_ctx, t, op);
-  }
-
-  unlock(exec_ctx, t);
+  grpc_chttp2_run_with_global_lock(
+      exec_ctx, t, NULL, perform_transport_op_locked, op, sizeof(*op));
 }
 
 /*******************************************************************************
- * INPUT PROCESSING
+ * INPUT PROCESSING - GENERAL
  */
 
 static void check_read_ops(grpc_exec_ctx *exec_ctx,
@@ -1233,7 +1176,7 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
   }
 
   if (grpc_chttp2_unregister_stream(t, s) && t->global.sent_goaway) {
-    close_transport_locked(exec_ctx, t);
+    close_transport_locked(exec_ctx, t, NULL, NULL);
   }
   if (grpc_chttp2_list_remove_writable_stream(&t->global, &s->global)) {
     GRPC_CHTTP2_STREAM_UNREF(exec_ctx, &s->global, "chttp2_writing");
@@ -1328,7 +1271,7 @@ void grpc_chttp2_mark_stream_closed(
   }
   if (close_writes && !stream_global->write_closed) {
     stream_global->write_closed = 1;
-    if (TRANSPORT_FROM_GLOBAL(transport_global)->writing_active) {
+    if (TRANSPORT_FROM_GLOBAL(transport_global)->executor.writing_active) {
       GRPC_CHTTP2_STREAM_REF(stream_global, "finish_writes");
       grpc_chttp2_list_add_closed_waiting_for_writing(transport_global,
                                                       stream_global);
@@ -1338,7 +1281,7 @@ void grpc_chttp2_mark_stream_closed(
   }
   if (stream_global->read_closed && stream_global->write_closed) {
     if (stream_global->id != 0 &&
-        TRANSPORT_FROM_GLOBAL(transport_global)->parsing_active) {
+        TRANSPORT_FROM_GLOBAL(transport_global)->executor.parsing_active) {
       grpc_chttp2_list_add_closed_waiting_for_parsing(transport_global,
                                                       stream_global);
     } else {
@@ -1469,35 +1412,10 @@ static void end_all_the_calls(grpc_exec_ctx *exec_ctx,
 }
 
 static void drop_connection(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t) {
-  if (t->global.error_state == GRPC_CHTTP2_ERROR_STATE_NONE) {
-    t->global.error_state = GRPC_CHTTP2_ERROR_STATE_SEEN;
-  }
   close_transport_locked(exec_ctx, t, NULL, NULL);
   end_all_the_calls(exec_ctx, t);
 }
 
-static void read_error_locked(grpc_chttp2_transport *t) {
-  t->endpoint_reading = 0;
-  if (!t->executor.writing_active && t->ep) {
-    grpc_endpoint_destroy(t->ep);
-    t->ep = NULL;
-    /* safe as we still have a ref for read */
-    UNREF_TRANSPORT(t, "disconnect");
-  }
-}
-
-static void recv_data_error_locked(grpc_chttp2_transport *t,
-                                   grpc_chttp2_stream *s, void *a) {
-  size_t i;
-
-  drop_connection(t);
-  read_error_locked(t);
-  for (i = 0; i < t->executor_parsing.nslices; i++)
-    gpr_slice_unref(t->executor_parsing.slices[i]);
-  memset(&t->executor_parsing, 0, sizeof(t->executor_parsing));
-  UNREF_TRANSPORT(t, "recv_data");
-}
-
 /** update window from a settings change */
 static void update_global_window(void *args, uint32_t id, void *stream) {
   grpc_chttp2_transport *t = args;
@@ -1518,58 +1436,72 @@ static void update_global_window(void *args, uint32_t id, void *stream) {
   }
 }
 
-static void recv_data(grpc_exec_ctx *exec_ctx, void *tp, bool success) {
-  grpc_chttp2_run_with_global_lock(t, NULL, recv_data_locked,
-                                   (void *)(uintptr_t)success, 0);
+/*******************************************************************************
+ * INPUT PROCESSING - PARSING
+ */
+
+static void reading_action_locked(grpc_exec_ctx *exec_ctx,
+                                  grpc_chttp2_transport *t,
+                                  grpc_chttp2_stream *s_unused, void *arg);
+static void parsing_action(grpc_exec_ctx *exec_ctx, void *arg, bool success);
+static void post_reading_action_locked(grpc_exec_ctx *exec_ctx,
+                                       grpc_chttp2_transport *t,
+                                       grpc_chttp2_stream *s_unused, void *arg);
+static void post_parse_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
+                              grpc_chttp2_stream *s_unused, void *arg);
+
+static void reading_action(grpc_exec_ctx *exec_ctx, void *tp, bool success) {
   /* Control flow:
-     recv_data_locked ->
+     reading_action_locked ->
        (parse_unlocked -> post_parse_locked)? ->
-       post_recv_data_locked */
+       post_reading_action_locked */
+  grpc_chttp2_run_with_global_lock(exec_ctx, tp, NULL, reading_action_locked,
+                                   (void *)(uintptr_t)success, 0);
 }
 
-static void recv_data_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
-                             grpc_chttp2_stream *s_unused, void *arg) {
-  size_t i;
-  int keep_reading = 0;
+static void reading_action_locked(grpc_exec_ctx *exec_ctx,
+                                  grpc_chttp2_transport *t,
+                                  grpc_chttp2_stream *s_unused, void *arg) {
   grpc_chttp2_transport_global *transport_global = &t->global;
   grpc_chttp2_transport_parsing *transport_parsing = &t->parsing;
-  grpc_chttp2_stream_global *stream_global;
   bool success = (bool)(uintptr_t)arg;
 
-  i = 0;
-  GPR_ASSERT(!t->parsing_active);
+  GPR_ASSERT(!t->executor.parsing_active);
   if (!t->closed) {
     t->executor.parsing_active = 1;
     /* merge stream lists */
     grpc_chttp2_stream_map_move_into(&t->new_stream_map,
                                      &t->parsing_stream_map);
     grpc_chttp2_prepare_to_read(transport_global, transport_parsing);
-    grpc_exec_ctx_enqueue(exec_ctx, parse_locked, t, NULL);
+    grpc_exec_ctx_enqueue(exec_ctx, &t->parsing_action, success, NULL);
   } else {
-    post_recv_data_locked(exec_ctx, t, s_unused, arg);
+    post_reading_action_locked(exec_ctx, t, s_unused, arg);
   }
 }
 
-static void parse_locked(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
-  GPR_TIMER_BEGIN("recv_data.parse", 0);
+static void parsing_action(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+  grpc_chttp2_transport *t = arg;
+  GPR_TIMER_BEGIN("reading_action.parse", 0);
+  size_t i = 0;
   for (; i < t->read_buffer.count &&
-         grpc_chttp2_perform_read(exec_ctx, transport_parsing,
+         grpc_chttp2_perform_read(exec_ctx, &t->parsing,
                                   t->read_buffer.slices[i]);
        i++)
     ;
-  GPR_TIMER_END("recv_data.parse", 0);
-  grpc_chttp2_run_with_global_lock(t, s_unused, post_parse_locked, arg, 0)
+  if (i != t->read_buffer.count) {
+    success = false;
+  }
+  GPR_TIMER_END("reading_action.parse", 0);
+  grpc_chttp2_run_with_global_lock(exec_ctx, t, NULL, post_parse_locked,
+                                   (void *)(uintptr_t)success, 0);
 }
 
 static void post_parse_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
                               grpc_chttp2_stream *s_unused, void *arg) {
+  grpc_chttp2_transport_global *transport_global = &t->global;
+  grpc_chttp2_transport_parsing *transport_parsing = &t->parsing;
   /* copy parsing qbuf to global qbuf */
   gpr_slice_buffer_move_into(&t->parsing.qbuf, &t->global.qbuf);
-  if (i != t->read_buffer.count) {
-    unlock(exec_ctx, t);
-    lock(t);
-    drop_connection(exec_ctx, t);
-  }
   /* merge stream lists */
   grpc_chttp2_stream_map_move_into(&t->new_stream_map, &t->parsing_stream_map);
   transport_global->concurrent_stream_count =
@@ -1581,20 +1513,18 @@ static void post_parse_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
   }
   /* handle higher level things */
   grpc_chttp2_publish_reads(exec_ctx, transport_global, transport_parsing);
-  t->parsing_active = 0;
+  t->executor.parsing_active = 0;
   /* handle delayed transport ops (if there is one) */
   if (t->post_parsing_op) {
     grpc_transport_op *op = t->post_parsing_op;
     t->post_parsing_op = NULL;
-    perform_transport_op_locked(exec_ctx, t, op);
+    perform_transport_op_locked(exec_ctx, t, NULL, op);
     gpr_free(op);
   }
   /* if a stream is in the stream map, and gets cancelled, we need to
-   * ensure
-   * we are not parsing before continuing the cancellation to keep
-   * things
-   * in
-   * a sane state */
+   * ensure we are not parsing before continuing the cancellation to keep
+   * things in a sane state */
+  grpc_chttp2_stream_global *stream_global;
   while (grpc_chttp2_list_pop_closed_waiting_for_parsing(transport_global,
                                                          &stream_global)) {
     GPR_ASSERT(stream_global->in_stream_map);
@@ -1604,28 +1534,37 @@ static void post_parse_locked(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
     GRPC_CHTTP2_STREAM_UNREF(exec_ctx, stream_global, "chttp2");
   }
 
-  post_recv_data_locked(exec_ctx, t, s_unused, arg);
+  post_reading_action_locked(exec_ctx, t, s_unused, arg);
 }
 
-static void post_recv_data_locked(grpc_exec_ctx *exec_ctx,
-                                  grpc_chttp2_transport *t,
-                                  grpc_chttp2_stream *s_unused, void *arg) {
-  if (!success || i != t->read_buffer.count || t->closed) {
+static void post_reading_action_locked(grpc_exec_ctx *exec_ctx,
+                                       grpc_chttp2_transport *t,
+                                       grpc_chttp2_stream *s_unused,
+                                       void *arg) {
+  bool success = (bool)(uintptr_t)arg;
+  bool keep_reading = false;
+  if (!success || t->closed) {
     drop_connection(exec_ctx, t);
-    read_error_locked(exec_ctx, t);
+    t->endpoint_reading = 0;
+    if (!t->executor.writing_active && t->ep) {
+      grpc_endpoint_destroy(exec_ctx, t->ep);
+      t->ep = NULL;
+      /* safe as we still have a ref for read */
+      UNREF_TRANSPORT(exec_ctx, t, "disconnect");
+    }
   } else if (!t->closed) {
-    keep_reading = 1;
+    keep_reading = true;
     REF_TRANSPORT(t, "keep_reading");
     prevent_endpoint_shutdown(t);
   }
   gpr_slice_buffer_reset_and_unref(&t->read_buffer);
 
   if (keep_reading) {
-    grpc_endpoint_read(exec_ctx, t->ep, &t->read_buffer, &t->recv_data);
+    grpc_endpoint_read(exec_ctx, t->ep, &t->read_buffer, &t->reading_action);
     allow_endpoint_shutdown_locked(exec_ctx, t);
     UNREF_TRANSPORT(exec_ctx, t, "keep_reading");
   } else {
-    UNREF_TRANSPORT(exec_ctx, t, "recv_data");
+    UNREF_TRANSPORT(exec_ctx, t, "reading_action");
   }
 }
 
@@ -1650,7 +1589,7 @@ static void connectivity_state_set(
 
 static void add_to_pollset_locked(grpc_exec_ctx *exec_ctx,
                                   grpc_chttp2_transport *t,
-                                  grpc_pollset *pollset) {
+                                  grpc_chttp2_stream *s_unused, void *pollset) {
   if (t->ep) {
     grpc_endpoint_add_to_pollset(exec_ctx, t->ep, pollset);
   }
@@ -1658,7 +1597,8 @@ static void add_to_pollset_locked(grpc_exec_ctx *exec_ctx,
 
 static void add_to_pollset_set_locked(grpc_exec_ctx *exec_ctx,
                                       grpc_chttp2_transport *t,
-                                      grpc_pollset_set *pollset_set) {
+                                      grpc_chttp2_stream *s_unused,
+                                      void *pollset_set) {
   if (t->ep) {
     grpc_endpoint_add_to_pollset_set(exec_ctx, t->ep, pollset_set);
   }
@@ -1666,10 +1606,10 @@ static void add_to_pollset_set_locked(grpc_exec_ctx *exec_ctx,
 
 static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                         grpc_stream *gs, grpc_pollset *pollset) {
-  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
   /* TODO(ctiller): keep pollset alive */
-  grpc_chttp2_run_with_global_lock(gt, gs, add_to_pollset_locked, pollset,
-                                   NULL);
+  grpc_chttp2_run_with_global_lock(exec_ctx, (grpc_chttp2_transport *)gt,
+                                   (grpc_chttp2_stream *)gs,
+                                   add_to_pollset_locked, pollset, 0);
 }
 
 /*******************************************************************************
@@ -1716,36 +1656,51 @@ static void incoming_byte_stream_update_flow_control(
   }
 }
 
-static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
-                                     grpc_byte_stream *byte_stream,
-                                     gpr_slice *slice, size_t max_size_hint,
-                                     grpc_closure *on_complete) {
+typedef struct {
+  grpc_chttp2_incoming_byte_stream *byte_stream;
+  gpr_slice *slice;
+  size_t max_size_hint;
+  grpc_closure *on_complete;
+} incoming_byte_stream_next_arg;
+
+static void incoming_byte_stream_next_locked(grpc_exec_ctx *exec_ctx,
+                                             grpc_chttp2_transport *t,
+                                             grpc_chttp2_stream *s,
+                                             void *argp) {
+  incoming_byte_stream_next_arg *arg = argp;
   grpc_chttp2_incoming_byte_stream *bs =
-      (grpc_chttp2_incoming_byte_stream *)byte_stream;
+      (grpc_chttp2_incoming_byte_stream *)arg->byte_stream;
   grpc_chttp2_transport_global *transport_global = &bs->transport->global;
   grpc_chttp2_stream_global *stream_global = &bs->stream->global;
 
-  lock(bs->transport);
   if (bs->is_tail) {
-    incoming_byte_stream_update_flow_control(transport_global, stream_global,
-                                             max_size_hint, bs->slices.length);
+    incoming_byte_stream_update_flow_control(
+        transport_global, stream_global, arg->max_size_hint, bs->slices.length);
   }
   if (bs->slices.count > 0) {
-    *slice = gpr_slice_buffer_take_first(&bs->slices);
-    unlock(exec_ctx, bs->transport);
-    return 1;
+    *arg->slice = gpr_slice_buffer_take_first(&bs->slices);
+    grpc_exec_ctx_enqueue(exec_ctx, arg->on_complete, true, NULL);
   } else if (bs->failed) {
-    grpc_exec_ctx_enqueue(exec_ctx, on_complete, false, NULL);
-    unlock(exec_ctx, bs->transport);
-    return 0;
+    grpc_exec_ctx_enqueue(exec_ctx, arg->on_complete, false, NULL);
   } else {
-    bs->on_next = on_complete;
-    bs->next = slice;
-    unlock(exec_ctx, bs->transport);
-    return 0;
+    bs->on_next = arg->on_complete;
+    bs->next = arg->slice;
   }
 }
 
+static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
+                                     grpc_byte_stream *byte_stream,
+                                     gpr_slice *slice, size_t max_size_hint,
+                                     grpc_closure *on_complete) {
+  grpc_chttp2_incoming_byte_stream *bs =
+      (grpc_chttp2_incoming_byte_stream *)byte_stream;
+  incoming_byte_stream_next_arg arg = {bs, slice, max_size_hint, on_complete};
+  grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+                                   incoming_byte_stream_next_locked, &arg,
+                                   sizeof(arg));
+  return 0;
+}
+
 static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs) {
   if (gpr_unref(&bs->refs)) {
     gpr_slice_buffer_destroy(&bs->slices);
@@ -1758,18 +1713,43 @@ static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
   incoming_byte_stream_unref((grpc_chttp2_incoming_byte_stream *)byte_stream);
 }
 
-void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
-                                           grpc_chttp2_incoming_byte_stream *bs,
-                                           gpr_slice slice) {
-  gpr_mu_lock(&bs->transport->mu);
+typedef struct {
+  grpc_chttp2_incoming_byte_stream *byte_stream;
+  gpr_slice slice;
+} incoming_byte_stream_push_arg;
+
+static void incoming_byte_stream_push_locked(grpc_exec_ctx *exec_ctx,
+                                             grpc_chttp2_transport *t,
+                                             grpc_chttp2_stream *s,
+                                             void *argp) {
+  incoming_byte_stream_push_arg *arg = argp;
+  grpc_chttp2_incoming_byte_stream *bs = arg->byte_stream;
   if (bs->on_next != NULL) {
-    *bs->next = slice;
+    *bs->next = arg->slice;
     grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, true, NULL);
     bs->on_next = NULL;
   } else {
-    gpr_slice_buffer_add(&bs->slices, slice);
+    gpr_slice_buffer_add(&bs->slices, arg->slice);
   }
-  gpr_mu_unlock(&bs->transport->mu);
+}
+
+void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
+                                           grpc_chttp2_incoming_byte_stream *bs,
+                                           gpr_slice slice) {
+  incoming_byte_stream_push_arg arg = {bs, slice};
+  grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+                                   incoming_byte_stream_push_locked, &arg,
+                                   sizeof(arg));
+}
+
+static void incoming_byte_stream_finished_locked(grpc_exec_ctx *exec_ctx,
+                                                 grpc_chttp2_transport *t,
+                                                 grpc_chttp2_stream *s,
+                                                 void *argp) {
+  grpc_chttp2_incoming_byte_stream *bs = argp;
+  grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
+  bs->on_next = NULL;
+  bs->failed = 1;
 }
 
 void grpc_chttp2_incoming_byte_stream_finished(
@@ -1777,24 +1757,13 @@ void grpc_chttp2_incoming_byte_stream_finished(
     int from_parsing_thread) {
   if (!success) {
     if (from_parsing_thread) {
-      gpr_mu_lock(&bs->transport->mu);
-    }
-    grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
-    bs->on_next = NULL;
-    bs->failed = 1;
-    if (from_parsing_thread) {
-      gpr_mu_unlock(&bs->transport->mu);
-    }
-  } else {
-#ifndef NDEBUG
-    if (from_parsing_thread) {
-      gpr_mu_lock(&bs->transport->mu);
-    }
-    GPR_ASSERT(bs->on_next == NULL);
-    if (from_parsing_thread) {
-      gpr_mu_unlock(&bs->transport->mu);
+      grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+                                       incoming_byte_stream_finished_locked, bs,
+                                       0);
+    } else {
+      incoming_byte_stream_finished_locked(exec_ctx, bs->transport, bs->stream,
+                                           bs);
     }
-#endif
   }
   incoming_byte_stream_unref(bs);
 }
@@ -1943,7 +1912,7 @@ void grpc_chttp2_transport_start_reading(grpc_exec_ctx *exec_ctx,
                                          grpc_transport *transport,
                                          gpr_slice *slices, size_t nslices) {
   grpc_chttp2_transport *t = (grpc_chttp2_transport *)transport;
-  REF_TRANSPORT(t, "recv_data"); /* matches unref inside recv_data */
+  REF_TRANSPORT(t, "reading_action"); /* matches unref inside reading_action */
   gpr_slice_buffer_addn(&t->read_buffer, slices, nslices);
-  recv_data(exec_ctx, t, 1);
+  reading_action(exec_ctx, t, 1);
 }
-- 
GitLab


From 0027de17fc5e75af5ab5379f0e689223d0c81a3e Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 22 Mar 2016 16:04:40 -0700
Subject: [PATCH 021/525] Remove unused declaration

---
 src/core/transport/chttp2/internal.h | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/core/transport/chttp2/internal.h b/src/core/transport/chttp2/internal.h
index 7489cc67fb..7c97c7e33d 100644
--- a/src/core/transport/chttp2/internal.h
+++ b/src/core/transport/chttp2/internal.h
@@ -360,11 +360,6 @@ struct grpc_chttp2_transport {
   /** closure to actually do parsing */
   grpc_closure parsing_action;
 
-  struct {
-    size_t nslices;
-    gpr_slice *slices;
-  } executor_parsing;
-
   /** incoming read bytes */
   gpr_slice_buffer read_buffer;
 
-- 
GitLab


From 1907fc6ee9b26880f781eeee5459971d79d7337e Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 22 Mar 2016 16:05:54 -0700
Subject: [PATCH 022/525] Swap order of functions to reduce diff

---
 src/core/transport/chttp2_transport.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index eb9f7a2365..596e01f5c9 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -380,13 +380,6 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
   }
 }
 
-/** block grpc_endpoint_shutdown being called until a paired
-    allow_endpoint_shutdown is made */
-static void prevent_endpoint_shutdown(grpc_chttp2_transport *t) {
-  GPR_ASSERT(t->ep);
-  gpr_ref(&t->shutdown_ep_refs);
-}
-
 static void destroy_transport_locked(grpc_exec_ctx *exec_ctx,
                                      grpc_chttp2_transport *t,
                                      grpc_chttp2_stream *s_ignored,
@@ -402,6 +395,13 @@ static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
   UNREF_TRANSPORT(exec_ctx, t, "destroy");
 }
 
+/** block grpc_endpoint_shutdown being called until a paired
+    allow_endpoint_shutdown is made */
+static void prevent_endpoint_shutdown(grpc_chttp2_transport *t) {
+  GPR_ASSERT(t->ep);
+  gpr_ref(&t->shutdown_ep_refs);
+}
+
 static void allow_endpoint_shutdown_locked(grpc_exec_ctx *exec_ctx,
                                            grpc_chttp2_transport *t) {
   if (gpr_unref(&t->shutdown_ep_refs)) {
-- 
GitLab


From 223ae1c682dc56eefaae40f3fa28dd2b38d624d5 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 22 Mar 2016 16:08:35 -0700
Subject: [PATCH 023/525] Fix inadvertently reverted code

---
 src/core/transport/chttp2_transport.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 596e01f5c9..a82440701d 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -1000,14 +1000,14 @@ static void send_ping_locked(grpc_chttp2_transport *t, grpc_closure *on_recv) {
   p->next = &t->global.pings;
   p->prev = p->next->prev;
   p->prev->next = p->next->prev = p;
-  p->id[0] = (t->global.ping_counter >> 56) & 0xff;
-  p->id[1] = (t->global.ping_counter >> 48) & 0xff;
-  p->id[2] = (t->global.ping_counter >> 40) & 0xff;
-  p->id[3] = (t->global.ping_counter >> 32) & 0xff;
-  p->id[4] = (t->global.ping_counter >> 24) & 0xff;
-  p->id[5] = (t->global.ping_counter >> 16) & 0xff;
-  p->id[6] = (t->global.ping_counter >> 8) & 0xff;
-  p->id[7] = t->global.ping_counter & 0xff;
+  p->id[0] = (uint8_t)((t->global.ping_counter >> 56) & 0xff);
+  p->id[1] = (uint8_t)((t->global.ping_counter >> 48) & 0xff);
+  p->id[2] = (uint8_t)((t->global.ping_counter >> 40) & 0xff);
+  p->id[3] = (uint8_t)((t->global.ping_counter >> 32) & 0xff);
+  p->id[4] = (uint8_t)((t->global.ping_counter >> 24) & 0xff);
+  p->id[5] = (uint8_t)((t->global.ping_counter >> 16) & 0xff);
+  p->id[6] = (uint8_t)((t->global.ping_counter >> 8) & 0xff);
+  p->id[7] = (uint8_t)(t->global.ping_counter & 0xff);
   p->on_recv = on_recv;
   gpr_slice_buffer_add(&t->global.qbuf, grpc_chttp2_ping_create(0, p->id));
 }
-- 
GitLab


From b4f7cbd339ea89e1f736aa22c86ad72ad69decec Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 22 Mar 2016 16:22:37 -0700
Subject: [PATCH 024/525] Fix stack corruption

---
 src/core/transport/chttp2_transport.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index a82440701d..83739db1e2 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -718,7 +718,7 @@ static void terminate_writing_with_lock(grpc_exec_ctx *exec_ctx,
                                         grpc_chttp2_transport *t,
                                         grpc_chttp2_stream *s_ignored,
                                         void *a) {
-  int success = *(int *)a;
+  bool success = (bool)(uintptr_t)a;
 
   allow_endpoint_shutdown_locked(exec_ctx, t);
 
@@ -750,8 +750,8 @@ void grpc_chttp2_terminate_writing(grpc_exec_ctx *exec_ctx,
                                    void *transport_writing, bool success) {
   grpc_chttp2_transport *t = TRANSPORT_FROM_WRITING(transport_writing);
   grpc_chttp2_run_with_global_lock(exec_ctx, t, NULL,
-                                   terminate_writing_with_lock, &success,
-                                   sizeof(success));
+                                   terminate_writing_with_lock,
+                                   (void *)(uintptr_t)success, 0);
 }
 
 static void writing_action(grpc_exec_ctx *exec_ctx, void *gt,
-- 
GitLab


From a67a83ebde2ab47b230857d47330ac63c7ab62b1 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 22 Mar 2016 21:43:59 -0700
Subject: [PATCH 025/525] Move the most important member first

---
 src/core/transport/transport.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index 56ac927e36..908ef0bda4 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -98,6 +98,11 @@ void grpc_transport_move_stats(grpc_transport_stream_stats *from,
 /* Transport stream op: a set of operations to perform on a transport
    against a single stream */
 typedef struct grpc_transport_stream_op {
+  /** Should be enqueued when all requested operations (excluding recv_message
+      and recv_initial_metadata which have their own closures) in a given batch
+      have been completed. */
+  grpc_closure *on_complete;
+
   /** Send initial metadata to the peer, from the provided metadata batch. */
   grpc_metadata_batch *send_initial_metadata;
 
@@ -124,11 +129,6 @@ typedef struct grpc_transport_stream_op {
   /** Collect any stats into provided buffer, zero internal stat counters */
   grpc_transport_stream_stats *collect_stats;
 
-  /** Should be enqueued when all requested operations (excluding recv_message
-      and recv_initial_metadata which have their own closures) in a given batch
-      have been completed. */
-  grpc_closure *on_complete;
-
   /** If != GRPC_STATUS_OK, cancel this stream */
   grpc_status_code cancel_with_status;
 
-- 
GitLab


From 2c8063cc7200789da67a10c53d98d0d15b1ad378 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 22 Mar 2016 22:12:15 -0700
Subject: [PATCH 026/525] Introduce a new memory reclamation scheme for channel
 stacks

Allows the bottom member of the stack to schedule the actual deallocation, allowing a final transport lock to be entered when destroying a call.
---
 src/core/census/grpc_filter.c          |  4 +-
 src/core/channel/channel_stack.c       |  6 ++-
 src/core/channel/channel_stack.h       | 11 +++--
 src/core/channel/client_channel.c      |  5 ++-
 src/core/channel/compress_filter.c     |  4 +-
 src/core/channel/connected_channel.c   | 13 +++---
 src/core/channel/http_client_filter.c  |  4 +-
 src/core/channel/http_server_filter.c  |  4 +-
 src/core/client_config/subchannel.c    |  6 +--
 src/core/security/client_auth_filter.c |  4 +-
 src/core/security/server_auth_filter.c |  4 +-
 src/core/surface/call.c                |  3 +-
 src/core/surface/lame_client.c         | 12 +++---
 src/core/surface/server.c              |  4 +-
 src/core/transport/chttp2_transport.c  | 57 +++++++++++++-------------
 src/core/transport/transport.c         |  5 ++-
 src/core/transport/transport.h         |  2 +-
 src/core/transport/transport_impl.h    |  2 +-
 test/core/channel/channel_stack_test.c |  6 +--
 19 files changed, 83 insertions(+), 73 deletions(-)

diff --git a/src/core/census/grpc_filter.c b/src/core/census/grpc_filter.c
index c8aaf31e2d..987407f050 100644
--- a/src/core/census/grpc_filter.c
+++ b/src/core/census/grpc_filter.c
@@ -134,7 +134,7 @@ static void client_init_call_elem(grpc_exec_ctx *exec_ctx,
 }
 
 static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                                     grpc_call_element *elem) {
+                                     grpc_call_element *elem, void *ignored) {
   call_data *d = elem->call_data;
   GPR_ASSERT(d != NULL);
   /* TODO(hongyu): record rpc client stats and census_rpc_end_op here */
@@ -152,7 +152,7 @@ static void server_init_call_elem(grpc_exec_ctx *exec_ctx,
 }
 
 static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                                     grpc_call_element *elem) {
+                                     grpc_call_element *elem, void *ignored) {
   call_data *d = elem->call_data;
   GPR_ASSERT(d != NULL);
   /* TODO(hongyu): record rpc server stats and census_tracing_end_op here */
diff --git a/src/core/channel/channel_stack.c b/src/core/channel/channel_stack.c
index 3e61688364..1869597975 100644
--- a/src/core/channel/channel_stack.c
+++ b/src/core/channel/channel_stack.c
@@ -213,14 +213,16 @@ void grpc_call_stack_ignore_set_pollset(grpc_exec_ctx *exec_ctx,
                                         grpc_call_element *elem,
                                         grpc_pollset *pollset) {}
 
-void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack) {
+void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack,
+                             void *and_free_memory) {
   grpc_call_element *elems = CALL_ELEMS_FROM_STACK(stack);
   size_t count = stack->count;
   size_t i;
 
   /* destroy per-filter data */
   for (i = 0; i < count; i++) {
-    elems[i].filter->destroy_call_elem(exec_ctx, &elems[i]);
+    elems[i].filter->destroy_call_elem(exec_ctx, &elems[i],
+                                       i == count - 1 ? and_free_memory : NULL);
   }
 }
 
diff --git a/src/core/channel/channel_stack.h b/src/core/channel/channel_stack.h
index 52362f0b20..4407333aff 100644
--- a/src/core/channel/channel_stack.h
+++ b/src/core/channel/channel_stack.h
@@ -104,8 +104,12 @@ typedef struct {
   void (*set_pollset)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                       grpc_pollset *pollset);
   /* Destroy per call data.
-     The filter does not need to do any chaining */
-  void (*destroy_call_elem)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem);
+     The filter does not need to do any chaining.
+     The bottom filter of a stack will be passed a non-NULL pointer to
+     \a and_free_memory that should be passed to gpr_free when destruction
+     is complete. */
+  void (*destroy_call_elem)(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                            void *and_free_memory);
 
   /* sizeof(per channel data) */
   size_t sizeof_channel_data;
@@ -223,7 +227,8 @@ void grpc_call_stack_set_pollset(grpc_exec_ctx *exec_ctx,
 #endif
 
 /* Destroy a call stack */
-void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack);
+void grpc_call_stack_destroy(grpc_exec_ctx *exec_ctx, grpc_call_stack *stack,
+                             void *and_free_memory);
 
 /* Ignore set pollset - used by filters to implement the set_pollset method
    if they don't care about pollsets at all. Does nothing. */
diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c
index f021a8ae32..27d6e03d28 100644
--- a/src/core/channel/client_channel.c
+++ b/src/core/channel/client_channel.c
@@ -379,9 +379,10 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 }
 
 /* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *and_free_memory) {
   grpc_subchannel_call_holder_destroy(exec_ctx, elem->call_data);
+  gpr_free(and_free_memory);
 }
 
 /* Constructor for channel_data */
diff --git a/src/core/channel/compress_filter.c b/src/core/channel/compress_filter.c
index 3e7ca08fd2..d5d5fc2e35 100644
--- a/src/core/channel/compress_filter.c
+++ b/src/core/channel/compress_filter.c
@@ -246,8 +246,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 }
 
 /* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *ignored) {
   /* grab pointers to our data from the call element */
   call_data *calld = elem->call_data;
   gpr_slice_buffer_destroy(&calld->slices);
diff --git a/src/core/channel/connected_channel.c b/src/core/channel/connected_channel.c
index e7ed3ccfeb..e6e9daa452 100644
--- a/src/core/channel/connected_channel.c
+++ b/src/core/channel/connected_channel.c
@@ -37,13 +37,13 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "src/core/support/string.h"
-#include "src/core/transport/transport.h"
-#include "src/core/profiling/timers.h"
 #include <grpc/byte_buffer.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/slice_buffer.h>
+#include "src/core/profiling/timers.h"
+#include "src/core/support/string.h"
+#include "src/core/transport/transport.h"
 
 #define MAX_BUFFER_LENGTH 8192
 
@@ -102,12 +102,13 @@ static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 }
 
 /* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *and_free_memory) {
   call_data *calld = elem->call_data;
   channel_data *chand = elem->channel_data;
   grpc_transport_destroy_stream(exec_ctx, chand->transport,
-                                TRANSPORT_STREAM_FROM_CALL_DATA(calld));
+                                TRANSPORT_STREAM_FROM_CALL_DATA(calld),
+                                and_free_memory);
 }
 
 /* Constructor for channel_data */
diff --git a/src/core/channel/http_client_filter.c b/src/core/channel/http_client_filter.c
index 1aa27208c2..26f1110ac4 100644
--- a/src/core/channel/http_client_filter.c
+++ b/src/core/channel/http_client_filter.c
@@ -151,8 +151,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 }
 
 /* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *ignored) {}
 
 static grpc_mdelem *scheme_from_args(const grpc_channel_args *args) {
   unsigned i;
diff --git a/src/core/channel/http_server_filter.c b/src/core/channel/http_server_filter.c
index 370f8dbe42..6c97a0762d 100644
--- a/src/core/channel/http_server_filter.c
+++ b/src/core/channel/http_server_filter.c
@@ -212,8 +212,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 }
 
 /* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *ignored) {}
 
 /* Constructor for channel_data */
 static void init_channel_elem(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/client_config/subchannel.c b/src/core/client_config/subchannel.c
index 8f150a8d81..7a61df40df 100644
--- a/src/core/client_config/subchannel.c
+++ b/src/core/client_config/subchannel.c
@@ -620,9 +620,9 @@ static void subchannel_call_destroy(grpc_exec_ctx *exec_ctx, void *call,
                                     bool success) {
   grpc_subchannel_call *c = call;
   GPR_TIMER_BEGIN("grpc_subchannel_call_unref.destroy", 0);
-  grpc_call_stack_destroy(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c));
-  GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, c->connection, "subchannel_call");
-  gpr_free(c);
+  grpc_connected_subchannel *connection = c->connection;
+  grpc_call_stack_destroy(exec_ctx, SUBCHANNEL_CALL_TO_CALL_STACK(c), c);
+  GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, connection, "subchannel_call");
   GPR_TIMER_END("grpc_subchannel_call_unref.destroy", 0);
 }
 
diff --git a/src/core/security/client_auth_filter.c b/src/core/security/client_auth_filter.c
index 332d4259d2..c72bfc40e6 100644
--- a/src/core/security/client_auth_filter.c
+++ b/src/core/security/client_auth_filter.c
@@ -277,8 +277,8 @@ static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 }
 
 /* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *ignored) {
   call_data *calld = elem->call_data;
   grpc_call_credentials_unref(calld->creds);
   if (calld->host != NULL) {
diff --git a/src/core/security/server_auth_filter.c b/src/core/security/server_auth_filter.c
index 3d8e5e8d35..3d348c8266 100644
--- a/src/core/security/server_auth_filter.c
+++ b/src/core/security/server_auth_filter.c
@@ -224,8 +224,8 @@ static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                         grpc_pollset *pollset) {}
 
 /* Destructor for call_data */
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *ignored) {}
 
 /* Constructor for channel_data */
 static void init_channel_elem(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index d9808e6f4c..e7861b8e3b 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -375,7 +375,6 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
   if (c->receiving_stream != NULL) {
     grpc_byte_stream_destroy(exec_ctx, c->receiving_stream);
   }
-  grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c));
   GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->channel, "call");
   gpr_mu_destroy(&c->mu);
   for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
@@ -394,7 +393,7 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
   if (c->cq) {
     GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
   }
-  gpr_free(c);
+  grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c), c);
   GPR_TIMER_END("destroy_call", 0);
 }
 
diff --git a/src/core/surface/lame_client.c b/src/core/surface/lame_client.c
index 58f89946d2..9ef88bba65 100644
--- a/src/core/surface/lame_client.c
+++ b/src/core/surface/lame_client.c
@@ -37,13 +37,13 @@
 
 #include <string.h>
 
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
 #include "src/core/channel/channel_stack.h"
 #include "src/core/support/string.h"
 #include "src/core/surface/api_trace.h"
-#include "src/core/surface/channel.h"
 #include "src/core/surface/call.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
+#include "src/core/surface/channel.h"
 
 typedef struct {
   grpc_linked_mdelem status;
@@ -104,8 +104,10 @@ static void lame_start_transport_op(grpc_exec_ctx *exec_ctx,
 static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                            grpc_call_element_args *args) {}
 
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *and_free_memory) {
+  gpr_free(and_free_memory);
+}
 
 static void init_channel_elem(grpc_exec_ctx *exec_ctx,
                               grpc_channel_element *elem,
diff --git a/src/core/surface/server.c b/src/core/surface/server.c
index da93474b26..88554e4224 100644
--- a/src/core/surface/server.c
+++ b/src/core/surface/server.c
@@ -692,8 +692,8 @@ static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
   server_ref(chand->server);
 }
 
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *ignored) {
   channel_data *chand = elem->channel_data;
   call_data *calld = elem->call_data;
 
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 182c713ee7..3a73826c3a 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -512,26 +512,20 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   return 0;
 }
 
-static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                           grpc_stream *gs) {
-  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
-  grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
+static void destroy_stream_locked(grpc_exec_ctx *exec_ctx,
+                                  grpc_chttp2_transport *t,
+                                  grpc_chttp2_stream *s, void *arg) {
   grpc_byte_stream *bs;
 
-#if 0
-  int i;
-
   GPR_TIMER_BEGIN("destroy_stream", 0);
 
-  gpr_mu_lock(&t->mu);
-
   GPR_ASSERT((s->global.write_closed && s->global.read_closed) ||
              s->global.id == 0);
   GPR_ASSERT(!s->global.in_stream_map);
   if (grpc_chttp2_unregister_stream(t, s) && t->global.sent_goaway) {
-    close_transport_locked(exec_ctx, t);
+    close_transport_locked(exec_ctx, t, NULL, NULL);
   }
-  if (!t->parsing_active && s->global.id) {
+  if (!t->executor.parsing_active && s->global.id) {
     GPR_ASSERT(grpc_chttp2_stream_map_find(&t->parsing_stream_map,
                                            s->global.id) == NULL);
   }
@@ -539,11 +533,11 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   grpc_chttp2_list_remove_unannounced_incoming_window_available(&t->global,
                                                                 &s->global);
   grpc_chttp2_list_remove_stalled_by_transport(&t->global, &s->global);
-#endif
 
-  int i;
+  /* TODO(ctiller): the remainder of this function could be done without the
+                    global lock */
 
-  for (i = 0; i < STREAM_LIST_COUNT; i++) {
+  for (int i = 0; i < STREAM_LIST_COUNT; i++) {
     if (s->included[i]) {
       gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
               t->global.is_client ? "client" : "server", s->global.id, i);
@@ -574,6 +568,17 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   UNREF_TRANSPORT(exec_ctx, t, "stream");
 
   GPR_TIMER_END("destroy_stream", 0);
+
+  gpr_free(arg);
+}
+
+static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                           grpc_stream *gs, void *and_free_memory) {
+  grpc_chttp2_transport *t = (grpc_chttp2_transport *)gt;
+  grpc_chttp2_stream *s = (grpc_chttp2_stream *)gs;
+
+  grpc_chttp2_run_with_global_lock(exec_ctx, t, s, destroy_stream_locked,
+                                   and_free_memory, 0);
 }
 
 grpc_chttp2_stream_parsing *grpc_chttp2_parsing_lookup_stream(
@@ -1509,8 +1514,8 @@ static void parsing_action(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   GPR_TIMER_BEGIN("reading_action.parse", 0);
   size_t i = 0;
   for (; i < t->read_buffer.count &&
-         grpc_chttp2_perform_read(exec_ctx, &t->parsing,
-                                  t->read_buffer.slices[i]);
+             grpc_chttp2_perform_read(exec_ctx, &t->parsing,
+                                      t->read_buffer.slices[i]);
        i++)
     ;
   if (i != t->read_buffer.count) {
@@ -1602,10 +1607,9 @@ static void connectivity_state_set(
     grpc_connectivity_state state, const char *reason) {
   GRPC_CHTTP2_IF_TRACING(
       gpr_log(GPR_DEBUG, "set connectivity_state=%d", state));
-  grpc_connectivity_state_set(
-      exec_ctx,
-      &TRANSPORT_FROM_GLOBAL(transport_global)->channel_callback.state_tracker,
-      state, reason);
+  grpc_connectivity_state_set(exec_ctx, &TRANSPORT_FROM_GLOBAL(transport_global)
+                                             ->channel_callback.state_tracker,
+                              state, reason);
 }
 
 /*******************************************************************************
@@ -1915,15 +1919,10 @@ static char *chttp2_get_peer(grpc_exec_ctx *exec_ctx, grpc_transport *t) {
   return gpr_strdup(((grpc_chttp2_transport *)t)->peer_string);
 }
 
-static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
-                                             "chttp2",
-                                             init_stream,
-                                             set_pollset,
-                                             perform_stream_op,
-                                             perform_transport_op,
-                                             destroy_stream,
-                                             destroy_transport,
-                                             chttp2_get_peer};
+static const grpc_transport_vtable vtable = {
+    sizeof(grpc_chttp2_stream), "chttp2", init_stream, set_pollset,
+    perform_stream_op, perform_transport_op, destroy_stream, destroy_transport,
+    chttp2_get_peer};
 
 grpc_transport *grpc_create_chttp2_transport(
     grpc_exec_ctx *exec_ctx, const grpc_channel_args *channel_args,
diff --git a/src/core/transport/transport.c b/src/core/transport/transport.c
index 5b5af0e7d0..b42980431a 100644
--- a/src/core/transport/transport.c
+++ b/src/core/transport/transport.c
@@ -133,8 +133,9 @@ void grpc_transport_set_pollset(grpc_exec_ctx *exec_ctx,
 
 void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
                                    grpc_transport *transport,
-                                   grpc_stream *stream) {
-  transport->vtable->destroy_stream(exec_ctx, transport, stream);
+                                   grpc_stream *stream, void *and_free_memory) {
+  transport->vtable->destroy_stream(exec_ctx, transport, stream,
+                                    and_free_memory);
 }
 
 char *grpc_transport_get_peer(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index 908ef0bda4..ddb81f9a34 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -208,7 +208,7 @@ void grpc_transport_set_pollset(grpc_exec_ctx *exec_ctx,
                  caller, but any child memory must be cleaned up) */
 void grpc_transport_destroy_stream(grpc_exec_ctx *exec_ctx,
                                    grpc_transport *transport,
-                                   grpc_stream *stream);
+                                   grpc_stream *stream, void *and_free_memory);
 
 void grpc_transport_stream_op_finish_with_failure(grpc_exec_ctx *exec_ctx,
                                                   grpc_transport_stream_op *op);
diff --git a/src/core/transport/transport_impl.h b/src/core/transport/transport_impl.h
index d9ecc4d2ba..9d53971f4d 100644
--- a/src/core/transport/transport_impl.h
+++ b/src/core/transport/transport_impl.h
@@ -63,7 +63,7 @@ typedef struct grpc_transport_vtable {
 
   /* implementation of grpc_transport_destroy_stream */
   void (*destroy_stream)(grpc_exec_ctx *exec_ctx, grpc_transport *self,
-                         grpc_stream *stream);
+                         grpc_stream *stream, void *and_free_memory);
 
   /* implementation of grpc_transport_destroy */
   void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_transport *self);
diff --git a/test/core/channel/channel_stack_test.c b/test/core/channel/channel_stack_test.c
index e19e9a57ae..ca7c57c94e 100644
--- a/test/core/channel/channel_stack_test.c
+++ b/test/core/channel/channel_stack_test.c
@@ -62,8 +62,8 @@ static void call_init_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 static void channel_destroy_func(grpc_exec_ctx *exec_ctx,
                                  grpc_channel_element *elem) {}
 
-static void call_destroy_func(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {
+static void call_destroy_func(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *ignored) {
   ++*(int *)(elem->channel_data);
 }
 
@@ -87,7 +87,7 @@ static void free_channel(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
 }
 
 static void free_call(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
-  grpc_call_stack_destroy(exec_ctx, arg);
+  grpc_call_stack_destroy(exec_ctx, arg, NULL);
   gpr_free(arg);
 }
 
-- 
GitLab


From 414217e22c019d8c23e528fb010091244506d896 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 25 Mar 2016 13:31:06 -0700
Subject: [PATCH 027/525] Fix ordering problem: trailing metadata could come
 before the last message was read

---
 src/core/surface/completion_queue.c   |  4 ++
 src/core/transport/chttp2/internal.h  | 19 ++++---
 src/core/transport/chttp2_transport.c | 74 ++++++++++++++++++++++-----
 3 files changed, 76 insertions(+), 21 deletions(-)

diff --git a/src/core/surface/completion_queue.c b/src/core/surface/completion_queue.c
index b22818ea87..1e7d1b0028 100644
--- a/src/core/surface/completion_queue.c
+++ b/src/core/surface/completion_queue.c
@@ -227,6 +227,10 @@ void grpc_cq_end_op(grpc_exec_ctx *exec_ctx, grpc_completion_queue *cc,
 #endif
 
   GPR_TIMER_BEGIN("grpc_cq_end_op", 0);
+  GRPC_API_TRACE(
+      "grpc_cq_end_op(exec_ctx=%p, cc=%p, tag=%p, success=%d, done=%p, "
+      "done_arg=%p, storage=%p)",
+      7, (exec_ctx, cc, tag, success, done, done_arg, storage));
 
   storage->tag = tag;
   storage->done = done;
diff --git a/src/core/transport/chttp2/internal.h b/src/core/transport/chttp2/internal.h
index 8c5ed6532b..7f6c4d3de2 100644
--- a/src/core/transport/chttp2/internal.h
+++ b/src/core/transport/chttp2/internal.h
@@ -416,21 +416,26 @@ typedef struct {
   grpc_transport_stream_stats *collecting_stats;
   grpc_transport_stream_stats stats;
 
+  /** number of streams that are currently being read */
+  gpr_refcount active_streams;
+
   /** when the application requests writes be closed, the write_closed is
       'queued'; when the close is flow controlled into the send path, we are
       'sending' it; when the write has been performed it is 'sent' */
-  uint8_t write_closed;
+  bool write_closed;
   /** is this stream reading half-closed (boolean) */
-  uint8_t read_closed;
+  bool read_closed;
+  /** are all published incoming byte streams closed */
+  bool all_incoming_byte_streams_finished;
   /** is this stream in the stream map? (boolean) */
-  uint8_t in_stream_map;
+  bool in_stream_map;
   /** has this stream seen an error? if 1, then pending incoming frames
       can be thrown away */
-  uint8_t seen_error;
+  bool seen_error;
 
-  uint8_t published_initial_metadata;
-  uint8_t published_trailing_metadata;
-  uint8_t faked_trailing_metadata;
+  bool published_initial_metadata;
+  bool published_trailing_metadata;
+  bool faked_trailing_metadata;
 
   grpc_chttp2_incoming_metadata_buffer received_initial_metadata;
   grpc_chttp2_incoming_metadata_buffer received_trailing_metadata;
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 3a73826c3a..8f660a537f 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -478,6 +478,10 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   memset(s, 0, sizeof(*s));
 
   s->refcount = refcount;
+  /* We reserve one 'active stream' that's dropped when the stream is
+     read-closed. The others are for incoming_byte_streams that are actively
+     reading */
+  gpr_ref_init(&s->global.active_streams, 1);
   GRPC_CHTTP2_STREAM_REF(&s->global, "chttp2");
 
   grpc_chttp2_incoming_metadata_buffer_init(&s->parsing.metadata_buffer[0]);
@@ -1169,7 +1173,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
                   &stream_global->incoming_frames)) != NULL) {
         grpc_byte_stream_destroy(exec_ctx, bs);
       }
-      if (stream_global->incoming_frames.head == NULL) {
+      if (stream_global->all_incoming_byte_streams_finished) {
         grpc_chttp2_incoming_metadata_buffer_publish(
             &stream_global->received_trailing_metadata,
             stream_global->recv_trailing_metadata);
@@ -1181,6 +1185,15 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
   }
 }
 
+static void decrement_active_streams_locked(
+    grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
+    grpc_chttp2_stream_global *stream_global) {
+  if ((stream_global->all_incoming_byte_streams_finished =
+           gpr_unref(&stream_global->active_streams))) {
+    grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
+  }
+}
+
 static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
                           uint32_t id) {
   size_t new_stream_count;
@@ -1297,6 +1310,7 @@ void grpc_chttp2_mark_stream_closed(
     stream_global->read_closed = 1;
     stream_global->published_initial_metadata = 1;
     stream_global->published_trailing_metadata = 1;
+    decrement_active_streams_locked(exec_ctx, transport_global, stream_global);
   }
   if (close_writes && !stream_global->write_closed) {
     stream_global->write_closed = 1;
@@ -1730,8 +1744,14 @@ static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
   return 0;
 }
 
-static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs) {
+static void incoming_byte_stream_unref_locked(grpc_exec_ctx *exec_ctx,
+                                              grpc_chttp2_transport *t,
+                                              grpc_chttp2_stream *s,
+                                              void *argp) {
+  grpc_chttp2_incoming_byte_stream *bs = argp;
   if (gpr_unref(&bs->refs)) {
+    decrement_active_streams_locked(exec_ctx, &bs->transport->global,
+                                    &bs->stream->global);
     gpr_slice_buffer_destroy(&bs->slices);
     gpr_free(bs);
   }
@@ -1739,7 +1759,10 @@ static void incoming_byte_stream_unref(grpc_chttp2_incoming_byte_stream *bs) {
 
 static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
                                          grpc_byte_stream *byte_stream) {
-  incoming_byte_stream_unref((grpc_chttp2_incoming_byte_stream *)byte_stream);
+  grpc_chttp2_incoming_byte_stream *bs =
+      (grpc_chttp2_incoming_byte_stream *)byte_stream;
+  grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
+                                   incoming_byte_stream_unref_locked, bs, 0);
 }
 
 typedef struct {
@@ -1771,30 +1794,52 @@ void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
                                    sizeof(arg));
 }
 
-static void incoming_byte_stream_finished_locked(grpc_exec_ctx *exec_ctx,
-                                                 grpc_chttp2_transport *t,
-                                                 grpc_chttp2_stream *s,
-                                                 void *argp) {
+static void incoming_byte_stream_deactivate_locked(
+    grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_stream *s,
+    grpc_chttp2_incoming_byte_stream *bs) {
+  incoming_byte_stream_unref_locked(exec_ctx, t, s, bs);
+}
+
+static void incoming_byte_stream_finished_failed_locked(
+    grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_stream *s,
+    void *argp) {
   grpc_chttp2_incoming_byte_stream *bs = argp;
   grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
   bs->on_next = NULL;
   bs->failed = 1;
+  incoming_byte_stream_deactivate_locked(exec_ctx, t, s, bs);
+}
+
+static void incoming_byte_stream_finished_ok_locked(grpc_exec_ctx *exec_ctx,
+                                                    grpc_chttp2_transport *t,
+                                                    grpc_chttp2_stream *s,
+                                                    void *argp) {
+  grpc_chttp2_incoming_byte_stream *bs = argp;
+  incoming_byte_stream_deactivate_locked(exec_ctx, t, s, bs);
 }
 
 void grpc_chttp2_incoming_byte_stream_finished(
     grpc_exec_ctx *exec_ctx, grpc_chttp2_incoming_byte_stream *bs, int success,
     int from_parsing_thread) {
-  if (!success) {
-    if (from_parsing_thread) {
+  if (from_parsing_thread) {
+    if (success) {
       grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
-                                       incoming_byte_stream_finished_locked, bs,
-                                       0);
+                                       incoming_byte_stream_finished_ok_locked,
+                                       bs, 0);
+    } else {
+      incoming_byte_stream_finished_ok_locked(exec_ctx, bs->transport,
+                                              bs->stream, bs);
+    }
+  } else {
+    if (success) {
+      grpc_chttp2_run_with_global_lock(
+          exec_ctx, bs->transport, bs->stream,
+          incoming_byte_stream_finished_failed_locked, bs, 0);
     } else {
-      incoming_byte_stream_finished_locked(exec_ctx, bs->transport, bs->stream,
-                                           bs);
+      incoming_byte_stream_finished_failed_locked(exec_ctx, bs->transport,
+                                                  bs->stream, bs);
     }
   }
-  incoming_byte_stream_unref(bs);
 }
 
 grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
@@ -1811,6 +1856,7 @@ grpc_chttp2_incoming_byte_stream *grpc_chttp2_incoming_byte_stream_create(
   incoming_byte_stream->next_message = NULL;
   incoming_byte_stream->transport = TRANSPORT_FROM_PARSING(transport_parsing);
   incoming_byte_stream->stream = STREAM_FROM_PARSING(stream_parsing);
+  gpr_ref(&incoming_byte_stream->stream->global.active_streams);
   gpr_slice_buffer_init(&incoming_byte_stream->slices);
   incoming_byte_stream->on_next = NULL;
   incoming_byte_stream->is_tail = 1;
-- 
GitLab


From a3b54cdff87181193bf66022d204635ddb24cd80 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 25 Mar 2016 15:59:55 -0700
Subject: [PATCH 028/525] Get asan passing with new locking scheme

---
 src/core/iomgr/iomgr.c                   |  6 +-
 src/core/transport/chttp2/internal.h     |  3 +
 src/core/transport/chttp2/stream_lists.c |  8 +++
 src/core/transport/chttp2_transport.c    | 82 +++++++++++++-----------
 src/core/transport/transport.h           |  2 +-
 5 files changed, 62 insertions(+), 39 deletions(-)

diff --git a/src/core/iomgr/iomgr.c b/src/core/iomgr/iomgr.c
index 3ab4430668..5a617e1e48 100644
--- a/src/core/iomgr/iomgr.c
+++ b/src/core/iomgr/iomgr.c
@@ -168,8 +168,10 @@ bool grpc_iomgr_abort_on_leaks(void) {
   if (env == NULL) return false;
   static const char *truthy[] = {"yes",  "Yes",  "YES", "true",
                                  "True", "TRUE", "1"};
+  bool should_we = false;
   for (size_t i = 0; i < GPR_ARRAY_SIZE(truthy); i++) {
-    if (0 == strcmp(env, truthy[i])) return true;
+    if (0 == strcmp(env, truthy[i])) should_we = true;
   }
-  return false;
+  gpr_free(env);
+  return should_we;
 }
diff --git a/src/core/transport/chttp2/internal.h b/src/core/transport/chttp2/internal.h
index 7f6c4d3de2..e447b0d422 100644
--- a/src/core/transport/chttp2/internal.h
+++ b/src/core/transport/chttp2/internal.h
@@ -594,6 +594,9 @@ int grpc_chttp2_list_pop_waiting_for_concurrency(
 void grpc_chttp2_list_add_check_read_ops(
     grpc_chttp2_transport_global *transport_global,
     grpc_chttp2_stream_global *stream_global);
+bool grpc_chttp2_list_remove_check_read_ops(
+    grpc_chttp2_transport_global *transport_global,
+    grpc_chttp2_stream_global *stream_global);
 int grpc_chttp2_list_pop_check_read_ops(
     grpc_chttp2_transport_global *transport_global,
     grpc_chttp2_stream_global **stream_global);
diff --git a/src/core/transport/chttp2/stream_lists.c b/src/core/transport/chttp2/stream_lists.c
index 60fe735cfc..053ded1bc3 100644
--- a/src/core/transport/chttp2/stream_lists.c
+++ b/src/core/transport/chttp2/stream_lists.c
@@ -305,6 +305,14 @@ void grpc_chttp2_list_add_check_read_ops(
                   GRPC_CHTTP2_LIST_CHECK_READ_OPS);
 }
 
+bool grpc_chttp2_list_remove_check_read_ops(
+    grpc_chttp2_transport_global *transport_global,
+    grpc_chttp2_stream_global *stream_global) {
+  return stream_list_maybe_remove(TRANSPORT_FROM_GLOBAL(transport_global),
+                                  STREAM_FROM_GLOBAL(stream_global),
+                                  GRPC_CHTTP2_LIST_CHECK_READ_OPS);
+}
+
 int grpc_chttp2_list_pop_check_read_ops(
     grpc_chttp2_transport_global *transport_global,
     grpc_chttp2_stream_global **stream_global) {
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 8f660a537f..d71061452a 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -140,7 +140,10 @@ static void incoming_byte_stream_update_flow_control(
     grpc_chttp2_transport_global *transport_global,
     grpc_chttp2_stream_global *stream_global, size_t max_size_hint,
     size_t have_already);
-
+static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx,
+                                                grpc_chttp2_transport *t,
+                                                grpc_chttp2_stream *s,
+                                                void *byte_stream);
 static void fail_pending_writes(grpc_exec_ctx *exec_ctx,
                                 grpc_chttp2_stream_global *stream_global);
 
@@ -534,12 +537,15 @@ static void destroy_stream_locked(grpc_exec_ctx *exec_ctx,
                                            s->global.id) == NULL);
   }
 
+  while (
+      (bs = grpc_chttp2_incoming_frame_queue_pop(&s->global.incoming_frames))) {
+    incoming_byte_stream_destroy_locked(exec_ctx, NULL, NULL, bs);
+  }
+
   grpc_chttp2_list_remove_unannounced_incoming_window_available(&t->global,
                                                                 &s->global);
   grpc_chttp2_list_remove_stalled_by_transport(&t->global, &s->global);
-
-  /* TODO(ctiller): the remainder of this function could be done without the
-                    global lock */
+  grpc_chttp2_list_remove_check_read_ops(&t->global, &s->global);
 
   for (int i = 0; i < STREAM_LIST_COUNT; i++) {
     if (s->included[i]) {
@@ -549,11 +555,6 @@ static void destroy_stream_locked(grpc_exec_ctx *exec_ctx,
     }
   }
 
-  while (
-      (bs = grpc_chttp2_incoming_frame_queue_pop(&s->global.incoming_frames))) {
-    grpc_byte_stream_destroy(exec_ctx, bs);
-  }
-
   GPR_ASSERT(s->global.send_initial_metadata_finished == NULL);
   GPR_ASSERT(s->global.send_message_finished == NULL);
   GPR_ASSERT(s->global.send_trailing_metadata_finished == NULL);
@@ -1150,7 +1151,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
       while (stream_global->seen_error &&
              (bs = grpc_chttp2_incoming_frame_queue_pop(
                   &stream_global->incoming_frames)) != NULL) {
-        grpc_byte_stream_destroy(exec_ctx, bs);
+        incoming_byte_stream_destroy_locked(exec_ctx, NULL, NULL, bs);
       }
       if (stream_global->incoming_frames.head != NULL) {
         *stream_global->recv_message = grpc_chttp2_incoming_frame_queue_pop(
@@ -1171,7 +1172,7 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
       while (stream_global->seen_error &&
              (bs = grpc_chttp2_incoming_frame_queue_pop(
                   &stream_global->incoming_frames)) != NULL) {
-        grpc_byte_stream_destroy(exec_ctx, bs);
+        incoming_byte_stream_destroy_locked(exec_ctx, NULL, NULL, bs);
       }
       if (stream_global->all_incoming_byte_streams_finished) {
         grpc_chttp2_incoming_metadata_buffer_publish(
@@ -1528,8 +1529,8 @@ static void parsing_action(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   GPR_TIMER_BEGIN("reading_action.parse", 0);
   size_t i = 0;
   for (; i < t->read_buffer.count &&
-             grpc_chttp2_perform_read(exec_ctx, &t->parsing,
-                                      t->read_buffer.slices[i]);
+         grpc_chttp2_perform_read(exec_ctx, &t->parsing,
+                                  t->read_buffer.slices[i]);
        i++)
     ;
   if (i != t->read_buffer.count) {
@@ -1621,9 +1622,10 @@ static void connectivity_state_set(
     grpc_connectivity_state state, const char *reason) {
   GRPC_CHTTP2_IF_TRACING(
       gpr_log(GPR_DEBUG, "set connectivity_state=%d", state));
-  grpc_connectivity_state_set(exec_ctx, &TRANSPORT_FROM_GLOBAL(transport_global)
-                                             ->channel_callback.state_tracker,
-                              state, reason);
+  grpc_connectivity_state_set(
+      exec_ctx,
+      &TRANSPORT_FROM_GLOBAL(transport_global)->channel_callback.state_tracker,
+      state, reason);
 }
 
 /*******************************************************************************
@@ -1744,25 +1746,34 @@ static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
   return 0;
 }
 
-static void incoming_byte_stream_unref_locked(grpc_exec_ctx *exec_ctx,
-                                              grpc_chttp2_transport *t,
-                                              grpc_chttp2_stream *s,
-                                              void *argp) {
-  grpc_chttp2_incoming_byte_stream *bs = argp;
+static void incoming_byte_stream_unref(grpc_exec_ctx *exec_ctx,
+                                       grpc_chttp2_incoming_byte_stream *bs) {
   if (gpr_unref(&bs->refs)) {
-    decrement_active_streams_locked(exec_ctx, &bs->transport->global,
-                                    &bs->stream->global);
     gpr_slice_buffer_destroy(&bs->slices);
     gpr_free(bs);
   }
 }
 
+static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
+                                         grpc_byte_stream *byte_stream);
+
+static void incoming_byte_stream_destroy_locked(grpc_exec_ctx *exec_ctx,
+                                                grpc_chttp2_transport *t,
+                                                grpc_chttp2_stream *s,
+                                                void *byte_stream) {
+  grpc_chttp2_incoming_byte_stream *bs = byte_stream;
+  GPR_ASSERT(bs->base.destroy == incoming_byte_stream_destroy);
+  decrement_active_streams_locked(exec_ctx, &bs->transport->global,
+                                  &bs->stream->global);
+  incoming_byte_stream_unref(exec_ctx, bs);
+}
+
 static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
                                          grpc_byte_stream *byte_stream) {
   grpc_chttp2_incoming_byte_stream *bs =
       (grpc_chttp2_incoming_byte_stream *)byte_stream;
   grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
-                                   incoming_byte_stream_unref_locked, bs, 0);
+                                   incoming_byte_stream_destroy_locked, bs, 0);
 }
 
 typedef struct {
@@ -1794,12 +1805,6 @@ void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
                                    sizeof(arg));
 }
 
-static void incoming_byte_stream_deactivate_locked(
-    grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_stream *s,
-    grpc_chttp2_incoming_byte_stream *bs) {
-  incoming_byte_stream_unref_locked(exec_ctx, t, s, bs);
-}
-
 static void incoming_byte_stream_finished_failed_locked(
     grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t, grpc_chttp2_stream *s,
     void *argp) {
@@ -1807,7 +1812,7 @@ static void incoming_byte_stream_finished_failed_locked(
   grpc_exec_ctx_enqueue(exec_ctx, bs->on_next, false, NULL);
   bs->on_next = NULL;
   bs->failed = 1;
-  incoming_byte_stream_deactivate_locked(exec_ctx, t, s, bs);
+  incoming_byte_stream_unref(exec_ctx, bs);
 }
 
 static void incoming_byte_stream_finished_ok_locked(grpc_exec_ctx *exec_ctx,
@@ -1815,7 +1820,7 @@ static void incoming_byte_stream_finished_ok_locked(grpc_exec_ctx *exec_ctx,
                                                     grpc_chttp2_stream *s,
                                                     void *argp) {
   grpc_chttp2_incoming_byte_stream *bs = argp;
-  incoming_byte_stream_deactivate_locked(exec_ctx, t, s, bs);
+  incoming_byte_stream_unref(exec_ctx, bs);
 }
 
 void grpc_chttp2_incoming_byte_stream_finished(
@@ -1965,10 +1970,15 @@ static char *chttp2_get_peer(grpc_exec_ctx *exec_ctx, grpc_transport *t) {
   return gpr_strdup(((grpc_chttp2_transport *)t)->peer_string);
 }
 
-static const grpc_transport_vtable vtable = {
-    sizeof(grpc_chttp2_stream), "chttp2", init_stream, set_pollset,
-    perform_stream_op, perform_transport_op, destroy_stream, destroy_transport,
-    chttp2_get_peer};
+static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
+                                             "chttp2",
+                                             init_stream,
+                                             set_pollset,
+                                             perform_stream_op,
+                                             perform_transport_op,
+                                             destroy_stream,
+                                             destroy_transport,
+                                             chttp2_get_peer};
 
 grpc_transport *grpc_create_chttp2_transport(
     grpc_exec_ctx *exec_ctx, const grpc_channel_args *channel_args,
diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index ddb81f9a34..c7778df47d 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -50,7 +50,7 @@ typedef struct grpc_transport grpc_transport;
    for a stream. */
 typedef struct grpc_stream grpc_stream;
 
-/*#define GRPC_STREAM_REFCOUNT_DEBUG*/
+#define GRPC_STREAM_REFCOUNT_DEBUG
 
 typedef struct grpc_stream_refcount {
   gpr_refcount refs;
-- 
GitLab


From 489b4744bee765e11825f0918c4f75bc9d09f1f1 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 26 Mar 2016 13:38:29 -0700
Subject: [PATCH 029/525] Fix copyrights

---
 src/core/channel/channel_stack.c                | 2 +-
 src/core/transport/chttp2/frame_rst_stream.c    | 2 +-
 src/core/transport/chttp2/frame_window_update.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/core/channel/channel_stack.c b/src/core/channel/channel_stack.c
index 1869597975..8fbf8438f6 100644
--- a/src/core/channel/channel_stack.c
+++ b/src/core/channel/channel_stack.c
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/src/core/transport/chttp2/frame_rst_stream.c b/src/core/transport/chttp2/frame_rst_stream.c
index 8063dfbb21..a5655ce79b 100644
--- a/src/core/transport/chttp2/frame_rst_stream.c
+++ b/src/core/transport/chttp2/frame_rst_stream.c
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/src/core/transport/chttp2/frame_window_update.c b/src/core/transport/chttp2/frame_window_update.c
index 4a6944eef7..f7ae6003c8 100644
--- a/src/core/transport/chttp2/frame_window_update.c
+++ b/src/core/transport/chttp2/frame_window_update.c
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
-- 
GitLab


From d12bdd11cb9e320fe9be2ab13c43d7c4f27094e0 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 26 Mar 2016 16:01:00 -0700
Subject: [PATCH 030/525] Fix inadvertent race

---
 src/core/transport/chttp2_transport.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index d71061452a..227591bf18 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -1079,6 +1079,7 @@ static void perform_transport_op_locked(grpc_exec_ctx *exec_ctx,
     GPR_ASSERT(t->post_parsing_op == NULL);
     t->post_parsing_op = gpr_malloc(sizeof(*op));
     memcpy(t->post_parsing_op, op, sizeof(*op));
+    return;
   }
 
   grpc_exec_ctx_enqueue(exec_ctx, op->on_consumed, true, NULL);
-- 
GitLab


From caf606f0794818930ff9e531567d95cf8b20b9f8 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 26 Mar 2016 18:09:56 -0700
Subject: [PATCH 031/525] Turn off debug

---
 src/core/transport/transport.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index c7778df47d..ddb81f9a34 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -50,7 +50,7 @@ typedef struct grpc_transport grpc_transport;
    for a stream. */
 typedef struct grpc_stream grpc_stream;
 
-#define GRPC_STREAM_REFCOUNT_DEBUG
+/*#define GRPC_STREAM_REFCOUNT_DEBUG*/
 
 typedef struct grpc_stream_refcount {
   gpr_refcount refs;
-- 
GitLab


From 086f91cab6d32dc5b0609cf3735937309f04b18d Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 4 Apr 2016 23:23:08 -0700
Subject: [PATCH 032/525] Fix include guards

---
 src/core/lib/iomgr/ev_poll_posix.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/core/lib/iomgr/ev_poll_posix.h b/src/core/lib/iomgr/ev_poll_posix.h
index 6acf50db08..291736a2db 100644
--- a/src/core/lib/iomgr/ev_poll_posix.h
+++ b/src/core/lib/iomgr/ev_poll_posix.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_INTERNAL_CORE_IOMGR_EV_POLL_POSIX_H
-#define GRPC_INTERNAL_CORE_IOMGR_EV_POLL_POSIX_H
+#ifndef GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H
+#define GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H
 
 #include "src/core/lib/iomgr/ev_posix.h"
 
 const grpc_event_engine_vtable *grpc_init_poll_posix(void);
 
-#endif  // GRPC_INTERNAL_CORE_IOMGR_EV_POLL_AND_EPOLL_POSIX_H
+#endif /* GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H */
-- 
GitLab


From cc719a4dfff61fdb7c78225d4f5f79a966717e13 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 5 Apr 2016 21:42:03 -0700
Subject: [PATCH 033/525] x

---
 tools/gource/gource.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/gource/gource.sh b/tools/gource/gource.sh
index e759c4ee60..ed0d1a9382 100755
--- a/tools/gource/gource.sh
+++ b/tools/gource/gource.sh
@@ -28,4 +28,4 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-gource --multi-sampling -c 4 -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.05 --hide filenames,dirnames $*
+gource --multi-sampling -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.05 --hide filenames,dirnames $*
-- 
GitLab


From 946ce7a46a7409196d563360ddf8a4139a9bde4b Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 6 Apr 2016 10:35:58 -0700
Subject: [PATCH 034/525] Allow flagging tests that arent dependent on polling
 strategy

---
 tools/buildgen/plugins/make_fuzzer_tests.py |    1 +
 tools/run_tests/run_tests.py                |   15 +-
 tools/run_tests/tests.json                  | 3345 ++++++++++++-------
 3 files changed, 2240 insertions(+), 1121 deletions(-)

diff --git a/tools/buildgen/plugins/make_fuzzer_tests.py b/tools/buildgen/plugins/make_fuzzer_tests.py
index 806489bcd2..d5c18a687b 100644
--- a/tools/buildgen/plugins/make_fuzzer_tests.py
+++ b/tools/buildgen/plugins/make_fuzzer_tests.py
@@ -51,6 +51,7 @@ def mako_plugin(dictionary):
               'exclude_configs': [],
               'platforms': ['linux', 'mac', 'windows', 'posix'],
               'ci_platforms': ['linux', 'mac', 'windows', 'posix'],
+              'uses_polling': False,
               'flaky': False,
               'language': 'c',
               'cpu_cost': 0.1,
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index a8fc45780a..b064ed6775 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -159,12 +159,15 @@ class CLanguage(object):
       'posix': ['all'],
       'linux': ['poll', 'legacy']
     }
-    for polling_strategy in POLLING_STRATEGIES[self.platform]:
-      env={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
-               _ROOT + '/src/core/lib/tsi/test_creds/ca.pem',
-           'GRPC_POLLING_STRATEGY': polling_strategy}
-      shortname_ext = '' if polling_strategy=='all' else ' polling=%s' % polling_strategy
-      for target in binaries:
+    for target in binaries:
+      polling_strategies = (POLLING_STRATEGIES[self.platform]
+                            if target.get('uses_polling', True)
+                            else ['all'])
+      for polling_strategy in polling_strategies:
+        env={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
+                 _ROOT + '/src/core/lib/tsi/test_creds/ca.pem',
+             'GRPC_POLLING_STRATEGY': polling_strategy}
+        shortname_ext = '' if polling_strategy=='all' else ' polling=%s' % polling_strategy
         if self.config.build_config in target['exclude_configs']:
           continue
         if self.platform == 'windows':
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 88aae70aef..7b83346b45 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -21530,7 +21530,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21552,7 +21553,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21574,7 +21576,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21596,7 +21599,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21618,7 +21622,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21640,7 +21645,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21662,7 +21668,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21684,7 +21691,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21706,7 +21714,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21728,7 +21737,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21750,7 +21760,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21772,7 +21783,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21794,7 +21806,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21816,7 +21829,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21838,7 +21852,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21860,7 +21875,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21882,7 +21898,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21904,7 +21921,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21926,7 +21944,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21948,7 +21967,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21970,7 +21990,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -21992,7 +22013,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22014,7 +22036,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22036,7 +22059,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22058,7 +22082,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22080,7 +22105,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22102,7 +22128,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22124,7 +22151,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22146,7 +22174,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22168,7 +22197,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22190,7 +22220,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22212,7 +22243,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22234,7 +22266,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22256,7 +22289,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22278,7 +22312,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22300,7 +22335,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22322,7 +22358,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22344,7 +22381,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22366,7 +22404,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22388,7 +22427,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22410,7 +22450,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22432,7 +22473,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22454,7 +22496,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22476,7 +22519,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22498,7 +22542,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22520,7 +22565,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22542,7 +22588,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22564,7 +22611,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22586,7 +22634,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22608,7 +22657,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22630,7 +22680,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22652,7 +22703,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22674,7 +22726,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22696,7 +22749,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22718,7 +22772,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22740,7 +22795,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22762,7 +22818,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22784,7 +22841,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22806,7 +22864,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22828,7 +22887,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22850,7 +22910,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22872,7 +22933,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22894,7 +22956,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22916,7 +22979,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22938,7 +23002,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22960,7 +23025,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -22982,7 +23048,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23004,7 +23071,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23026,7 +23094,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23048,7 +23117,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23070,7 +23140,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23092,7 +23163,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23114,7 +23186,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23136,7 +23209,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23158,7 +23232,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23180,7 +23255,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23202,7 +23278,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23224,7 +23301,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23246,7 +23324,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23268,7 +23347,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23290,7 +23370,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23312,7 +23393,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23334,7 +23416,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23356,7 +23439,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23378,7 +23462,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23400,7 +23485,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23422,7 +23508,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23444,7 +23531,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23466,7 +23554,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23488,7 +23577,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23510,7 +23600,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23532,7 +23623,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23554,7 +23646,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23576,7 +23669,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23598,7 +23692,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23620,7 +23715,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23642,7 +23738,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23664,7 +23761,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23686,7 +23784,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23708,7 +23807,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23730,7 +23830,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23752,7 +23853,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23774,7 +23876,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23796,7 +23899,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23818,7 +23922,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23840,7 +23945,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23862,7 +23968,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23884,7 +23991,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23906,7 +24014,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23928,7 +24037,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23950,7 +24060,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23972,7 +24083,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -23994,7 +24106,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24016,7 +24129,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24038,7 +24152,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24060,7 +24175,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24082,7 +24198,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24104,7 +24221,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24126,7 +24244,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24148,7 +24267,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24170,7 +24290,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24192,7 +24313,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24214,7 +24336,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24236,7 +24359,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24258,7 +24382,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24280,7 +24405,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24302,7 +24428,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24324,7 +24451,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24346,7 +24474,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24368,7 +24497,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24390,7 +24520,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24412,7 +24543,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24434,7 +24566,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24456,7 +24589,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24478,7 +24612,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24500,7 +24635,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24522,7 +24658,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24544,7 +24681,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24566,7 +24704,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24588,7 +24727,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24610,7 +24750,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24632,7 +24773,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24654,7 +24796,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24676,7 +24819,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24698,7 +24842,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24720,7 +24865,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24742,7 +24888,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24764,7 +24911,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24786,7 +24934,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24808,7 +24957,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24830,7 +24980,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24852,7 +25003,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24874,7 +25026,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24896,7 +25049,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24918,7 +25072,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24940,7 +25095,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24962,7 +25118,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -24984,7 +25141,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25006,7 +25164,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25028,7 +25187,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25050,7 +25210,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25072,7 +25233,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25094,7 +25256,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25116,7 +25279,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25138,7 +25302,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25160,7 +25325,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25182,7 +25348,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25204,7 +25371,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25226,7 +25394,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25248,7 +25417,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25270,7 +25440,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25292,7 +25463,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25314,7 +25486,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25336,7 +25509,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25358,7 +25532,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25380,7 +25555,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25402,7 +25578,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25424,7 +25601,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25446,7 +25624,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25468,7 +25647,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25490,7 +25670,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25512,7 +25693,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25534,7 +25716,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25556,7 +25739,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25578,7 +25762,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25600,7 +25785,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25622,7 +25808,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25644,7 +25831,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25666,7 +25854,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25688,7 +25877,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25710,7 +25900,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25732,7 +25923,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25754,7 +25946,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25776,7 +25969,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25798,7 +25992,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25820,7 +26015,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25842,7 +26038,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25864,7 +26061,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25886,7 +26084,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25908,7 +26107,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25930,7 +26130,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25952,7 +26153,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25974,7 +26176,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -25996,7 +26199,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26018,7 +26222,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26040,7 +26245,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26062,7 +26268,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26084,7 +26291,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26106,7 +26314,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26128,7 +26337,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26150,7 +26360,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26172,7 +26383,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26194,7 +26406,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26216,7 +26429,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26238,7 +26452,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26260,7 +26475,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26282,7 +26498,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26304,7 +26521,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26326,7 +26544,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26348,7 +26567,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26370,7 +26590,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26392,7 +26613,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26414,7 +26636,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26436,7 +26659,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26458,7 +26682,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26480,7 +26705,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26502,7 +26728,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26524,7 +26751,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26546,7 +26774,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26568,7 +26797,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26590,7 +26820,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26612,7 +26843,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26634,7 +26866,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26656,7 +26889,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26678,7 +26912,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26700,7 +26935,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26722,7 +26958,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26744,7 +26981,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26766,7 +27004,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26788,7 +27027,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26810,7 +27050,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26832,7 +27073,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26854,7 +27096,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26876,7 +27119,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26898,7 +27142,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26920,7 +27165,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26942,7 +27188,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26964,7 +27211,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -26986,7 +27234,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27008,7 +27257,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27030,7 +27280,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27052,7 +27303,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27074,7 +27326,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27096,7 +27349,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27118,7 +27372,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27140,7 +27395,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27162,7 +27418,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27184,7 +27441,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27206,7 +27464,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27228,7 +27487,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27250,7 +27510,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27272,7 +27533,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27294,7 +27556,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27316,7 +27579,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27338,7 +27602,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27360,7 +27625,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27382,7 +27648,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27404,7 +27671,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27426,7 +27694,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27448,7 +27717,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27470,7 +27740,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27492,7 +27763,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27514,7 +27786,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27536,7 +27809,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27558,7 +27832,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27580,7 +27855,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27602,7 +27878,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27624,7 +27901,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27646,7 +27924,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27668,7 +27947,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27690,7 +27970,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27712,7 +27993,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27734,7 +28016,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27756,7 +28039,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27778,7 +28062,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27800,7 +28085,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27822,7 +28108,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27844,7 +28131,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27866,7 +28154,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27888,7 +28177,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27910,7 +28200,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27932,7 +28223,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27954,7 +28246,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27976,7 +28269,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -27998,7 +28292,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28020,7 +28315,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28042,7 +28338,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28064,7 +28361,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28086,7 +28384,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28108,7 +28407,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28130,7 +28430,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28152,7 +28453,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28174,7 +28476,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28196,7 +28499,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28218,7 +28522,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28240,7 +28545,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28262,7 +28568,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28284,7 +28591,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28306,7 +28614,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28328,7 +28637,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28350,7 +28660,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28372,7 +28683,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28394,7 +28706,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28416,7 +28729,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28438,7 +28752,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28460,7 +28775,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28482,7 +28798,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28504,7 +28821,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28526,7 +28844,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28548,7 +28867,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28570,7 +28890,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28592,7 +28913,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28614,7 +28936,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28636,7 +28959,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28658,7 +28982,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28680,7 +29005,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28702,7 +29028,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28724,7 +29051,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28746,7 +29074,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28768,7 +29097,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28790,7 +29120,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28812,7 +29143,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28834,7 +29166,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28856,7 +29189,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28878,7 +29212,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28900,7 +29235,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28922,7 +29258,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28944,7 +29281,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28966,7 +29304,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -28988,7 +29327,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29010,7 +29350,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29032,7 +29373,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29054,7 +29396,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29076,7 +29419,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29098,7 +29442,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29120,7 +29465,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29142,7 +29488,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29164,7 +29511,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29186,7 +29534,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29208,7 +29557,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29230,7 +29580,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29252,7 +29603,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29274,7 +29626,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29296,7 +29649,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29318,7 +29672,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29340,7 +29695,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29362,7 +29718,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29384,7 +29741,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29406,7 +29764,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29428,7 +29787,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29450,7 +29810,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29472,7 +29833,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29494,7 +29856,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29516,7 +29879,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29538,7 +29902,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29560,7 +29925,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29582,7 +29948,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29604,7 +29971,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29626,7 +29994,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29648,7 +30017,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29670,7 +30040,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29692,7 +30063,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29714,7 +30086,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29736,7 +30109,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29758,7 +30132,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29780,7 +30155,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29802,7 +30178,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29824,7 +30201,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29846,7 +30224,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29868,7 +30247,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29890,7 +30270,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29912,7 +30293,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29934,7 +30316,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29956,7 +30339,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -29978,7 +30362,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30000,7 +30385,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30022,7 +30408,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30044,7 +30431,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30066,7 +30454,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30088,7 +30477,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30110,7 +30500,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30132,7 +30523,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30154,7 +30546,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30176,7 +30569,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30198,7 +30592,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30220,7 +30615,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30242,7 +30638,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30264,7 +30661,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30286,7 +30684,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30308,7 +30707,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30330,7 +30730,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30352,7 +30753,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30374,7 +30776,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30396,7 +30799,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30418,7 +30822,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30440,7 +30845,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30462,7 +30868,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30484,7 +30891,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30506,7 +30914,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30528,7 +30937,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30550,7 +30960,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30572,7 +30983,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30594,7 +31006,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30616,7 +31029,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30638,7 +31052,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30660,7 +31075,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30682,7 +31098,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30704,7 +31121,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30726,7 +31144,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30748,7 +31167,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30770,7 +31190,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30792,7 +31213,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30814,7 +31236,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30836,7 +31259,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30858,7 +31282,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30880,7 +31305,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30902,7 +31328,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30924,7 +31351,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30946,7 +31374,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30968,7 +31397,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -30990,7 +31420,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31012,7 +31443,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31034,7 +31466,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31056,7 +31489,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31078,7 +31512,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31100,7 +31535,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31122,7 +31558,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31144,7 +31581,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31166,7 +31604,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31188,7 +31627,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31210,7 +31650,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31232,7 +31673,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31254,7 +31696,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31276,7 +31719,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31298,7 +31742,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31320,7 +31765,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31342,7 +31788,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31364,7 +31811,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31386,7 +31834,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31408,7 +31857,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31430,7 +31880,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31452,7 +31903,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31474,7 +31926,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31496,7 +31949,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31518,7 +31972,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31540,7 +31995,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31562,7 +32018,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31584,7 +32041,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31606,7 +32064,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31628,7 +32087,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31650,7 +32110,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31672,7 +32133,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31694,7 +32156,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31716,7 +32179,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31738,7 +32202,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31760,7 +32225,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31782,7 +32248,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31804,7 +32271,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31826,7 +32294,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31848,7 +32317,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31870,7 +32340,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31892,7 +32363,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31914,7 +32386,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31936,7 +32409,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31958,7 +32432,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -31980,7 +32455,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32002,7 +32478,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32024,7 +32501,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32046,7 +32524,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32068,7 +32547,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32090,7 +32570,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32112,7 +32593,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32134,7 +32616,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32156,7 +32639,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32178,7 +32662,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32200,7 +32685,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32222,7 +32708,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32244,7 +32731,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32266,7 +32754,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32288,7 +32777,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32310,7 +32800,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32332,7 +32823,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32354,7 +32846,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32376,7 +32869,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32398,7 +32892,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32420,7 +32915,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32442,7 +32938,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32464,7 +32961,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32486,7 +32984,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32508,7 +33007,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32530,7 +33030,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32552,7 +33053,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32574,7 +33076,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32596,7 +33099,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32618,7 +33122,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32640,7 +33145,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32662,7 +33168,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32684,7 +33191,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32706,7 +33214,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32728,7 +33237,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32750,7 +33260,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32772,7 +33283,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32794,7 +33306,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32816,7 +33329,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32838,7 +33352,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32860,7 +33375,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32882,7 +33398,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32904,7 +33421,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32926,7 +33444,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32948,7 +33467,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32970,7 +33490,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -32992,7 +33513,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33014,7 +33536,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33036,7 +33559,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33058,7 +33582,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33080,7 +33605,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33102,7 +33628,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33124,7 +33651,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33146,7 +33674,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33168,7 +33697,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33190,7 +33720,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33212,7 +33743,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33234,7 +33766,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33256,7 +33789,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33278,7 +33812,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33300,7 +33835,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33322,7 +33858,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33344,7 +33881,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33366,7 +33904,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33388,7 +33927,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33410,7 +33950,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33432,7 +33973,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33454,7 +33996,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33476,7 +34019,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33498,7 +34042,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33520,7 +34065,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33542,7 +34088,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33564,7 +34111,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33586,7 +34134,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33608,7 +34157,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33630,7 +34180,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33652,7 +34203,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33674,7 +34226,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33696,7 +34249,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33718,7 +34272,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33740,7 +34295,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33762,7 +34318,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33784,7 +34341,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33806,7 +34364,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33828,7 +34387,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33850,7 +34410,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33872,7 +34433,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33894,7 +34456,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33916,7 +34479,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33938,7 +34502,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33960,7 +34525,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -33982,7 +34548,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34004,7 +34571,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34026,7 +34594,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34048,7 +34617,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34070,7 +34640,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34092,7 +34663,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34114,7 +34686,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34136,7 +34709,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34158,7 +34732,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34180,7 +34755,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34202,7 +34778,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34224,7 +34801,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34246,7 +34824,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34268,7 +34847,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34290,7 +34870,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34312,7 +34893,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34334,7 +34916,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34356,7 +34939,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34378,7 +34962,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34400,7 +34985,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34422,7 +35008,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34444,7 +35031,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34466,7 +35054,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34488,7 +35077,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34510,7 +35100,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34532,7 +35123,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34554,7 +35146,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34576,7 +35169,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34598,7 +35192,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34620,7 +35215,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34642,7 +35238,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34664,7 +35261,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34686,7 +35284,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34708,7 +35307,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34730,7 +35330,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34752,7 +35353,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34774,7 +35376,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34796,7 +35399,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34818,7 +35422,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34840,7 +35445,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34862,7 +35468,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34884,7 +35491,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34906,7 +35514,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34928,7 +35537,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34950,7 +35560,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34972,7 +35583,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -34994,7 +35606,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35016,7 +35629,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35038,7 +35652,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35060,7 +35675,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35082,7 +35698,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35104,7 +35721,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35126,7 +35744,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35148,7 +35767,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35170,7 +35790,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35192,7 +35813,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35214,7 +35836,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35236,7 +35859,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35258,7 +35882,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35280,7 +35905,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35302,7 +35928,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35324,7 +35951,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35346,7 +35974,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35368,7 +35997,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35390,7 +36020,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35412,7 +36043,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35434,7 +36066,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35456,7 +36089,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35478,7 +36112,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35500,7 +36135,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35522,7 +36158,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35544,7 +36181,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35566,7 +36204,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35588,7 +36227,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35610,7 +36250,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35632,7 +36273,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35654,7 +36296,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35676,7 +36319,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35698,7 +36342,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35720,7 +36365,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35742,7 +36388,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35764,7 +36411,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35786,7 +36434,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35808,7 +36457,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35830,7 +36480,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35852,7 +36503,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35874,7 +36526,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35896,7 +36549,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35918,7 +36572,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35940,7 +36595,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35962,7 +36618,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -35984,7 +36641,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36006,7 +36664,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36028,7 +36687,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36050,7 +36710,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36072,7 +36733,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36094,7 +36756,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36116,7 +36779,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36138,7 +36802,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36160,7 +36825,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36182,7 +36848,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36204,7 +36871,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36226,7 +36894,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36248,7 +36917,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36270,7 +36940,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36292,7 +36963,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36314,7 +36986,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36336,7 +37009,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36358,7 +37032,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36380,7 +37055,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36402,7 +37078,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36424,7 +37101,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36446,7 +37124,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36468,7 +37147,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36490,7 +37170,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36512,7 +37193,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36534,7 +37216,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36556,7 +37239,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36578,7 +37262,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36600,7 +37285,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36622,7 +37308,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36644,7 +37331,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36666,7 +37354,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36688,7 +37377,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36710,7 +37400,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36732,7 +37423,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36754,7 +37446,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36776,7 +37469,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36798,7 +37492,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36820,7 +37515,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36842,7 +37538,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36864,7 +37561,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36886,7 +37584,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36908,7 +37607,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36930,7 +37630,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36952,7 +37653,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36974,7 +37676,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -36996,7 +37699,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37018,7 +37722,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37040,7 +37745,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37062,7 +37768,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37084,7 +37791,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37106,7 +37814,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37128,7 +37837,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37150,7 +37860,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37172,7 +37883,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37194,7 +37906,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37216,7 +37929,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37238,7 +37952,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37260,7 +37975,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37282,7 +37998,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37304,7 +38021,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37326,7 +38044,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37348,7 +38067,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37370,7 +38090,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37392,7 +38113,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37414,7 +38136,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37436,7 +38159,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37458,7 +38182,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37480,7 +38205,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37502,7 +38228,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37524,7 +38251,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37546,7 +38274,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37568,7 +38297,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37590,7 +38320,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37612,7 +38343,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37634,7 +38366,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37656,7 +38389,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37678,7 +38412,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37700,7 +38435,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37722,7 +38458,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37744,7 +38481,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37766,7 +38504,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37788,7 +38527,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37810,7 +38550,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37832,7 +38573,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37854,7 +38596,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37876,7 +38619,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37898,7 +38642,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37920,7 +38665,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37942,7 +38688,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37964,7 +38711,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -37986,7 +38734,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38008,7 +38757,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38030,7 +38780,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38052,7 +38803,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38074,7 +38826,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38096,7 +38849,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38118,7 +38872,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38140,7 +38895,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38162,7 +38918,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38184,7 +38941,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38206,7 +38964,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38228,7 +38987,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38250,7 +39010,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38272,7 +39033,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38294,7 +39056,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38316,7 +39079,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38338,7 +39102,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38360,7 +39125,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38382,7 +39148,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38404,7 +39171,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38426,7 +39194,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38448,7 +39217,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38470,7 +39240,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38492,7 +39263,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38514,7 +39286,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38536,7 +39309,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38558,7 +39332,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38580,7 +39355,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38602,7 +39378,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38624,7 +39401,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38646,7 +39424,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38668,7 +39447,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38690,7 +39470,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38712,7 +39493,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38734,7 +39516,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38756,7 +39539,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38778,7 +39562,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38800,7 +39585,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38822,7 +39608,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38844,7 +39631,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38866,7 +39654,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38888,7 +39677,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38910,7 +39700,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38932,7 +39723,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38954,7 +39746,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38976,7 +39769,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -38998,7 +39792,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39020,7 +39815,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39042,7 +39838,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39064,7 +39861,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39086,7 +39884,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39108,7 +39907,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39130,7 +39930,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39152,7 +39953,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39174,7 +39976,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39196,7 +39999,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39218,7 +40022,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39240,7 +40045,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39262,7 +40068,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39284,7 +40091,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39306,7 +40114,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39328,7 +40137,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39350,7 +40160,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39372,7 +40183,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39394,7 +40206,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39416,7 +40229,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39438,7 +40252,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39460,7 +40275,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39482,7 +40298,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39504,7 +40321,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39526,7 +40344,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39548,7 +40367,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39570,7 +40390,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39592,7 +40413,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39614,7 +40436,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39636,7 +40459,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39658,7 +40482,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39680,7 +40505,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39702,7 +40528,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39724,7 +40551,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39746,7 +40574,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39768,7 +40597,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39790,7 +40620,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39812,7 +40643,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39834,7 +40666,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39856,7 +40689,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39878,7 +40712,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39900,7 +40735,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39922,7 +40758,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39944,7 +40781,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39966,7 +40804,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -39988,7 +40827,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40010,7 +40850,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40032,7 +40873,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40054,7 +40896,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40076,7 +40919,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40098,7 +40942,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40120,7 +40965,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40142,7 +40988,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40164,7 +41011,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40186,7 +41034,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40208,7 +41057,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40230,7 +41080,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40252,7 +41103,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40274,7 +41126,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40296,7 +41149,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40318,7 +41172,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40340,7 +41195,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40362,7 +41218,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40384,7 +41241,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40406,7 +41264,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40428,7 +41287,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40450,7 +41310,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40472,7 +41333,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40494,7 +41356,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40516,7 +41379,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40538,7 +41402,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40560,7 +41425,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40582,7 +41448,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40604,7 +41471,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40626,7 +41494,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40648,7 +41517,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40670,7 +41540,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40692,7 +41563,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40714,7 +41586,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40736,7 +41609,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40758,7 +41632,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40780,7 +41655,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40802,7 +41678,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40824,7 +41701,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40846,7 +41724,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40868,7 +41747,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40890,7 +41770,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40912,7 +41793,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40934,7 +41816,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40956,7 +41839,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -40978,7 +41862,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41000,7 +41885,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41022,7 +41908,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41044,7 +41931,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41066,7 +41954,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41088,7 +41977,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41110,7 +42000,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41132,7 +42023,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41154,7 +42046,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41176,7 +42069,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41198,7 +42092,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41220,7 +42115,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41242,7 +42138,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41264,7 +42161,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41286,7 +42184,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41308,7 +42207,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41330,7 +42230,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41352,7 +42253,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41374,7 +42276,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41396,7 +42299,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41418,7 +42322,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41440,7 +42345,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41462,7 +42368,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41484,7 +42391,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41506,7 +42414,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41528,7 +42437,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41550,7 +42460,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41572,7 +42483,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41594,7 +42506,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41616,7 +42529,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41638,7 +42552,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41660,7 +42575,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41682,7 +42598,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41704,7 +42621,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41726,7 +42644,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41748,7 +42667,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41770,7 +42690,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41792,7 +42713,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41814,7 +42736,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41836,7 +42759,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41858,7 +42782,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41880,7 +42805,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41902,7 +42828,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41924,7 +42851,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41946,7 +42874,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41968,7 +42897,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -41990,7 +42920,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42012,7 +42943,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42034,7 +42966,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42056,7 +42989,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42078,7 +43012,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42100,7 +43035,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42122,7 +43058,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42144,7 +43081,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42166,7 +43104,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42188,7 +43127,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42210,7 +43150,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42232,7 +43173,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42254,7 +43196,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42276,7 +43219,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42298,7 +43242,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42320,7 +43265,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42342,7 +43288,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42364,7 +43311,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42386,7 +43334,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42408,7 +43357,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42430,7 +43380,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42452,7 +43403,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42474,7 +43426,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42496,7 +43449,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42518,7 +43472,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42540,7 +43495,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42562,7 +43518,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42584,7 +43541,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42606,7 +43564,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42628,7 +43587,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42650,7 +43610,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42672,7 +43633,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42694,7 +43656,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42716,7 +43679,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42738,7 +43702,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42760,7 +43725,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42782,7 +43748,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42804,7 +43771,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42826,7 +43794,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42848,7 +43817,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42870,7 +43840,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42892,7 +43863,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42914,7 +43886,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42936,7 +43909,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42958,7 +43932,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -42980,7 +43955,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43002,7 +43978,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43024,7 +44001,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43046,7 +44024,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43068,7 +44047,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43090,7 +44070,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43112,7 +44093,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43134,7 +44116,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43156,7 +44139,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43178,7 +44162,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43200,7 +44185,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43222,7 +44208,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43244,7 +44231,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43266,7 +44254,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43288,7 +44277,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43310,7 +44300,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43332,7 +44323,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43354,7 +44346,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43376,7 +44369,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43398,7 +44392,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43420,7 +44415,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43442,7 +44438,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43464,7 +44461,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43486,7 +44484,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43508,7 +44507,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43530,7 +44530,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43552,7 +44553,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43574,7 +44576,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43596,7 +44599,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43618,7 +44622,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43640,7 +44645,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43662,7 +44668,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43684,7 +44691,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43706,7 +44714,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43728,7 +44737,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43750,7 +44760,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43772,7 +44783,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43794,7 +44806,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43816,7 +44829,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43838,7 +44852,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43860,7 +44875,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43882,7 +44898,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43904,7 +44921,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43926,7 +44944,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43948,7 +44967,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43970,7 +44990,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -43992,7 +45013,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44014,7 +45036,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44036,7 +45059,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44058,7 +45082,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44080,7 +45105,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44102,7 +45128,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44124,7 +45151,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44146,7 +45174,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44168,7 +45197,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44190,7 +45220,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44212,7 +45243,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44234,7 +45266,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44256,7 +45289,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44278,7 +45312,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44300,7 +45335,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44322,7 +45358,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44344,7 +45381,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44366,7 +45404,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44388,7 +45427,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44410,7 +45450,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44432,7 +45473,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44454,7 +45496,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44476,7 +45519,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44498,7 +45542,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44520,7 +45565,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44542,7 +45588,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44564,7 +45611,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44586,7 +45634,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44608,7 +45657,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44630,7 +45680,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44652,7 +45703,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44674,7 +45726,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44696,7 +45749,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44718,7 +45772,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44740,7 +45795,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44762,7 +45818,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44784,7 +45841,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44806,7 +45864,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44828,7 +45887,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44850,7 +45910,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44872,7 +45933,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44894,7 +45956,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44916,7 +45979,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44938,7 +46002,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44960,7 +46025,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -44982,7 +46048,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45004,7 +46071,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45026,7 +46094,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45048,7 +46117,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45070,7 +46140,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45092,7 +46163,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45114,7 +46186,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45136,7 +46209,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45158,7 +46232,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45180,7 +46255,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45202,7 +46278,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45224,7 +46301,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45246,7 +46324,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45268,7 +46347,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45290,7 +46370,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45312,7 +46393,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45334,7 +46416,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45356,7 +46439,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45378,7 +46462,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45400,7 +46485,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45422,7 +46508,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45444,7 +46531,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45466,7 +46554,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45488,7 +46577,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45510,7 +46600,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45532,7 +46623,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45554,7 +46646,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45576,7 +46669,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45598,7 +46692,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45620,7 +46715,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45642,7 +46738,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45664,7 +46761,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45686,7 +46784,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45708,7 +46807,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45730,7 +46830,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45752,7 +46853,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45774,7 +46876,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45796,7 +46899,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45818,7 +46922,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45840,7 +46945,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45862,7 +46968,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45884,7 +46991,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45906,7 +47014,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45928,7 +47037,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45950,7 +47060,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45972,7 +47083,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -45994,7 +47106,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -46016,7 +47129,8 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }, 
   {
     "args": [
@@ -46038,6 +47152,7 @@
       "mac", 
       "windows", 
       "posix"
-    ]
+    ], 
+    "uses_polling": false
   }
 ]
-- 
GitLab


From ed73510413579bcaf07aea363da1dc238bcb8c4e Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 6 Apr 2016 12:59:23 -0700
Subject: [PATCH 035/525] Small tweaks

---
 src/core/lib/iomgr/ev_posix.c | 1 +
 tools/run_tests/jobset.py     | 8 +++++++-
 tools/run_tests/run_tests.py  | 2 +-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/core/lib/iomgr/ev_posix.c b/src/core/lib/iomgr/ev_posix.c
index 973e40ca1e..79b5ceebe3 100644
--- a/src/core/lib/iomgr/ev_posix.c
+++ b/src/core/lib/iomgr/ev_posix.c
@@ -104,6 +104,7 @@ static void try_engine(const char *engine) {
   for (size_t i = 0; i < GPR_ARRAY_SIZE(g_factories); i++) {
     if (is(engine, g_factories[i].name)) {
       if ((g_event_engine = g_factories[i].factory())) {
+        gpr_log(GPR_DEBUG, "Using polling engine: %s", g_factories[i].name);
         return;
       }
     }
diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py
index e9675fb785..d3259e724d 100755
--- a/tools/run_tests/jobset.py
+++ b/tools/run_tests/jobset.py
@@ -344,6 +344,7 @@ class Jobset(object):
     self._add_env = add_env
     self.resultset = {}
     self._remaining = None
+    self._start_time = time.time()
 
   def set_remaining(self, remaining):
     self._remaining = remaining
@@ -413,6 +414,11 @@ class Jobset(object):
       if dead: return
       if (not self._travis):
         rstr = '' if self._remaining is None else '%d queued, ' % self._remaining
+        if self._remaining is not None and self._completed > 0:
+          now = time.time()
+          sofar = now - self._start_time
+          remaining = sofar / self._completed * (self._remaining + len(self._running))
+          rstr = 'ETA %.1f sec; %s' % (remaining, rstr)
         message('WAITING', '%s%d jobs running, %d complete, %d failed' % (
             rstr, len(self._running), self._completed, self._failures))
       if platform_string() == 'windows':
@@ -457,7 +463,7 @@ def tag_remaining(xs):
   staging = []
   for x in xs:
     staging.append(x)
-    if len(staging) > 1000:
+    if len(staging) > 5000:
       yield (staging.pop(0), None)
   n = len(staging)
   for i, x in enumerate(staging):
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index b064ed6775..537655804a 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -166,7 +166,7 @@ class CLanguage(object):
       for polling_strategy in polling_strategies:
         env={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
                  _ROOT + '/src/core/lib/tsi/test_creds/ca.pem',
-             'GRPC_POLLING_STRATEGY': polling_strategy}
+             'GRPC_POLL_STRATEGY': polling_strategy}
         shortname_ext = '' if polling_strategy=='all' else ' polling=%s' % polling_strategy
         if self.config.build_config in target['exclude_configs']:
           continue
-- 
GitLab


From 6c8ae9aad5f1aaaf9c043817e184ec26bee75c86 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 6 Apr 2016 15:50:38 -0700
Subject: [PATCH 036/525] Fix new test

---
 test/core/end2end/tests/filter_causes_close.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.c
index ca54167b20..2de03a3b07 100644
--- a/test/core/end2end/tests/filter_causes_close.c
+++ b/test/core/end2end/tests/filter_causes_close.c
@@ -102,7 +102,7 @@ static void end_test(grpc_end2end_test_fixture *f) {
   grpc_completion_queue_destroy(f->cq);
 }
 
-/* Request with a large amount of metadata.*/
+/* Simple request via a server filter that always closes the stream.*/
 static void test_request(grpc_end2end_test_config config) {
   grpc_call *c;
   grpc_call *s;
@@ -235,8 +235,8 @@ static void start_transport_stream_op(grpc_exec_ctx *exec_ctx,
 static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                            grpc_call_element_args *args) {}
 
-static void destroy_call_elem(grpc_exec_ctx *exec_ctx,
-                              grpc_call_element *elem) {}
+static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+                              void *and_free_memory) {}
 
 static void init_channel_elem(grpc_exec_ctx *exec_ctx,
                               grpc_channel_element *elem,
-- 
GitLab


From 1215542ba37ce11eebf44b743f03485ca9bcf6d4 Mon Sep 17 00:00:00 2001
From: Harsh Vardhan <harshvd95@gmail.com>
Date: Sat, 26 Mar 2016 01:33:56 +0530
Subject: [PATCH 037/525] Add protobuf3 to requirements.txt

---
 requirements.txt | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/requirements.txt b/requirements.txt
index e3208e6355..0ec0e75b76 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,8 @@
 # GRPC Python setup requirements
+coverage>=4.0
+cython>=0.23
 enum34>=1.0.4
 futures>=2.2.0
-cython>=0.23
-coverage>=4.0
+protobuf>=3.0.0a3
 six>=1.10
-wheel>=0.29
+wheel>=0.29
\ No newline at end of file
-- 
GitLab


From 25720efec5173dc2a6b70841edcc0e56962567e9 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Tue, 12 Apr 2016 19:30:19 +0200
Subject: [PATCH 038/525] Sanitizing repository.

---
 src/proto/grpc/binary_log/v1alpha/log.proto | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/proto/grpc/binary_log/v1alpha/log.proto b/src/proto/grpc/binary_log/v1alpha/log.proto
index 6cc473be74..83166cd410 100644
--- a/src/proto/grpc/binary_log/v1alpha/log.proto
+++ b/src/proto/grpc/binary_log/v1alpha/log.proto
@@ -105,4 +105,4 @@ message Message {
   // The contents of the message. May be a prefix instead of the complete
   // message.
   bytes data = 5;
-}
\ No newline at end of file
+}
-- 
GitLab


From fc98f926101b28ee8bd1241bab96173c6bbebf20 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 08:45:06 -0700
Subject: [PATCH 039/525] API fuzzer

---
 Makefile                                      |   67 +
 build.yaml                                    |   13 +
 .../chttp2/client/insecure/channel_create.c   |    4 +-
 src/core/lib/support/time_posix.c             |    8 +-
 test/core/end2end/fuzzers/api_fuzzer.c        |  247 ++
 .../end2end/fuzzers/api_fuzzer_corpus/empty   |    1 +
 tools/fuzzer/runners/api_fuzzer.sh            |   44 +
 tools/run_tests/sources_and_headers.json      |   33 +
 tools/run_tests/tests.json                    | 2442 +++++++++++++++++
 9 files changed, 2857 insertions(+), 2 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer.c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/empty
 create mode 100644 tools/fuzzer/runners/api_fuzzer.sh

diff --git a/Makefile b/Makefile
index 690b92fa4b..50bbf19b23 100644
--- a/Makefile
+++ b/Makefile
@@ -881,6 +881,7 @@ alarm_test: $(BINDIR)/$(CONFIG)/alarm_test
 algorithm_test: $(BINDIR)/$(CONFIG)/algorithm_test
 alloc_test: $(BINDIR)/$(CONFIG)/alloc_test
 alpn_test: $(BINDIR)/$(CONFIG)/alpn_test
+api_fuzzer: $(BINDIR)/$(CONFIG)/api_fuzzer
 bin_encoder_test: $(BINDIR)/$(CONFIG)/bin_encoder_test
 census_context_test: $(BINDIR)/$(CONFIG)/census_context_test
 channel_create_test: $(BINDIR)/$(CONFIG)/channel_create_test
@@ -1118,6 +1119,7 @@ h2_sockpair_nosec_test: $(BINDIR)/$(CONFIG)/h2_sockpair_nosec_test
 h2_sockpair+trace_nosec_test: $(BINDIR)/$(CONFIG)/h2_sockpair+trace_nosec_test
 h2_sockpair_1byte_nosec_test: $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_nosec_test
 h2_uds_nosec_test: $(BINDIR)/$(CONFIG)/h2_uds_nosec_test
+api_fuzzer_one_entry: $(BINDIR)/$(CONFIG)/api_fuzzer_one_entry
 client_fuzzer_one_entry: $(BINDIR)/$(CONFIG)/client_fuzzer_one_entry
 hpack_parser_fuzzer_test_one_entry: $(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test_one_entry
 http_fuzzer_test_one_entry: $(BINDIR)/$(CONFIG)/http_fuzzer_test_one_entry
@@ -1345,6 +1347,7 @@ buildtests_c: privatelibs_c \
   $(BINDIR)/$(CONFIG)/h2_sockpair+trace_nosec_test \
   $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_nosec_test \
   $(BINDIR)/$(CONFIG)/h2_uds_nosec_test \
+  $(BINDIR)/$(CONFIG)/api_fuzzer_one_entry \
   $(BINDIR)/$(CONFIG)/client_fuzzer_one_entry \
   $(BINDIR)/$(CONFIG)/hpack_parser_fuzzer_test_one_entry \
   $(BINDIR)/$(CONFIG)/http_fuzzer_test_one_entry \
@@ -6025,6 +6028,38 @@ endif
 endif
 
 
+API_FUZZER_SRC = \
+    test/core/end2end/fuzzers/api_fuzzer.c \
+
+API_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(API_FUZZER_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/api_fuzzer: openssl_dep_error
+
+else
+
+
+
+$(BINDIR)/$(CONFIG)/api_fuzzer: $(API_FUZZER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LDXX) $(LDFLAGS) $(API_FUZZER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -lFuzzer -o $(BINDIR)/$(CONFIG)/api_fuzzer
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/core/end2end/fuzzers/api_fuzzer.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_api_fuzzer: $(API_FUZZER_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(API_FUZZER_OBJS:.o=.dep)
+endif
+endif
+
+
 BIN_ENCODER_TEST_SRC = \
     test/core/transport/chttp2/bin_encoder_test.c \
 
@@ -13802,6 +13837,38 @@ ifneq ($(NO_DEPS),true)
 endif
 
 
+API_FUZZER_ONE_ENTRY_SRC = \
+    test/core/end2end/fuzzers/api_fuzzer.c \
+
+API_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(API_FUZZER_ONE_ENTRY_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/api_fuzzer_one_entry: openssl_dep_error
+
+else
+
+
+
+$(BINDIR)/$(CONFIG)/api_fuzzer_one_entry: $(API_FUZZER_ONE_ENTRY_OBJS) $(LIBDIR)/$(CONFIG)/libone_input_fuzzer.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LD) $(LDFLAGS) $(API_FUZZER_ONE_ENTRY_OBJS) $(LIBDIR)/$(CONFIG)/libone_input_fuzzer.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/api_fuzzer_one_entry
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/core/end2end/fuzzers/api_fuzzer.o:  $(LIBDIR)/$(CONFIG)/libone_input_fuzzer.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_api_fuzzer_one_entry: $(API_FUZZER_ONE_ENTRY_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(API_FUZZER_ONE_ENTRY_OBJS:.o=.dep)
+endif
+endif
+
+
 CLIENT_FUZZER_ONE_ENTRY_SRC = \
     test/core/end2end/fuzzers/client_fuzzer.c \
 
diff --git a/build.yaml b/build.yaml
index e274b0335f..852f15b667 100644
--- a/build.yaml
+++ b/build.yaml
@@ -1103,6 +1103,19 @@ targets:
   - grpc
   - gpr_test_util
   - gpr
+- name: api_fuzzer
+  build: fuzzer
+  language: c
+  src:
+  - test/core/end2end/fuzzers/api_fuzzer.c
+  deps:
+  - grpc_test_util
+  - grpc
+  - gpr_test_util
+  - gpr
+  corpus_dirs:
+  - test/core/end2end/fuzzers/api_fuzzer_corpus
+  maxlen: 2048
 - name: bin_encoder_test
   build: test
   language: c
diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.c b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
index 0ed115793b..c5d3d8d9cc 100644
--- a/src/core/ext/transport/chttp2/client/insecure/channel_create.c
+++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
@@ -235,5 +235,7 @@ grpc_channel *grpc_insecure_channel_create(const char *target,
 
   grpc_exec_ctx_finish(&exec_ctx);
 
-  return channel; /* may be NULL */
+  return channel != NULL ? channel : grpc_lame_client_channel_create(
+                                         target, GRPC_STATUS_INTERNAL,
+                                         "Failed to create client channel");
 }
diff --git a/src/core/lib/support/time_posix.c b/src/core/lib/support/time_posix.c
index f5f62dadc6..cc0aa2b476 100644
--- a/src/core/lib/support/time_posix.c
+++ b/src/core/lib/support/time_posix.c
@@ -78,7 +78,7 @@ static const clockid_t clockid_for_gpr_clock[] = {CLOCK_MONOTONIC,
 
 void gpr_time_init(void) { gpr_precise_clock_init(); }
 
-gpr_timespec gpr_now(gpr_clock_type clock_type) {
+static gpr_timespec now_impl(gpr_clock_type clock_type) {
   struct timespec now;
   GPR_ASSERT(clock_type != GPR_TIMESPAN);
   if (clock_type == GPR_CLOCK_PRECISE) {
@@ -95,6 +95,12 @@ gpr_timespec gpr_now(gpr_clock_type clock_type) {
     return gpr_from_timespec(now, clock_type);
   }
 }
+
+gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl;
+
+gpr_timespec gpr_now(gpr_clock_type clock_type) {
+  return gpr_now_impl(clock_type);
+}
 #else
 /* For some reason Apple's OSes haven't implemented clock_gettime. */
 
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
new file mode 100644
index 0000000000..ebde79c9bc
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -0,0 +1,247 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <string.h>
+
+#include <grpc/grpc.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/transport/metadata.h"
+#include "test/core/util/mock_endpoint.h"
+
+////////////////////////////////////////////////////////////////////////////////
+// logging
+
+static const bool squelch = true;
+
+static void dont_log(gpr_log_func_args *args) {}
+
+////////////////////////////////////////////////////////////////////////////////
+// input_stream: allows easy access to input bytes, and allows reading a little
+//               past the end (avoiding needing to check everywhere)
+
+typedef struct {
+  const uint8_t *cur;
+  const uint8_t *end;
+} input_stream;
+
+static uint8_t next_byte(input_stream *inp) {
+  if (inp->cur == inp->end) {
+    return 0;
+  }
+  return *inp->cur++;
+}
+
+static char *read_string(input_stream *inp) {
+  size_t len = next_byte(inp);
+  char *str = gpr_malloc(len + 1);
+  for (size_t i = 0; i < len; i++) {
+    str[i] = (char)next_byte(inp);
+  }
+  str[len] = 0;
+  return str;
+}
+
+static uint32_t read_uint32(input_stream *inp) {
+  uint8_t b = next_byte(inp);
+  uint32_t x = b & 0x7f;
+  if (b & 0x80) {
+    x <<= 7;
+    b = next_byte(inp);
+    x |= b & 0x7f;
+    if (b & 0x80) {
+      x <<= 7;
+      b = next_byte(inp);
+      x |= b & 0x7f;
+      if (b & 0x80) {
+        x <<= 7;
+        b = next_byte(inp);
+        x |= b & 0x7f;
+        if (b & 0x80) {
+          x = (x << 4) | (next_byte(inp) & 0x0f);
+        }
+      }
+    }
+  }
+  return x;
+}
+
+static int read_int(input_stream *inp) { return (int)read_uint32(inp); }
+
+static grpc_channel_args *read_args(input_stream *inp) {
+  size_t n = next_byte(inp);
+  grpc_arg *args = gpr_malloc(sizeof(*args) * n);
+  for (size_t i = 0; i < n; i++) {
+    bool is_string = next_byte(inp) & 1;
+    args[i].type = is_string ? GRPC_ARG_STRING : GRPC_ARG_INTEGER;
+    args[i].key = read_string(inp);
+    if (is_string) {
+      args[i].value.string = read_string(inp);
+    } else {
+      args[i].value.integer = read_int(inp);
+    }
+  }
+  grpc_channel_args *a = gpr_malloc(sizeof(*a));
+  a->args = args;
+  a->num_args = n;
+  return a;
+}
+
+static bool is_eof(input_stream *inp) { return inp->cur == inp->end; }
+
+////////////////////////////////////////////////////////////////////////////////
+// global state
+
+static gpr_mu g_mu;
+static gpr_timespec g_now;
+
+extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
+
+static gpr_timespec now_impl(gpr_clock_type clock_type) {
+  GPR_ASSERT(clock_type != GPR_TIMESPAN);
+  gpr_mu_lock(&g_mu);
+  gpr_timespec now = g_now;
+  gpr_mu_unlock(&g_mu);
+  return now;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// test state
+
+typedef struct { grpc_channel *channel; } channel_state;
+typedef struct { grpc_server *server; } server_state;
+
+////////////////////////////////////////////////////////////////////////////////
+// test driver
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+  grpc_test_only_set_metadata_hash_seed(0);
+  if (squelch) gpr_set_log_function(dont_log);
+  input_stream inp = {data, data + size};
+  gpr_mu_init(&g_mu);
+  gpr_now_impl = now_impl;
+  grpc_init();
+
+  channel_state chans[256];
+  server_state servers[256];
+
+  memset(chans, 0, sizeof(chans));
+  memset(servers, 0, sizeof(servers));
+
+  grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
+
+  while (!is_eof(&inp)) {
+    switch (next_byte(&inp)) {
+      // tickle completion queue
+      case 0: {
+        grpc_event ev = grpc_completion_queue_next(
+            cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL);
+        switch (ev.type) {
+          case GRPC_OP_COMPLETE:
+            abort();
+            break;
+          case GRPC_QUEUE_TIMEOUT:
+            break;
+          case GRPC_QUEUE_SHUTDOWN:
+            abort();
+            break;
+        }
+        break;
+      }
+      // increment global time
+      case 1: {
+        gpr_mu_lock(&g_mu);
+        g_now = gpr_time_add(
+            g_now, gpr_time_from_millis(next_byte(&inp), GPR_TIMESPAN));
+        gpr_mu_unlock(&g_mu);
+        break;
+      }
+      // create an insecure channel
+      case 2: {
+        channel_state *cs = &chans[next_byte(&inp)];
+        if (cs->channel == NULL) {
+          char *target = read_string(&inp);
+          char *target_uri;
+          gpr_asprintf(&target_uri, "fuzz-test:%s", target);
+          grpc_channel_args *args = read_args(&inp);
+          cs->channel = grpc_insecure_channel_create(target_uri, args, NULL);
+          GPR_ASSERT(cs->channel != NULL);
+          grpc_channel_args_destroy(args);
+          gpr_free(target_uri);
+          gpr_free(target);
+        }
+        break;
+      }
+      // destroy a channel
+      case 3: {
+        channel_state *cs = &chans[next_byte(&inp)];
+        if (cs->channel != NULL) {
+          grpc_channel_destroy(cs->channel);
+          cs->channel = NULL;
+        }
+        break;
+      }
+      // bring up a server
+      case 4: {
+        server_state *ss = &servers[next_byte(&inp)];
+        if (ss->server == NULL) {
+          grpc_channel_args *args = read_args(&inp);
+          ss->server = grpc_server_create(args, NULL);
+          GPR_ASSERT(ss->server != NULL);
+          grpc_channel_args_destroy(args);
+          grpc_server_register_completion_queue(ss->server, cq, NULL);
+          grpc_server_start(ss->server);
+        }
+      }
+    }
+  }
+
+  for (size_t i = 0; i < GPR_ARRAY_SIZE(chans); i++) {
+    if (chans[i].channel != NULL) {
+      grpc_channel_destroy(chans[i].channel);
+    }
+  }
+
+  grpc_completion_queue_shutdown(cq);
+  GPR_ASSERT(
+      grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL)
+          .type == GRPC_QUEUE_SHUTDOWN);
+  grpc_completion_queue_destroy(cq);
+
+  grpc_shutdown();
+  gpr_mu_destroy(&g_mu);
+  return 0;
+}
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/empty b/test/core/end2end/fuzzers/api_fuzzer_corpus/empty
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/empty
@@ -0,0 +1 @@
+
diff --git a/tools/fuzzer/runners/api_fuzzer.sh b/tools/fuzzer/runners/api_fuzzer.sh
new file mode 100644
index 0000000000..6be0c1e3bf
--- /dev/null
+++ b/tools/fuzzer/runners/api_fuzzer.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+
+if [ "$jobs" != "1" ]
+then
+  flags="-jobs=$jobs -workers=$jobs"
+fi
+
+if [ "$config" == "asan-trace-cmp" ]
+then
+  flags="-use_traces=1 $flags"
+fi
+
+bins/$config/api_fuzzer $flags fuzzer_output test/core/end2end/fuzzers/api_fuzzer_corpus
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index ca409e3c05..c1d263d819 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -63,6 +63,22 @@
     "third_party": false, 
     "type": "target"
   }, 
+  {
+    "deps": [
+      "gpr", 
+      "gpr_test_util", 
+      "grpc", 
+      "grpc_test_util"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "api_fuzzer", 
+    "src": [
+      "test/core/end2end/fuzzers/api_fuzzer.c"
+    ], 
+    "third_party": false, 
+    "type": "target"
+  }, 
   {
     "deps": [
       "grpc", 
@@ -3885,6 +3901,23 @@
     "third_party": false, 
     "type": "target"
   }, 
+  {
+    "deps": [
+      "gpr", 
+      "gpr_test_util", 
+      "grpc", 
+      "grpc_test_util", 
+      "one_input_fuzzer"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "src": [
+      "test/core/end2end/fuzzers/api_fuzzer.c"
+    ], 
+    "third_party": false, 
+    "type": "target"
+  }, 
   {
     "deps": [
       "gpr", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index f8c658672b..d9ad342780 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -22344,6 +22344,2448 @@
     ], 
     "shortname": "json_run_localhost:protobuf_async_ping_pong_insecure"
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/01f28719f461d0e09499a9a1d40dab6ffaf7513c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/03108f73a4908148ddacf8b20d744978a3dbb8e6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/048d47eee51a1e6c89119b2bc58ccb755e6e781e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/05a5068ccf28276b0142ac8ce464ed5cd1091c2f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/07414c08d51096b30fe3a7c7495fbb370a9eb349"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d19d6ee751184422aa627302ea9271eeb959fad"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0db8092253ef2cf2302e24a366415dcefa9f0aca"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/13f189df8c3bc8e7cc9fdf0b48eb65a133e8e252"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/15f287d50bcc52bddbbb3bc5b29a93ce56557882"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/16caabddd637cb1ab7c64db8515cd92dea1b6ce7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/188d368922a5f43e60c90a6397eb0b7ff9164ad0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1910516becba08fd6cbf71179f9b0d91f281d976"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1b85eab98d2fd10bb449648b8bb538ffe455fb3d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1be5ba6372ab0eb27c0939f63c4287f736da4add"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1ef624482d620e43e6d34da1afe46267fc695d9b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1f9c9faf2c2a7fc66191093ff11333d2d32b83a0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1fbc12c332ab7671a787d6f7ca34f29afd581285"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2300d27ee843d71b9b33ee01dcbd31b3b001d3d0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2311aab0528eeef24d615b638c3deeddcc91b040"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2438538cf050251672d7c4922878192f19ad8414"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/29416e7301eb6f96233242a22d999e4794bfa7b9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/31209f7b3279af6ecbd718405b4c3992051b64b7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/37dc7f75b78630c09cb1b86d79938cb6e2b5c831"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/436ea2edd925add818d5933ea1a694c665c5bbda"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/437851faffe589031aee6285a7afffefbfb91e21"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e7df6ab7ed0d08f995dfdead1393d9502b91aa"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/473acfd07ec2374a7cd897f0d7414d650ee4ac60"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4b990622c2aa94e4e20b2bf5563f83cd5f6ff0c2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4bc3e2a6f3ea88f833cb0d6455fa30d8abee8a30"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e7a0ceb5a28074458aef5fcd642fcdecfeca7b7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5007854f8a4c1f3f2389129cf34656aab03cf2c4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5244e8038db493928522ca91b367df27a8f12e02"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/529dc710a73aceb6a3baca4a553525871acaf30d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/59664b5f2b37a0b969a70b94c8e9b650758742fd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5bab489bde99abf4ee0ad1eaef7a411910fc5c18"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e0c23806a130d5b6be6e8b18bac003318e32602"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e5cd885ba18536e1733494cb3f70899e82027e6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/61eeb2999a0753c473248407fb2a498dd5b92b6a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/621d3078be09fb0edfb50a3ca8e424827aa436ce"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/66dbd85c35e162aa686c7352062f6ea3a71a5b46"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/68501cda6a1119beb6ec5d6547d867f587b7ad82"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ee88ae97d75ba9598046324e6685504ebdf56c6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6fdaa6bb699f06faef1ca77860d5462fc6312978"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74b02def11aa0df2216774654d9b016936d4ca7d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7532ab7df8ead62b9d4c96a74d73db02f34323d2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/78a78375d00f6aad8d03ef3011e3ea678c32ea7d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/78c42909d554be1e42738cc9c7386f72f3e449ef"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/79021b946be27e44e1e299b764d697b3df71c379"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7a1f5e916b3df139db6c5c5e8daaac2ecd76a08a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7eceb77897f681041b72f4ef9253ba01a32ec01b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8238dd67c0a31f4d0d927994f928f881309e6e41"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/828d4f7971466d62168e6e738767bbf105377e4f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/82ec4b7970e1a75e26f8003c4ca844f39f30a5ef"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/837911474ed148fb2fa022778fff0cad05bbbed6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/84083368af0c14c6920a4a086faeff89cbcd807e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/88c543cb216935d1c5d946d2c13885a6ddfecd99"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/897ee7add6c2b9560b2c8fbeedc5b1c5a4c37baa"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d41c62e5053bb95a68d80cac72b76f40d8681c7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8e93933bee0f4179eb19ca52f380b5d25177478a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/94513377d6463f2844d424a4d2eacf12b87721f9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/95c6237b14e73c71e6ee9906f30c320973f24f7a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9842926af7ca0a8cca12604f945414f07b01e13d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0b32c1a2d0d3e1b3f09f1ffd98d7baeea3974f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9e521658847affb0f3bca0d115fb8819019db00f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a98acdd829aa14229e33db36812c8b0c1d601072"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aba2a9b19e26828ef2c984a821d4fb10540290cd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ac05889f7ee1f6f74048137060d2d2cc4b21c0c7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b15f4d14b937258d927518caa5097e592b240f48"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b248dbda6ccc4675f503dfa5400b862840c6b74f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b278354ce3c3863f99b3d5c4bf01de494238f9fd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b28fd090e96e0ca032fee61fe7ddfbb62b446dcd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5e16a7ea542c6d4182fdfb0af82172ecc35cf3d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61e648d14adfbaac529099b792ee6a505601abe"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b76ce3d7173d97c25cba87e0bbdb4433b21884b2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/beda82bfa52db14394b736dddde9a4d32af02cd5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf8b4530d8d246dd74ac53a13471bba17941dff7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c1f3aaf5994757fa2ba09f7125f8580017d4a8d3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c248dd64bcdaaf1153c18d670e286b29ee4af81c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c31b3a296bffaf72d61eba39f44dba9186d88fa6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a9bd57b8e28f27e150871f0549ca1cc8781952"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4ea21bb365bbeeaf5f2c654883e56d11e43c44e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c809013b63377afd7fe17fad8cf0732f10c411e4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c88264bd2df08fb772b8d7ec911a0715251b3911"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca032cbffbb34304877972062f797c42fbea661d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca66a02a677c0df021b56adab5866ea30789becc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cbf6b8f3b8cdf5a8ce9a082a67931617a7eae0c4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdb139c145391a913af004aa38e88940182674c3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cf63ceff8f7408790a5e3c7e15d0c984a08a791f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1c5a35969abe7f785dc5bdf045ed419d7745d59a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-366d928de426e357730fc4b011bfdc19fbd51dd7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-433d6907005077bd84a63487509c0001d4700d07"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d01c2354d8797408fb8d73f5f9c2ec5b217c6072"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d5225ed1690780f8e54bc15fe07f275ad4f1ea79"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d5c32d1673d03363dce866f6c375a29b7573c3ac"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d6361a489f999e840eec01a8f1f191426531aa4d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d6e3f338d678e927f608dd0642fa2b7841b5b83c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d8f94ef307da5d8d1d47e585dc0677bbbd083a1e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d99e0bc37dbbf5ee870ae9213923cc3d5e72e7cb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e15cde0fd6419be5594f70dc6d26de8619df864b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e36ad57e12e7b5d44e543b192121437a1dba99ea"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5690389240495c1d01d44203b4062276513a927"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e719889934afb75552663dd466674f232763e086"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ecff05d90eee72d9ebb498669725b50cb15c25a3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ed086108ea505a9503ccbd3d23c1228d59256a8a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ed93eaae0016b111eed7e065ed03649b62e46f56"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/empty"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f2d2eb899cd11487e99cf3e509218c5d520ec614"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f8b04eebb47cd685e394ac9f90dda53ad57faf97"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f9358e37f9fb4b2172f91981c79af5ef04922503"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fbd3bcdcf45e20be485e8359ae60871c166c1ae0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fdee3f97ab3c5e924b6f61b218dc17138f4c56f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/001946397b463a3562c5951f6325069d8a3a2ded"
-- 
GitLab


From 156a2f37ed15d3705035bd38186dc9c8e978163c Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 09:03:31 -0700
Subject: [PATCH 040/525] Server shutdown

---
 test/core/end2end/fuzzers/api_fuzzer.c | 104 ++++++++++++++++++-------
 1 file changed, 76 insertions(+), 28 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index ebde79c9bc..9f6f4db988 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -147,6 +147,14 @@ typedef struct { grpc_server *server; } server_state;
 ////////////////////////////////////////////////////////////////////////////////
 // test driver
 
+typedef enum {
+  SERVER_SHUTDOWN,
+} tag_name;
+
+static void *tag(tag_name name) {
+  return (void*)(uintptr_t)name;
+}
+
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
   if (squelch) gpr_set_log_function(dont_log);
@@ -155,15 +163,31 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   gpr_now_impl = now_impl;
   grpc_init();
 
-  channel_state chans[256];
-  server_state servers[256];
-
-  memset(chans, 0, sizeof(chans));
-  memset(servers, 0, sizeof(servers));
+  grpc_channel *channel = NULL;
+  grpc_server *server = NULL;
+  bool server_shutdown = false;
+  int pending_server_shutdowns = 0;
 
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
-  while (!is_eof(&inp)) {
+  while (!is_eof(&inp) && channel && server) {
+    if (is_eof(&inp)) {
+      if (channel != NULL) {
+        grpc_channel_destroy(channel);
+        channel = NULL;
+      }
+      if (server != NULL) {
+        if (!server_shutdown) {
+          grpc_server_shutdown_and_notify(server, cq, tag(SERVER_SHUTDOWN));
+          server_shutdown = true;
+          pending_server_shutdowns ++;
+        } else if (pending_server_shutdowns == 0) {
+          grpc_server_destroy(server);
+          server = NULL;
+        }
+      }
+    }
+
     switch (next_byte(&inp)) {
       // tickle completion queue
       case 0: {
@@ -171,7 +195,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
             cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL);
         switch (ev.type) {
           case GRPC_OP_COMPLETE:
-            abort();
+            switch ((tag_name)(uintptr_t)ev.type) {
+            case SERVER_SHUTDOWN:
+              GPR_ASSERT(pending_server_shutdowns);
+              pending_server_shutdowns--;
+              break;
+            default:
+              GPR_ASSERT(!"known tag");
+            }
             break;
           case GRPC_QUEUE_TIMEOUT:
             break;
@@ -185,20 +216,19 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       case 1: {
         gpr_mu_lock(&g_mu);
         g_now = gpr_time_add(
-            g_now, gpr_time_from_millis(next_byte(&inp), GPR_TIMESPAN));
+            g_now, gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
         gpr_mu_unlock(&g_mu);
         break;
       }
       // create an insecure channel
       case 2: {
-        channel_state *cs = &chans[next_byte(&inp)];
-        if (cs->channel == NULL) {
+        if (channel == NULL) {
           char *target = read_string(&inp);
           char *target_uri;
           gpr_asprintf(&target_uri, "fuzz-test:%s", target);
           grpc_channel_args *args = read_args(&inp);
-          cs->channel = grpc_insecure_channel_create(target_uri, args, NULL);
-          GPR_ASSERT(cs->channel != NULL);
+          channel = grpc_insecure_channel_create(target_uri, args, NULL);
+          GPR_ASSERT(channel != NULL);
           grpc_channel_args_destroy(args);
           gpr_free(target_uri);
           gpr_free(target);
@@ -207,31 +237,49 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // destroy a channel
       case 3: {
-        channel_state *cs = &chans[next_byte(&inp)];
-        if (cs->channel != NULL) {
-          grpc_channel_destroy(cs->channel);
-          cs->channel = NULL;
+        if (channel != NULL) {
+          grpc_channel_destroy(channel);
+          channel = NULL;
         }
         break;
       }
       // bring up a server
       case 4: {
-        server_state *ss = &servers[next_byte(&inp)];
-        if (ss->server == NULL) {
+        if (server == NULL) {
           grpc_channel_args *args = read_args(&inp);
-          ss->server = grpc_server_create(args, NULL);
-          GPR_ASSERT(ss->server != NULL);
+          server = grpc_server_create(args, NULL);
+          GPR_ASSERT(server != NULL);
           grpc_channel_args_destroy(args);
-          grpc_server_register_completion_queue(ss->server, cq, NULL);
-          grpc_server_start(ss->server);
+          grpc_server_register_completion_queue(server, cq, NULL);
+          grpc_server_start(server);
+          server_shutdown = false;
+          GPR_ASSERT(pending_server_shutdowns == 0);
         }
       }
-    }
-  }
-
-  for (size_t i = 0; i < GPR_ARRAY_SIZE(chans); i++) {
-    if (chans[i].channel != NULL) {
-      grpc_channel_destroy(chans[i].channel);
+      // begin server shutdown
+      case 5: {
+        if (server != NULL) {
+          grpc_server_shutdown_and_notify(server, cq, tag(SERVER_SHUTDOWN));
+          pending_server_shutdowns++;
+          server_shutdown = true;
+        }
+        break;
+      }
+      // cancel all calls if shutdown
+      case 6: {
+        if (server != NULL && server_shutdown) {
+          grpc_server_cancel_all_calls(server);
+        }
+        break;
+      }
+      // destroy server
+      case 7: {
+        if (server != NULL && server_shutdown && pending_server_shutdowns == 0) {
+          grpc_server_destroy(server);
+          server = NULL;
+        }
+        break;
+      }
     }
   }
 
-- 
GitLab


From c17a5c1d6e78cf90973a4125775bc516e308a5e7 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 09:05:07 -0700
Subject: [PATCH 041/525] fix

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 9f6f4db988..d13c3f18e7 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -201,7 +201,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
               pending_server_shutdowns--;
               break;
             default:
-              GPR_ASSERT(!"known tag");
+              GPR_ASSERT(false);
             }
             break;
           case GRPC_QUEUE_TIMEOUT:
-- 
GitLab


From 481635cc36126c90ecef37f9fdc6156df53e2a0b Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 10:30:10 -0700
Subject: [PATCH 042/525] Fix non-test bug

---
 test/core/end2end/fuzzers/api_fuzzer.c        |  23 +++++++++---------
 .../end2end/fuzzers/api_fuzzer_corpus/00.bin  | Bin 0 -> 1 bytes
 .../end2end/fuzzers/api_fuzzer_corpus/01.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/02.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/03.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/04.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/05.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/06.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/07.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/08.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/09.bin  |   1 +
 .../api_fuzzer_corpus/{empty => 0a.bin}       |   0
 .../end2end/fuzzers/api_fuzzer_corpus/0b.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/0c.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/0d.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/0e.bin  |   1 +
 .../end2end/fuzzers/api_fuzzer_corpus/0f.bin  |   1 +
 17 files changed, 25 insertions(+), 12 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin
 rename test/core/end2end/fuzzers/api_fuzzer_corpus/{empty => 0a.bin} (100%)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index d13c3f18e7..bf6f74d1aa 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -151,9 +151,7 @@ typedef enum {
   SERVER_SHUTDOWN,
 } tag_name;
 
-static void *tag(tag_name name) {
-  return (void*)(uintptr_t)name;
-}
+static void *tag(tag_name name) { return (void *)(uintptr_t)name; }
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
@@ -170,7 +168,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
-  while (!is_eof(&inp) && channel && server) {
+  while (!is_eof(&inp) || channel != NULL || server != NULL) {
     if (is_eof(&inp)) {
       if (channel != NULL) {
         grpc_channel_destroy(channel);
@@ -180,7 +178,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         if (!server_shutdown) {
           grpc_server_shutdown_and_notify(server, cq, tag(SERVER_SHUTDOWN));
           server_shutdown = true;
-          pending_server_shutdowns ++;
+          pending_server_shutdowns++;
         } else if (pending_server_shutdowns == 0) {
           grpc_server_destroy(server);
           server = NULL;
@@ -196,12 +194,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         switch (ev.type) {
           case GRPC_OP_COMPLETE:
             switch ((tag_name)(uintptr_t)ev.type) {
-            case SERVER_SHUTDOWN:
-              GPR_ASSERT(pending_server_shutdowns);
-              pending_server_shutdowns--;
-              break;
-            default:
-              GPR_ASSERT(false);
+              case SERVER_SHUTDOWN:
+                GPR_ASSERT(pending_server_shutdowns);
+                pending_server_shutdowns--;
+                break;
+              default:
+                GPR_ASSERT(false);
             }
             break;
           case GRPC_QUEUE_TIMEOUT:
@@ -274,7 +272,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // destroy server
       case 7: {
-        if (server != NULL && server_shutdown && pending_server_shutdowns == 0) {
+        if (server != NULL && server_shutdown &&
+            pending_server_shutdowns == 0) {
           grpc_server_destroy(server);
           server = NULL;
         }
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin
new file mode 100644
index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d
GIT binary patch
literal 1
IcmZPo000310RR91

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin
new file mode 100644
index 0000000000..6b2aaa7640
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin
new file mode 100644
index 0000000000..25cb955ba2
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin
new file mode 100644
index 0000000000..fc2b5693e0
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin
new file mode 100644
index 0000000000..45a8ca02bf
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin
new file mode 100644
index 0000000000..b0b2b1c8dd
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin
new file mode 100644
index 0000000000..f8fa5a2354
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin
new file mode 100644
index 0000000000..303e398c82
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin
new file mode 100644
index 0000000000..5a77f05831
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin
new file mode 100644
index 0000000000..501a6bbaf1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin
@@ -0,0 +1 @@
+	
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/empty b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin
similarity index 100%
rename from test/core/end2end/fuzzers/api_fuzzer_corpus/empty
rename to test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin
new file mode 100644
index 0000000000..2725bca000
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin
new file mode 100644
index 0000000000..8214d0ee07
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin
new file mode 100644
index 0000000000..67c3297611
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin
new file mode 100644
index 0000000000..9280c0d31d
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin
new file mode 100644
index 0000000000..c30d0581bf
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
-- 
GitLab


From 151fd6826ed2b94e28d98af79ca9eecac2f5e1d7 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 10:32:19 -0700
Subject: [PATCH 043/525] Fix typo

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index bf6f74d1aa..4c4a310fb3 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -193,7 +193,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
             cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL);
         switch (ev.type) {
           case GRPC_OP_COMPLETE:
-            switch ((tag_name)(uintptr_t)ev.type) {
+            switch ((tag_name)(uintptr_t)ev.tag) {
               case SERVER_SHUTDOWN:
                 GPR_ASSERT(pending_server_shutdowns);
                 pending_server_shutdowns--;
-- 
GitLab


From 99f67d1a084c1f124169fff16da9471ff99620e0 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 10:52:23 -0700
Subject: [PATCH 044/525] Add custom resolver

---
 test/core/end2end/fuzzers/api_fuzzer.c | 43 +++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 4c4a310fb3..2e8818210c 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -39,6 +39,7 @@
 #include <grpc/support/string_util.h>
 
 #include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/transport/metadata.h"
 #include "test/core/util/mock_endpoint.h"
 
@@ -126,6 +127,7 @@ static bool is_eof(input_stream *inp) { return inp->cur == inp->end; }
 // global state
 
 static gpr_mu g_mu;
+static gpr_cv g_cv;
 static gpr_timespec g_now;
 
 extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
@@ -134,10 +136,41 @@ static gpr_timespec now_impl(gpr_clock_type clock_type) {
   GPR_ASSERT(clock_type != GPR_TIMESPAN);
   gpr_mu_lock(&g_mu);
   gpr_timespec now = g_now;
+  gpr_cv_broadcast(&g_cv);
   gpr_mu_unlock(&g_mu);
   return now;
 }
 
+static void wait_until(gpr_timespec when) {
+  gpr_mu_lock(&g_mu);
+  while (gpr_time_cmp(when, g_now) < 0) {
+    gpr_cv_wait(&g_cv, &g_mu, gpr_inf_future(GPR_CLOCK_REALTIME));
+  }
+  gpr_mu_unlock(&g_mu);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// dns resolution
+
+static grpc_resolved_addresses *my_resolve_address(const char *name,
+                                                   const char *default_port) {
+  if (0 == strcmp(name, "server")) {
+    wait_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+                            gpr_time_from_seconds(1, GPR_TIMESPAN)));
+    grpc_resolved_addresses *addrs = gpr_malloc(sizeof(*addrs));
+    addrs->naddrs = 1;
+    addrs->addrs = gpr_malloc(sizeof(*addrs->addrs));
+    addrs->addrs[0].len = 0;
+    return addrs;
+  } else if (0 == strcmp(name, "wait")) {
+    wait_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+                            gpr_time_from_seconds(1, GPR_TIMESPAN)));
+    return NULL;
+  } else {
+    return NULL;
+  }
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // test state
 
@@ -157,7 +190,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
   if (squelch) gpr_set_log_function(dont_log);
   input_stream inp = {data, data + size};
+  grpc_blocking_resolve_address = my_resolve_address;
   gpr_mu_init(&g_mu);
+  gpr_cv_init(&g_cv);
   gpr_now_impl = now_impl;
   grpc_init();
 
@@ -184,6 +219,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           server = NULL;
         }
       }
+
+      gpr_mu_lock(&g_mu);
+      g_now = gpr_time_add(g_now, gpr_time_from_seconds(1, GPR_TIMESPAN));
+      gpr_cv_broadcast(&g_cv);
+      gpr_mu_unlock(&g_mu);
     }
 
     switch (next_byte(&inp)) {
@@ -223,7 +263,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         if (channel == NULL) {
           char *target = read_string(&inp);
           char *target_uri;
-          gpr_asprintf(&target_uri, "fuzz-test:%s", target);
+          gpr_asprintf(&target_uri, "dns:%s", target);
           grpc_channel_args *args = read_args(&inp);
           channel = grpc_insecure_channel_create(target_uri, args, NULL);
           GPR_ASSERT(channel != NULL);
@@ -290,5 +330,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
   grpc_shutdown();
   gpr_mu_destroy(&g_mu);
+  gpr_cv_destroy(&g_cv);
   return 0;
 }
-- 
GitLab


From e62826125b63edc9a2e75e6c8479c9289385adca Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 14:14:34 -0700
Subject: [PATCH 045/525] Connectivity check

---
 src/core/lib/iomgr/tcp_client_posix.c  | 25 ++++++++++++++++++-----
 test/core/end2end/fuzzers/api_fuzzer.c | 28 ++++++++++++++++++++++----
 2 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/src/core/lib/iomgr/tcp_client_posix.c b/src/core/lib/iomgr/tcp_client_posix.c
index 6430cb629f..e93d5734a0 100644
--- a/src/core/lib/iomgr/tcp_client_posix.c
+++ b/src/core/lib/iomgr/tcp_client_posix.c
@@ -211,11 +211,11 @@ finish:
   grpc_exec_ctx_enqueue(exec_ctx, closure, *ep != NULL, NULL);
 }
 
-void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
-                             grpc_endpoint **ep,
-                             grpc_pollset_set *interested_parties,
-                             const struct sockaddr *addr, size_t addr_len,
-                             gpr_timespec deadline) {
+static void tcp_client_connect_impl(grpc_exec_ctx *exec_ctx,
+                                    grpc_closure *closure, grpc_endpoint **ep,
+                                    grpc_pollset_set *interested_parties,
+                                    const struct sockaddr *addr,
+                                    size_t addr_len, gpr_timespec deadline) {
   int fd;
   grpc_dualstack_mode dsmode;
   int err;
@@ -303,4 +303,19 @@ done:
   gpr_free(addr_str);
 }
 
+// overridden by api_fuzzer.c
+void (*grpc_tcp_client_connect_impl)(
+    grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
+    grpc_pollset_set *interested_parties, const struct sockaddr *addr,
+    size_t addr_len, gpr_timespec deadline) = tcp_client_connect_impl;
+
+void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
+                             grpc_endpoint **ep,
+                             grpc_pollset_set *interested_parties,
+                             const struct sockaddr *addr, size_t addr_len,
+                             gpr_timespec deadline) {
+  grpc_tcp_client_connect_impl(exec_ctx, closure, ep, interested_parties, addr,
+                               addr_len, deadline);
+}
+
 #endif
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 2e8818210c..16863d2802 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -40,6 +40,7 @@
 
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/tcp_client.h"
 #include "src/core/lib/transport/metadata.h"
 #include "test/core/util/mock_endpoint.h"
 
@@ -172,10 +173,21 @@ static grpc_resolved_addresses *my_resolve_address(const char *name,
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-// test state
-
-typedef struct { grpc_channel *channel; } channel_state;
-typedef struct { grpc_server *server; } server_state;
+// client connection
+
+// defined in tcp_client_posix.c
+extern void (*grpc_tcp_client_connect_impl)(
+    grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep,
+    grpc_pollset_set *interested_parties, const struct sockaddr *addr,
+    size_t addr_len, gpr_timespec deadline);
+
+static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx,
+                                  grpc_closure *closure, grpc_endpoint **ep,
+                                  grpc_pollset_set *interested_parties,
+                                  const struct sockaddr *addr, size_t addr_len,
+                                  gpr_timespec deadline) {
+  abort();
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 // test driver
@@ -191,6 +203,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   if (squelch) gpr_set_log_function(dont_log);
   input_stream inp = {data, data + size};
   grpc_blocking_resolve_address = my_resolve_address;
+  grpc_tcp_client_connect_impl = my_tcp_client_connect;
   gpr_mu_init(&g_mu);
   gpr_cv_init(&g_cv);
   gpr_now_impl = now_impl;
@@ -319,6 +332,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         }
         break;
       }
+      // check connectivity
+      case 8: {
+        if (channel != NULL) {
+          grpc_channel_check_connectivity_state(channel, next_byte(&inp) > 127);
+        }
+        break;
+      }
     }
   }
 
-- 
GitLab


From 24d687edf3ec3c3dc88aaadbe1d98e6c4356c11b Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 19:47:27 -0700
Subject: [PATCH 046/525] Single thread fake name resolution for fuzzing

---
 .../ext/resolver/dns/native/dns_resolver.c    | 14 ++++---
 .../resolver/zookeeper/zookeeper_resolver.c   |  4 +-
 src/core/lib/http/httpcli.c                   |  2 +-
 src/core/lib/iomgr/resolve_address.h          |  5 ++-
 src/core/lib/iomgr/resolve_address_posix.c    |  9 +++-
 src/core/lib/iomgr/resolve_address_windows.c  |  9 +++-
 test/core/end2end/fuzzers/api_fuzzer.c        | 42 ++++++++++++++-----
 7 files changed, 60 insertions(+), 25 deletions(-)

diff --git a/src/core/ext/resolver/dns/native/dns_resolver.c b/src/core/ext/resolver/dns/native/dns_resolver.c
index 2749b0ca01..620ba4e2aa 100644
--- a/src/core/ext/resolver/dns/native/dns_resolver.c
+++ b/src/core/ext/resolver/dns/native/dns_resolver.c
@@ -86,7 +86,8 @@ typedef struct {
 
 static void dns_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
 
-static void dns_start_resolving_locked(dns_resolver *r);
+static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx,
+                                       dns_resolver *r);
 static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
                                          dns_resolver *r);
 
@@ -119,7 +120,7 @@ static void dns_channel_saw_error(grpc_exec_ctx *exec_ctx,
   gpr_mu_lock(&r->mu);
   if (!r->resolving) {
     gpr_backoff_reset(&r->backoff_state);
-    dns_start_resolving_locked(r);
+    dns_start_resolving_locked(exec_ctx, r);
   }
   gpr_mu_unlock(&r->mu);
 }
@@ -134,7 +135,7 @@ static void dns_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
   r->target_config = target_config;
   if (r->resolved_version == 0 && !r->resolving) {
     gpr_backoff_reset(&r->backoff_state);
-    dns_start_resolving_locked(r);
+    dns_start_resolving_locked(exec_ctx, r);
   } else {
     dns_maybe_finish_next_locked(exec_ctx, r);
   }
@@ -149,7 +150,7 @@ static void dns_on_retry_timer(grpc_exec_ctx *exec_ctx, void *arg,
   r->have_retry_timer = false;
   if (success) {
     if (!r->resolving) {
-      dns_start_resolving_locked(r);
+      dns_start_resolving_locked(exec_ctx, r);
     }
   }
   gpr_mu_unlock(&r->mu);
@@ -201,11 +202,12 @@ static void dns_on_resolved(grpc_exec_ctx *exec_ctx, void *arg,
   GRPC_RESOLVER_UNREF(exec_ctx, &r->base, "dns-resolving");
 }
 
-static void dns_start_resolving_locked(dns_resolver *r) {
+static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx,
+                                       dns_resolver *r) {
   GRPC_RESOLVER_REF(&r->base, "dns-resolving");
   GPR_ASSERT(!r->resolving);
   r->resolving = 1;
-  grpc_resolve_address(r->name, r->default_port, dns_on_resolved, r);
+  grpc_resolve_address(exec_ctx, r->name, r->default_port, dns_on_resolved, r);
 }
 
 static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
index 898632c3cd..aa0b4bcede 100644
--- a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
+++ b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
@@ -299,7 +299,7 @@ static void zookeeper_get_children_node_completion(int rc, const char *value,
   address = zookeeper_parse_address(value, (size_t)value_len);
   if (address != NULL) {
     /** Further resolves address by DNS */
-    grpc_resolve_address(address, NULL, zookeeper_dns_resolved, r);
+    grpc_resolve_address(&exec_ctx, address, NULL, zookeeper_dns_resolved, r);
     gpr_free(address);
   } else {
     gpr_log(GPR_ERROR, "Error in resolving a child node of %s", r->name);
@@ -375,7 +375,7 @@ static void zookeeper_get_node_completion(int rc, const char *value,
     r->resolved_addrs->naddrs = 0;
     r->resolved_total = 1;
     /** Further resolves address by DNS */
-    grpc_resolve_address(address, NULL, zookeeper_dns_resolved, r);
+    grpc_resolve_address(&exec_ctx, address, NULL, zookeeper_dns_resolved, r);
     gpr_free(address);
     return;
   }
diff --git a/src/core/lib/http/httpcli.c b/src/core/lib/http/httpcli.c
index 76bd1b64dc..f22721ac8f 100644
--- a/src/core/lib/http/httpcli.c
+++ b/src/core/lib/http/httpcli.c
@@ -246,7 +246,7 @@ static void internal_request_begin(
 
   grpc_pollset_set_add_pollset(exec_ctx, req->context->pollset_set,
                                req->pollset);
-  grpc_resolve_address(request->host, req->handshaker->default_port,
+  grpc_resolve_address(exec_ctx, request->host, req->handshaker->default_port,
                        on_resolved, req);
 }
 
diff --git a/src/core/lib/iomgr/resolve_address.h b/src/core/lib/iomgr/resolve_address.h
index ecc06340a3..ef198fe0f6 100644
--- a/src/core/lib/iomgr/resolve_address.h
+++ b/src/core/lib/iomgr/resolve_address.h
@@ -59,8 +59,9 @@ typedef void (*grpc_resolve_cb)(grpc_exec_ctx *exec_ctx, void *arg,
 /* Asynchronously resolve addr. Use default_port if a port isn't designated
    in addr, otherwise use the port in addr. */
 /* TODO(ctiller): add a timeout here */
-void grpc_resolve_address(const char *addr, const char *default_port,
-                          grpc_resolve_cb cb, void *arg);
+extern void (*grpc_resolve_address)(grpc_exec_ctx *exec_ctx, const char *addr,
+                                    const char *default_port,
+                                    grpc_resolve_cb cb, void *arg);
 /* Destroy resolved addresses */
 void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addresses);
 
diff --git a/src/core/lib/iomgr/resolve_address_posix.c b/src/core/lib/iomgr/resolve_address_posix.c
index b9d3bbdb89..cae91eec20 100644
--- a/src/core/lib/iomgr/resolve_address_posix.c
+++ b/src/core/lib/iomgr/resolve_address_posix.c
@@ -164,8 +164,9 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addrs) {
   gpr_free(addrs);
 }
 
-void grpc_resolve_address(const char *name, const char *default_port,
-                          grpc_resolve_cb cb, void *arg) {
+static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name,
+                                 const char *default_port, grpc_resolve_cb cb,
+                                 void *arg) {
   request *r = gpr_malloc(sizeof(request));
   grpc_closure_init(&r->request_closure, do_request_thread, r);
   r->name = gpr_strdup(name);
@@ -175,4 +176,8 @@ void grpc_resolve_address(const char *name, const char *default_port,
   grpc_executor_enqueue(&r->request_closure, 1);
 }
 
+void (*grpc_resolve_address)(grpc_exec_ctx *exec_ctx, const char *name,
+                             const char *default_port, grpc_resolve_cb cb,
+                             void *arg) = resolve_address_impl;
+
 #endif
diff --git a/src/core/lib/iomgr/resolve_address_windows.c b/src/core/lib/iomgr/resolve_address_windows.c
index 82763d11f4..a65089c017 100644
--- a/src/core/lib/iomgr/resolve_address_windows.c
+++ b/src/core/lib/iomgr/resolve_address_windows.c
@@ -155,8 +155,9 @@ void grpc_resolved_addresses_destroy(grpc_resolved_addresses *addrs) {
   gpr_free(addrs);
 }
 
-void grpc_resolve_address(const char *name, const char *default_port,
-                          grpc_resolve_cb cb, void *arg) {
+static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name,
+                                 const char *default_port, grpc_resolve_cb cb,
+                                 void *arg) {
   request *r = gpr_malloc(sizeof(request));
   grpc_closure_init(&r->request_closure, do_request_thread, r);
   r->name = gpr_strdup(name);
@@ -166,4 +167,8 @@ void grpc_resolve_address(const char *name, const char *default_port,
   grpc_executor_enqueue(&r->request_closure, 1);
 }
 
+void (*grpc_resolved_address)(grpc_exec_ctx *exec_ctx, const char *name,
+                              const char *default_port, grpc_resolve_cb cb,
+                              void *arg) = resolve_address_impl;
+
 #endif
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 16863d2802..1888099adb 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -41,6 +41,7 @@
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/iomgr/tcp_client.h"
+#include "src/core/lib/iomgr/timer.h"
 #include "src/core/lib/transport/metadata.h"
 #include "test/core/util/mock_endpoint.h"
 
@@ -153,23 +154,44 @@ static void wait_until(gpr_timespec when) {
 ////////////////////////////////////////////////////////////////////////////////
 // dns resolution
 
-static grpc_resolved_addresses *my_resolve_address(const char *name,
-                                                   const char *default_port) {
-  if (0 == strcmp(name, "server")) {
+typedef struct addr_req {
+  grpc_timer timer;
+  char *addr;
+  grpc_resolve_cb cb;
+  void *arg;
+} addr_req;
+
+static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+  GPR_ASSERT(success);
+  addr_req *r = arg;
+
+  if (0 == strcmp(r->addr, "server")) {
     wait_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
                             gpr_time_from_seconds(1, GPR_TIMESPAN)));
     grpc_resolved_addresses *addrs = gpr_malloc(sizeof(*addrs));
     addrs->naddrs = 1;
     addrs->addrs = gpr_malloc(sizeof(*addrs->addrs));
     addrs->addrs[0].len = 0;
-    return addrs;
-  } else if (0 == strcmp(name, "wait")) {
-    wait_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
-                            gpr_time_from_seconds(1, GPR_TIMESPAN)));
-    return NULL;
+    r->cb(exec_ctx, r->arg, addrs);
   } else {
-    return NULL;
+    r->cb(exec_ctx, r->arg, NULL);
   }
+
+  gpr_free(r->addr);
+  gpr_free(r);
+}
+
+void my_resolve_address(grpc_exec_ctx *exec_ctx, const char *addr,
+                        const char *default_port, grpc_resolve_cb cb,
+                        void *arg) {
+  addr_req *r = gpr_malloc(sizeof(*r));
+  r->addr = gpr_strdup(addr);
+  r->cb = cb;
+  r->arg = arg;
+  grpc_timer_init(exec_ctx, &r->timer,
+                  gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
+                               gpr_time_from_seconds(1, GPR_TIMESPAN)),
+                  finish_resolve, r, gpr_now(GPR_CLOCK_MONOTONIC));
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -202,7 +224,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
   if (squelch) gpr_set_log_function(dont_log);
   input_stream inp = {data, data + size};
-  grpc_blocking_resolve_address = my_resolve_address;
+  grpc_resolve_address = my_resolve_address;
   grpc_tcp_client_connect_impl = my_tcp_client_connect;
   gpr_mu_init(&g_mu);
   gpr_cv_init(&g_cv);
-- 
GitLab


From fbb2007da4cc4d07ed6a3ee58bf6d520467b1d73 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 19:50:17 -0700
Subject: [PATCH 047/525] Generated a bad example to test connection sequence

---
 .../core/end2end/fuzzers/api_fuzzer_corpus/bad.bin | Bin 0 -> 19 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin b/test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin
new file mode 100644
index 0000000000000000000000000000000000000000..5cb3083d83c6ac367da4e08cab70285d40376022
GIT binary patch
literal 19
acmZQ#D^4vcOD$sH_|Mq#Xe|Q+2Lk{*+Xce_

literal 0
HcmV?d00001

-- 
GitLab


From d0b2523ebebd6b025836dbabf7eaed4a1423eba3 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 19:54:34 -0700
Subject: [PATCH 048/525] Take advantage of NO threads

---
 test/core/end2end/fuzzers/api_fuzzer.c | 25 +------------------------
 1 file changed, 1 insertion(+), 24 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 1888099adb..1ba64eb58f 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -128,27 +128,13 @@ static bool is_eof(input_stream *inp) { return inp->cur == inp->end; }
 ////////////////////////////////////////////////////////////////////////////////
 // global state
 
-static gpr_mu g_mu;
-static gpr_cv g_cv;
 static gpr_timespec g_now;
 
 extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
 
 static gpr_timespec now_impl(gpr_clock_type clock_type) {
   GPR_ASSERT(clock_type != GPR_TIMESPAN);
-  gpr_mu_lock(&g_mu);
-  gpr_timespec now = g_now;
-  gpr_cv_broadcast(&g_cv);
-  gpr_mu_unlock(&g_mu);
-  return now;
-}
-
-static void wait_until(gpr_timespec when) {
-  gpr_mu_lock(&g_mu);
-  while (gpr_time_cmp(when, g_now) < 0) {
-    gpr_cv_wait(&g_cv, &g_mu, gpr_inf_future(GPR_CLOCK_REALTIME));
-  }
-  gpr_mu_unlock(&g_mu);
+  return g_now;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -226,8 +212,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   input_stream inp = {data, data + size};
   grpc_resolve_address = my_resolve_address;
   grpc_tcp_client_connect_impl = my_tcp_client_connect;
-  gpr_mu_init(&g_mu);
-  gpr_cv_init(&g_cv);
   gpr_now_impl = now_impl;
   grpc_init();
 
@@ -255,10 +239,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         }
       }
 
-      gpr_mu_lock(&g_mu);
       g_now = gpr_time_add(g_now, gpr_time_from_seconds(1, GPR_TIMESPAN));
-      gpr_cv_broadcast(&g_cv);
-      gpr_mu_unlock(&g_mu);
     }
 
     switch (next_byte(&inp)) {
@@ -287,10 +268,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // increment global time
       case 1: {
-        gpr_mu_lock(&g_mu);
         g_now = gpr_time_add(
             g_now, gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
-        gpr_mu_unlock(&g_mu);
         break;
       }
       // create an insecure channel
@@ -371,7 +350,5 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_completion_queue_destroy(cq);
 
   grpc_shutdown();
-  gpr_mu_destroy(&g_mu);
-  gpr_cv_destroy(&g_cv);
   return 0;
 }
-- 
GitLab


From f224c0c1fe2abd039f81f11c01793b4068350529 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 20:15:13 -0700
Subject: [PATCH 049/525] Continuing connection pipeline

---
 test/core/end2end/fuzzers/api_fuzzer.c | 107 +++++++++++++++++--------
 1 file changed, 74 insertions(+), 33 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 1ba64eb58f..c00f2427ba 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -129,6 +129,8 @@ static bool is_eof(input_stream *inp) { return inp->cur == inp->end; }
 // global state
 
 static gpr_timespec g_now;
+static grpc_server *g_server;
+static grpc_channel *g_channel;
 
 extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
 
@@ -152,8 +154,6 @@ static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   addr_req *r = arg;
 
   if (0 == strcmp(r->addr, "server")) {
-    wait_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
-                            gpr_time_from_seconds(1, GPR_TIMESPAN)));
     grpc_resolved_addresses *addrs = gpr_malloc(sizeof(*addrs));
     addrs->naddrs = 1;
     addrs->addrs = gpr_malloc(sizeof(*addrs->addrs));
@@ -189,12 +189,48 @@ extern void (*grpc_tcp_client_connect_impl)(
     grpc_pollset_set *interested_parties, const struct sockaddr *addr,
     size_t addr_len, gpr_timespec deadline);
 
+static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, gpr_timespec deadline);
+
+typedef struct {
+  grpc_timer timer;
+  grpc_closure *closure;
+  grpc_endpoint **ep;
+  gpr_timespec deadline;
+} future_connect;
+
+static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+  future_connect *fc = arg;
+  if (g_server) {
+    abort();
+  } else {
+    sched_connect(exec_ctx, fc->closure, fc->ep, fc->deadline);
+  }
+  gpr_free(fc);
+}
+
+static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, gpr_timespec deadline) {
+  if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) > 0) {
+    *ep = NULL;
+    grpc_exec_ctx_enqueue(exec_ctx, closure, false, NULL);
+    return;
+  }
+  
+  future_connect *fc = gpr_malloc(sizeof(*fc));
+  fc->closure = closure;
+  fc->ep = ep;
+  fc->deadline = deadline;
+  grpc_timer_init(exec_ctx, &fc->timer,
+                  gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
+                               gpr_time_from_millis(1, GPR_TIMESPAN)),
+                  do_connect, fc, gpr_now(GPR_CLOCK_MONOTONIC));
+}
+
 static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx,
                                   grpc_closure *closure, grpc_endpoint **ep,
                                   grpc_pollset_set *interested_parties,
                                   const struct sockaddr *addr, size_t addr_len,
                                   gpr_timespec deadline) {
-  abort();
+  sched_connect(exec_ctx, closure, ep, deadline);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -215,27 +251,28 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   gpr_now_impl = now_impl;
   grpc_init();
 
-  grpc_channel *channel = NULL;
-  grpc_server *server = NULL;
+  GPR_ASSERT(g_channel == NULL);
+  GPR_ASSERT(g_server == NULL);
+
   bool server_shutdown = false;
   int pending_server_shutdowns = 0;
 
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
-  while (!is_eof(&inp) || channel != NULL || server != NULL) {
+  while (!is_eof(&inp) || g_channel != NULL || g_server != NULL) {
     if (is_eof(&inp)) {
-      if (channel != NULL) {
-        grpc_channel_destroy(channel);
-        channel = NULL;
+      if (g_channel != NULL) {
+        grpc_channel_destroy(g_channel);
+        g_channel = NULL;
       }
-      if (server != NULL) {
+      if (g_server != NULL) {
         if (!server_shutdown) {
-          grpc_server_shutdown_and_notify(server, cq, tag(SERVER_SHUTDOWN));
+          grpc_server_shutdown_and_notify(g_server, cq, tag(SERVER_SHUTDOWN));
           server_shutdown = true;
           pending_server_shutdowns++;
         } else if (pending_server_shutdowns == 0) {
-          grpc_server_destroy(server);
-          server = NULL;
+          grpc_server_destroy(g_server);
+          g_server = NULL;
         }
       }
 
@@ -274,13 +311,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // create an insecure channel
       case 2: {
-        if (channel == NULL) {
+        if (g_channel == NULL) {
           char *target = read_string(&inp);
           char *target_uri;
           gpr_asprintf(&target_uri, "dns:%s", target);
           grpc_channel_args *args = read_args(&inp);
-          channel = grpc_insecure_channel_create(target_uri, args, NULL);
-          GPR_ASSERT(channel != NULL);
+          g_channel = grpc_insecure_channel_create(target_uri, args, NULL);
+          GPR_ASSERT(g_channel != NULL);
           grpc_channel_args_destroy(args);
           gpr_free(target_uri);
           gpr_free(target);
@@ -289,29 +326,29 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // destroy a channel
       case 3: {
-        if (channel != NULL) {
-          grpc_channel_destroy(channel);
-          channel = NULL;
+        if (g_channel != NULL) {
+          grpc_channel_destroy(g_channel);
+          g_channel = NULL;
         }
         break;
       }
       // bring up a server
       case 4: {
-        if (server == NULL) {
+        if (g_server == NULL) {
           grpc_channel_args *args = read_args(&inp);
-          server = grpc_server_create(args, NULL);
-          GPR_ASSERT(server != NULL);
+          g_server = grpc_server_create(args, NULL);
+          GPR_ASSERT(g_server != NULL);
           grpc_channel_args_destroy(args);
-          grpc_server_register_completion_queue(server, cq, NULL);
-          grpc_server_start(server);
+          grpc_server_register_completion_queue(g_server, cq, NULL);
+          grpc_server_start(g_server);
           server_shutdown = false;
           GPR_ASSERT(pending_server_shutdowns == 0);
         }
       }
       // begin server shutdown
       case 5: {
-        if (server != NULL) {
-          grpc_server_shutdown_and_notify(server, cq, tag(SERVER_SHUTDOWN));
+        if (g_server != NULL) {
+          grpc_server_shutdown_and_notify(g_server, cq, tag(SERVER_SHUTDOWN));
           pending_server_shutdowns++;
           server_shutdown = true;
         }
@@ -319,30 +356,34 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // cancel all calls if shutdown
       case 6: {
-        if (server != NULL && server_shutdown) {
-          grpc_server_cancel_all_calls(server);
+        if (g_server != NULL && server_shutdown) {
+          grpc_server_cancel_all_calls(g_server);
         }
         break;
       }
       // destroy server
       case 7: {
-        if (server != NULL && server_shutdown &&
+        if (g_server != NULL && server_shutdown &&
             pending_server_shutdowns == 0) {
-          grpc_server_destroy(server);
-          server = NULL;
+          grpc_server_destroy(g_server);
+          g_server = NULL;
         }
         break;
       }
       // check connectivity
       case 8: {
-        if (channel != NULL) {
-          grpc_channel_check_connectivity_state(channel, next_byte(&inp) > 127);
+        if (g_channel != NULL) {
+          grpc_channel_check_connectivity_state(g_channel,
+                                                next_byte(&inp) > 127);
         }
         break;
       }
     }
   }
 
+  GPR_ASSERT(g_channel == NULL);
+  GPR_ASSERT(g_server == NULL);
+
   grpc_completion_queue_shutdown(cq);
   GPR_ASSERT(
       grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL)
-- 
GitLab


From 3840ca1a002d71b68872443e7dd230afa7da8672 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 20:19:26 -0700
Subject: [PATCH 050/525] Remove unnecessary assert

---
 test/core/end2end/fuzzers/api_fuzzer.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index c00f2427ba..48389552e7 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -150,7 +150,6 @@ typedef struct addr_req {
 } addr_req;
 
 static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
-  GPR_ASSERT(success);
   addr_req *r = arg;
 
   if (0 == strcmp(r->addr, "server")) {
-- 
GitLab


From 849155d03a8f45236a812d3492dfea98b4ca8571 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 20:21:42 -0700
Subject: [PATCH 051/525] Respect success

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 48389552e7..ab3e42fe5a 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -152,7 +152,7 @@ typedef struct addr_req {
 static void finish_resolve(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   addr_req *r = arg;
 
-  if (0 == strcmp(r->addr, "server")) {
+  if (success && 0 == strcmp(r->addr, "server")) {
     grpc_resolved_addresses *addrs = gpr_malloc(sizeof(*addrs));
     addrs->naddrs = 1;
     addrs->addrs = gpr_malloc(sizeof(*addrs->addrs));
-- 
GitLab


From 3f72df99993a4905e280c7a5ad86da5fcd8a40d5 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 20:26:07 -0700
Subject: [PATCH 052/525] Report sooner

---
 src/core/lib/iomgr/timer.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/core/lib/iomgr/timer.c b/src/core/lib/iomgr/timer.c
index 713f15b69e..c4dfc09c9d 100644
--- a/src/core/lib/iomgr/timer.c
+++ b/src/core/lib/iomgr/timer.c
@@ -83,6 +83,7 @@ static gpr_timespec compute_min_deadline(shard_type *shard) {
 void grpc_timer_list_init(gpr_timespec now) {
   uint32_t i;
 
+  g_initialized = true;
   gpr_mu_init(&g_mu);
   gpr_mu_init(&g_checker_mu);
   g_clock_type = now.clock_type;
@@ -111,6 +112,7 @@ void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) {
   }
   gpr_mu_destroy(&g_mu);
   gpr_mu_destroy(&g_checker_mu);
+  g_initialized = false;
 }
 
 /* This is a cheap, but good enough, pointer hash for sharding the tasks: */
@@ -180,6 +182,16 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
   timer->deadline = deadline;
   timer->triggered = 0;
 
+  if (!g_initialized) {
+    grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, false);
+    return;
+  }
+
+  if (gpr_time_cmp(deadline, now) <= 0) {
+    grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, true);
+    return;
+  }
+
   /* TODO(ctiller): check deadline expired */
 
   gpr_mu_lock(&shard->mu);
-- 
GitLab


From 317f68e5b28a62c30f176d991bc190210133c2a0 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 20:27:24 -0700
Subject: [PATCH 053/525] Fix timer init

---
 src/core/lib/iomgr/timer.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/core/lib/iomgr/timer.c b/src/core/lib/iomgr/timer.c
index c4dfc09c9d..5ebbbb270d 100644
--- a/src/core/lib/iomgr/timer.c
+++ b/src/core/lib/iomgr/timer.c
@@ -70,6 +70,7 @@ static gpr_clock_type g_clock_type;
 static shard_type g_shards[NUM_SHARDS];
 /* Protected by g_mu */
 static shard_type *g_shard_queue[NUM_SHARDS];
+static bool g_initialized = false;
 
 static int run_some_expired_timers(grpc_exec_ctx *exec_ctx, gpr_timespec now,
                                    gpr_timespec *next, int success);
@@ -183,12 +184,12 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
   timer->triggered = 0;
 
   if (!g_initialized) {
-    grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, false);
+    grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, false, NULL);
     return;
   }
 
   if (gpr_time_cmp(deadline, now) <= 0) {
-    grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, true);
+    grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, true, NULL);
     return;
   }
 
-- 
GitLab


From f4cc2f8fe42e4275cad7c29152e4a962647bef67 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 20:47:37 -0700
Subject: [PATCH 054/525] Fix inf loop

---
 test/core/end2end/fuzzers/api_fuzzer.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index ab3e42fe5a..1268260b59 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -199,7 +199,10 @@ typedef struct {
 
 static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   future_connect *fc = arg;
-  if (g_server) {
+  if (!success) {
+    *fc->ep = NULL;
+    grpc_exec_ctx_enqueue(exec_ctx, fc->closure, false, NULL);
+  } else if (g_server != NULL) {
     abort();
   } else {
     sched_connect(exec_ctx, fc->closure, fc->ep, fc->deadline);
@@ -208,7 +211,7 @@ static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
 }
 
 static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, gpr_timespec deadline) {
-  if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) > 0) {
+  if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) <= 0) {
     *ep = NULL;
     grpc_exec_ctx_enqueue(exec_ctx, closure, false, NULL);
     return;
-- 
GitLab


From c1e07768241888c21f605d2efc77d7e0f36fc1a6 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 20:49:29 -0700
Subject: [PATCH 055/525] Better looping

---
 test/core/end2end/fuzzers/api_fuzzer.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 1268260b59..84a17cf56f 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -282,6 +282,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
     }
 
     switch (next_byte(&inp)) {
+      // terminate on bad bytes
+      default:
+        inp.cur = inp.end;
+        break;
       // tickle completion queue
       case 0: {
         grpc_event ev = grpc_completion_queue_next(
-- 
GitLab


From 62c7a5a69975209cf056008ab5d8389dff8f485f Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 22:25:03 -0700
Subject: [PATCH 056/525] Channel establishment

---
 Makefile                                      |    2 +
 build.yaml                                    |    2 +
 test/core/end2end/fuzzers/api_fuzzer.c        |   16 +-
 test/core/util/passthru_endpoint.c            |  158 ++
 test/core/util/passthru_endpoint.h            |   41 +
 tools/run_tests/sources_and_headers.json      |    3 +
 tools/run_tests/tests.json                    | 2102 +----------------
 .../grpc_test_util/grpc_test_util.vcxproj     |    3 +
 .../grpc_test_util.vcxproj.filters            |    6 +
 .../grpc_test_util_unsecure.vcxproj           |    3 +
 .../grpc_test_util_unsecure.vcxproj.filters   |    6 +
 11 files changed, 255 insertions(+), 2087 deletions(-)
 create mode 100644 test/core/util/passthru_endpoint.c
 create mode 100644 test/core/util/passthru_endpoint.h

diff --git a/Makefile b/Makefile
index 50bbf19b23..5040602d30 100644
--- a/Makefile
+++ b/Makefile
@@ -2707,6 +2707,7 @@ LIBGRPC_TEST_UTIL_SRC = \
     test/core/util/grpc_profiler.c \
     test/core/util/mock_endpoint.c \
     test/core/util/parse_hexstring.c \
+    test/core/util/passthru_endpoint.c \
     test/core/util/port_posix.c \
     test/core/util/port_server_client.c \
     test/core/util/port_windows.c \
@@ -2755,6 +2756,7 @@ LIBGRPC_TEST_UTIL_UNSECURE_SRC = \
     test/core/util/grpc_profiler.c \
     test/core/util/mock_endpoint.c \
     test/core/util/parse_hexstring.c \
+    test/core/util/passthru_endpoint.c \
     test/core/util/port_posix.c \
     test/core/util/port_server_client.c \
     test/core/util/port_windows.c \
diff --git a/build.yaml b/build.yaml
index 852f15b667..74119a37d2 100644
--- a/build.yaml
+++ b/build.yaml
@@ -569,6 +569,7 @@ filegroups:
   - test/core/util/grpc_profiler.h
   - test/core/util/mock_endpoint.h
   - test/core/util/parse_hexstring.h
+  - test/core/util/passthru_endpoint.h
   - test/core/util/port.h
   - test/core/util/port_server_client.h
   - test/core/util/slice_splitter.h
@@ -579,6 +580,7 @@ filegroups:
   - test/core/util/grpc_profiler.c
   - test/core/util/mock_endpoint.c
   - test/core/util/parse_hexstring.c
+  - test/core/util/passthru_endpoint.c
   - test/core/util/port_posix.c
   - test/core/util/port_server_client.c
   - test/core/util/port_windows.c
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 84a17cf56f..64fb310a59 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -43,7 +43,9 @@
 #include "src/core/lib/iomgr/tcp_client.h"
 #include "src/core/lib/iomgr/timer.h"
 #include "src/core/lib/transport/metadata.h"
-#include "test/core/util/mock_endpoint.h"
+#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+#include "src/core/lib/surface/server.h"
+#include "test/core/util/passthru_endpoint.h"
 
 ////////////////////////////////////////////////////////////////////////////////
 // logging
@@ -203,7 +205,17 @@ static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
     *fc->ep = NULL;
     grpc_exec_ctx_enqueue(exec_ctx, fc->closure, false, NULL);
   } else if (g_server != NULL) {
-    abort();
+    grpc_endpoint *client;
+    grpc_endpoint *server;
+    grpc_passthru_endpoint_create(&client, &server);
+    *fc->ep = client;
+
+    grpc_transport *transport =
+        grpc_create_chttp2_transport(exec_ctx, NULL, server, 0);
+    grpc_server_setup_transport(exec_ctx, g_server, transport, NULL);
+    grpc_chttp2_transport_start_reading(exec_ctx, transport, NULL, 0);
+
+    grpc_exec_ctx_enqueue(exec_ctx, fc->closure, false, NULL);
   } else {
     sched_connect(exec_ctx, fc->closure, fc->ep, fc->deadline);
   }
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
new file mode 100644
index 0000000000..a47baeb637
--- /dev/null
+++ b/test/core/util/passthru_endpoint.c
@@ -0,0 +1,158 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "test/core/util/passthru_endpoint.h"
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
+
+typedef struct passthru_endpoint passthru_endpoint;
+
+typedef struct {
+  grpc_endpoint base;
+  passthru_endpoint *parent;
+  gpr_slice_buffer read_buffer;
+  gpr_slice_buffer *on_read_out;
+  grpc_closure *on_read;
+} half;
+
+struct passthru_endpoint {
+  gpr_mu mu;
+  int halves;
+  bool shutdown;
+  half client;
+  half server;
+};
+
+static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+                    gpr_slice_buffer *slices, grpc_closure *cb) {
+  half *m = (half *)ep;
+  gpr_mu_lock(&m->parent->mu);
+  if (m->parent->shutdown) {
+    grpc_exec_ctx_enqueue(exec_ctx, cb, false, NULL);
+  } else
+  if (m->read_buffer.count > 0) {
+    gpr_slice_buffer_swap(&m->read_buffer, slices);
+    grpc_exec_ctx_enqueue(exec_ctx, cb, true, NULL);
+  } else {
+    m->on_read = cb;
+    m->on_read_out = slices;
+  }
+  gpr_mu_unlock(&m->parent->mu);
+}
+
+static half *other_half(half *h) {
+  if (h == &h->parent->client)
+    return &h->parent->server;
+  return &h->parent->client;
+}
+
+static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+                     gpr_slice_buffer *slices, grpc_closure *cb) {
+  half *m = other_half((half *)ep);
+  gpr_mu_lock(&m->parent->mu);
+  bool ok= true;
+  if (m->parent->shutdown) {
+   ok = false; 
+  }
+  else if (m->on_read != NULL) {
+    gpr_slice_buffer_addn(m->on_read_out, slices->slices, slices->count);
+    grpc_exec_ctx_enqueue(exec_ctx, m->on_read, true, NULL);
+    m->on_read = NULL;
+  } else {
+    gpr_slice_buffer_addn(&m->read_buffer, slices->slices, slices->count);
+  }
+  gpr_mu_unlock(&m->parent->mu);
+  grpc_exec_ctx_enqueue(exec_ctx, cb, ok, NULL);
+}
+
+static void me_add_to_pollset(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+                              grpc_pollset *pollset) {}
+
+static void me_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
+                                  grpc_pollset_set *pollset) {}
+
+static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
+  half *m = (half*)ep;
+  gpr_mu_lock(&m->parent->mu);
+  m->parent->shutdown = true;
+  if (m->on_read) {
+    grpc_exec_ctx_enqueue(exec_ctx, m->on_read, false, NULL);
+    m->on_read = NULL;
+  }
+  m = other_half(m);
+  if (m->on_read) {
+    grpc_exec_ctx_enqueue(exec_ctx, m->on_read, false, NULL);
+    m->on_read = NULL;
+  }
+  gpr_mu_unlock(&m->parent->mu);
+}
+
+static void me_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
+  passthru_endpoint *p = ((half*)ep)->parent;
+  gpr_mu_lock(&p->mu);
+  if (0 == --p->halves) {
+    gpr_mu_unlock(&p->mu);
+    gpr_mu_destroy(&p->mu);
+    gpr_slice_buffer_destroy(&p->client.read_buffer);
+    gpr_slice_buffer_destroy(&p->server.read_buffer);
+    gpr_free(p);
+  } else {
+    gpr_mu_unlock(&p->mu);
+  }
+}
+
+static char *me_get_peer(grpc_endpoint *ep) {
+  return gpr_strdup("fake:mock_endpoint");
+}
+
+static const grpc_endpoint_vtable vtable = {
+    me_read,     me_write,   me_add_to_pollset, me_add_to_pollset_set,
+    me_shutdown, me_destroy, me_get_peer,
+};
+
+static void half_init(half *m) {
+  m->base.vtable = &vtable;
+  gpr_slice_buffer_init(&m->read_buffer);
+  m->on_read = NULL;
+}
+
+void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **server) {
+  passthru_endpoint *m = gpr_malloc(sizeof(*m));
+  half_init(&m->client);
+  half_init(&m->server);
+  gpr_mu_init(&m->mu);
+  *client = &m->client.base;
+  *server = &m->server.base;
+}
+
diff --git a/test/core/util/passthru_endpoint.h b/test/core/util/passthru_endpoint.h
new file mode 100644
index 0000000000..ba075d508a
--- /dev/null
+++ b/test/core/util/passthru_endpoint.h
@@ -0,0 +1,41 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef MOCK_ENDPOINT_H
+#define MOCK_ENDPOINT_H
+
+#include "src/core/lib/iomgr/endpoint.h"
+
+void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **server);
+
+#endif
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index c1d263d819..8d805fd889 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -6261,6 +6261,7 @@
       "test/core/util/grpc_profiler.h", 
       "test/core/util/mock_endpoint.h", 
       "test/core/util/parse_hexstring.h", 
+      "test/core/util/passthru_endpoint.h", 
       "test/core/util/port.h", 
       "test/core/util/port_server_client.h", 
       "test/core/util/slice_splitter.h"
@@ -6280,6 +6281,8 @@
       "test/core/util/mock_endpoint.h", 
       "test/core/util/parse_hexstring.c", 
       "test/core/util/parse_hexstring.h", 
+      "test/core/util/passthru_endpoint.c", 
+      "test/core/util/passthru_endpoint.h", 
       "test/core/util/port.h", 
       "test/core/util/port_posix.c", 
       "test/core/util/port_server_client.c", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index d9ad342780..c897fe8e77 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -22346,7 +22346,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/01f28719f461d0e09499a9a1d40dab6ffaf7513c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22368,7 +22368,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/03108f73a4908148ddacf8b20d744978a3dbb8e6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22390,7 +22390,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/048d47eee51a1e6c89119b2bc58ccb755e6e781e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22412,7 +22412,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/05a5068ccf28276b0142ac8ce464ed5cd1091c2f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22434,7 +22434,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/07414c08d51096b30fe3a7c7495fbb370a9eb349"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22456,7 +22456,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d19d6ee751184422aa627302ea9271eeb959fad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22478,7 +22478,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/0db8092253ef2cf2302e24a366415dcefa9f0aca"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22500,7 +22500,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/13f189df8c3bc8e7cc9fdf0b48eb65a133e8e252"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22522,7 +22522,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/15f287d50bcc52bddbbb3bc5b29a93ce56557882"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22544,7 +22544,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/16caabddd637cb1ab7c64db8515cd92dea1b6ce7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22566,7 +22566,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/188d368922a5f43e60c90a6397eb0b7ff9164ad0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22588,7 +22588,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1910516becba08fd6cbf71179f9b0d91f281d976"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22610,7 +22610,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1b85eab98d2fd10bb449648b8bb538ffe455fb3d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22632,7 +22632,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1be5ba6372ab0eb27c0939f63c4287f736da4add"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22654,7 +22654,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1ef624482d620e43e6d34da1afe46267fc695d9b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22676,7 +22676,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1f9c9faf2c2a7fc66191093ff11333d2d32b83a0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -22698,2075 +22698,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1fbc12c332ab7671a787d6f7ca34f29afd581285"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2300d27ee843d71b9b33ee01dcbd31b3b001d3d0"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2311aab0528eeef24d615b638c3deeddcc91b040"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2438538cf050251672d7c4922878192f19ad8414"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/29416e7301eb6f96233242a22d999e4794bfa7b9"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/31209f7b3279af6ecbd718405b4c3992051b64b7"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/37dc7f75b78630c09cb1b86d79938cb6e2b5c831"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/436ea2edd925add818d5933ea1a694c665c5bbda"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/437851faffe589031aee6285a7afffefbfb91e21"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e7df6ab7ed0d08f995dfdead1393d9502b91aa"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/473acfd07ec2374a7cd897f0d7414d650ee4ac60"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4b990622c2aa94e4e20b2bf5563f83cd5f6ff0c2"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4bc3e2a6f3ea88f833cb0d6455fa30d8abee8a30"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e7a0ceb5a28074458aef5fcd642fcdecfeca7b7"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5007854f8a4c1f3f2389129cf34656aab03cf2c4"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5244e8038db493928522ca91b367df27a8f12e02"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/529dc710a73aceb6a3baca4a553525871acaf30d"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/59664b5f2b37a0b969a70b94c8e9b650758742fd"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5bab489bde99abf4ee0ad1eaef7a411910fc5c18"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e0c23806a130d5b6be6e8b18bac003318e32602"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e5cd885ba18536e1733494cb3f70899e82027e6"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/61eeb2999a0753c473248407fb2a498dd5b92b6a"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/621d3078be09fb0edfb50a3ca8e424827aa436ce"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/66dbd85c35e162aa686c7352062f6ea3a71a5b46"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/68501cda6a1119beb6ec5d6547d867f587b7ad82"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ee88ae97d75ba9598046324e6685504ebdf56c6"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6fdaa6bb699f06faef1ca77860d5462fc6312978"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74b02def11aa0df2216774654d9b016936d4ca7d"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7532ab7df8ead62b9d4c96a74d73db02f34323d2"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/78a78375d00f6aad8d03ef3011e3ea678c32ea7d"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/78c42909d554be1e42738cc9c7386f72f3e449ef"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/79021b946be27e44e1e299b764d697b3df71c379"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7a1f5e916b3df139db6c5c5e8daaac2ecd76a08a"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7eceb77897f681041b72f4ef9253ba01a32ec01b"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8238dd67c0a31f4d0d927994f928f881309e6e41"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/828d4f7971466d62168e6e738767bbf105377e4f"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/82ec4b7970e1a75e26f8003c4ca844f39f30a5ef"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/837911474ed148fb2fa022778fff0cad05bbbed6"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/84083368af0c14c6920a4a086faeff89cbcd807e"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/88c543cb216935d1c5d946d2c13885a6ddfecd99"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/897ee7add6c2b9560b2c8fbeedc5b1c5a4c37baa"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d41c62e5053bb95a68d80cac72b76f40d8681c7"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8e93933bee0f4179eb19ca52f380b5d25177478a"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/94513377d6463f2844d424a4d2eacf12b87721f9"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/95c6237b14e73c71e6ee9906f30c320973f24f7a"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9842926af7ca0a8cca12604f945414f07b01e13d"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0b32c1a2d0d3e1b3f09f1ffd98d7baeea3974f"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9e521658847affb0f3bca0d115fb8819019db00f"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a98acdd829aa14229e33db36812c8b0c1d601072"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/aba2a9b19e26828ef2c984a821d4fb10540290cd"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ac05889f7ee1f6f74048137060d2d2cc4b21c0c7"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b15f4d14b937258d927518caa5097e592b240f48"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b248dbda6ccc4675f503dfa5400b862840c6b74f"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b278354ce3c3863f99b3d5c4bf01de494238f9fd"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b28fd090e96e0ca032fee61fe7ddfbb62b446dcd"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5e16a7ea542c6d4182fdfb0af82172ecc35cf3d"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61e648d14adfbaac529099b792ee6a505601abe"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b76ce3d7173d97c25cba87e0bbdb4433b21884b2"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/beda82bfa52db14394b736dddde9a4d32af02cd5"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf8b4530d8d246dd74ac53a13471bba17941dff7"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c1f3aaf5994757fa2ba09f7125f8580017d4a8d3"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c248dd64bcdaaf1153c18d670e286b29ee4af81c"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c31b3a296bffaf72d61eba39f44dba9186d88fa6"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a9bd57b8e28f27e150871f0549ca1cc8781952"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4ea21bb365bbeeaf5f2c654883e56d11e43c44e"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c809013b63377afd7fe17fad8cf0732f10c411e4"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c88264bd2df08fb772b8d7ec911a0715251b3911"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca032cbffbb34304877972062f797c42fbea661d"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca66a02a677c0df021b56adab5866ea30789becc"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cbf6b8f3b8cdf5a8ce9a082a67931617a7eae0c4"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdb139c145391a913af004aa38e88940182674c3"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cf63ceff8f7408790a5e3c7e15d0c984a08a791f"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1c5a35969abe7f785dc5bdf045ed419d7745d59a"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-366d928de426e357730fc4b011bfdc19fbd51dd7"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-433d6907005077bd84a63487509c0001d4700d07"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d01c2354d8797408fb8d73f5f9c2ec5b217c6072"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d5225ed1690780f8e54bc15fe07f275ad4f1ea79"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d5c32d1673d03363dce866f6c375a29b7573c3ac"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d6361a489f999e840eec01a8f1f191426531aa4d"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d6e3f338d678e927f608dd0642fa2b7841b5b83c"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d8f94ef307da5d8d1d47e585dc0677bbbd083a1e"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d99e0bc37dbbf5ee870ae9213923cc3d5e72e7cb"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e15cde0fd6419be5594f70dc6d26de8619df864b"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e36ad57e12e7b5d44e543b192121437a1dba99ea"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5690389240495c1d01d44203b4062276513a927"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e719889934afb75552663dd466674f232763e086"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ecff05d90eee72d9ebb498669725b50cb15c25a3"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ed086108ea505a9503ccbd3d23c1228d59256a8a"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ed93eaae0016b111eed7e065ed03649b62e46f56"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/empty"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f2d2eb899cd11487e99cf3e509218c5d520ec614"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f8b04eebb47cd685e394ac9f90dda53ad57faf97"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f9358e37f9fb4b2172f91981c79af5ef04922503"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/fbd3bcdcf45e20be485e8359ae60871c166c1ae0"
-    ], 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ], 
-    "cpu_cost": 0.1, 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c", 
-    "name": "api_fuzzer_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
-    ]
-  }, 
-  {
-    "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/fdee3f97ab3c5e924b6f61b218dc17138f4c56f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
       "linux", 
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
index cb033a5aa4..44e9f8034a 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
@@ -155,6 +155,7 @@
     <ClInclude Include="$(SolutionDir)\..\test\core\util\grpc_profiler.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\mock_endpoint.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h" />
+    <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\port.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\port_server_client.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\slice_splitter.h" />
@@ -180,6 +181,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\port_server_client.c">
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
index 81b2a81053..1cae9fb1fd 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
@@ -31,6 +31,9 @@
     <ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
       <Filter>test\core\util</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+      <Filter>test\core\util</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
       <Filter>test\core\util</Filter>
     </ClCompile>
@@ -69,6 +72,9 @@
     <ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h">
       <Filter>test\core\util</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h">
+      <Filter>test\core\util</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\test\core\util\port.h">
       <Filter>test\core\util</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
index bb93b2c6f3..e681622071 100644
--- a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
@@ -153,6 +153,7 @@
     <ClInclude Include="$(SolutionDir)\..\test\core\util\grpc_profiler.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\mock_endpoint.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h" />
+    <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\port.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\port_server_client.h" />
     <ClInclude Include="$(SolutionDir)\..\test\core\util\slice_splitter.h" />
@@ -170,6 +171,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\port_server_client.c">
diff --git a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters
index 4c4620a288..b40fe48409 100644
--- a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj.filters
@@ -19,6 +19,9 @@
     <ClCompile Include="$(SolutionDir)\..\test\core\util\parse_hexstring.c">
       <Filter>test\core\util</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.c">
+      <Filter>test\core\util</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\core\util\port_posix.c">
       <Filter>test\core\util</Filter>
     </ClCompile>
@@ -51,6 +54,9 @@
     <ClInclude Include="$(SolutionDir)\..\test\core\util\parse_hexstring.h">
       <Filter>test\core\util</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\test\core\util\passthru_endpoint.h">
+      <Filter>test\core\util</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\test\core\util\port.h">
       <Filter>test\core\util</Filter>
     </ClInclude>
-- 
GitLab


From d2fd769aaeb72955910ac103bd0ec9e6e4f39d78 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 13 Apr 2016 22:44:48 -0700
Subject: [PATCH 057/525] Initial channel watching

---
 test/core/end2end/fuzzers/api_fuzzer.c | 37 +++++++++++++++++++++-----
 test/core/util/passthru_endpoint.c     | 21 +++++++--------
 test/core/util/passthru_endpoint.h     |  3 ++-
 3 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 64fb310a59..d8385264ea 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -38,13 +38,13 @@
 #include <grpc/support/log.h>
 #include <grpc/support/string_util.h>
 
+#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/iomgr/tcp_client.h"
 #include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/transport/metadata.h"
-#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/surface/server.h"
+#include "src/core/lib/transport/metadata.h"
 #include "test/core/util/passthru_endpoint.h"
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -190,7 +190,8 @@ extern void (*grpc_tcp_client_connect_impl)(
     grpc_pollset_set *interested_parties, const struct sockaddr *addr,
     size_t addr_len, gpr_timespec deadline);
 
-static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, gpr_timespec deadline);
+static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
+                          grpc_endpoint **ep, gpr_timespec deadline);
 
 typedef struct {
   grpc_timer timer;
@@ -222,13 +223,14 @@ static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   gpr_free(fc);
 }
 
-static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure, grpc_endpoint **ep, gpr_timespec deadline) {
+static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
+                          grpc_endpoint **ep, gpr_timespec deadline) {
   if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) <= 0) {
     *ep = NULL;
     grpc_exec_ctx_enqueue(exec_ctx, closure, false, NULL);
     return;
   }
-  
+
   future_connect *fc = gpr_malloc(sizeof(*fc));
   fc->closure = closure;
   fc->ep = ep;
@@ -252,6 +254,7 @@ static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx,
 
 typedef enum {
   SERVER_SHUTDOWN,
+  CHANNEL_WATCH,
 } tag_name;
 
 static void *tag(tag_name name) { return (void *)(uintptr_t)name; }
@@ -270,10 +273,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
   bool server_shutdown = false;
   int pending_server_shutdowns = 0;
+  int pending_channel_watches = 0;
 
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
-  while (!is_eof(&inp) || g_channel != NULL || g_server != NULL) {
+  while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
+         pending_channel_watches > 0) {
     if (is_eof(&inp)) {
       if (g_channel != NULL) {
         grpc_channel_destroy(g_channel);
@@ -309,6 +314,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                 GPR_ASSERT(pending_server_shutdowns);
                 pending_server_shutdowns--;
                 break;
+              case CHANNEL_WATCH:
+                GPR_ASSERT(pending_channel_watches > 0);
+                pending_channel_watches--;
+                break;
               default:
                 GPR_ASSERT(false);
             }
@@ -396,6 +405,22 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         }
         break;
       }
+      // watch connectivity
+      case 9: {
+        if (g_channel != NULL) {
+          grpc_connectivity_state st =
+              grpc_channel_check_connectivity_state(g_channel, 0);
+          if (st != GRPC_CHANNEL_FATAL_FAILURE) {
+            grpc_channel_watch_connectivity_state(
+                g_channel, st,
+                gpr_time_add(
+                    gpr_now(GPR_CLOCK_REALTIME),
+                    gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN)), cq,
+                    tag(CHANNEL_WATCH));
+            pending_channel_watches++;
+          }
+        }
+      }
     }
   }
 
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index a47baeb637..cec8865744 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -60,8 +60,7 @@ static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
   gpr_mu_lock(&m->parent->mu);
   if (m->parent->shutdown) {
     grpc_exec_ctx_enqueue(exec_ctx, cb, false, NULL);
-  } else
-  if (m->read_buffer.count > 0) {
+  } else if (m->read_buffer.count > 0) {
     gpr_slice_buffer_swap(&m->read_buffer, slices);
     grpc_exec_ctx_enqueue(exec_ctx, cb, true, NULL);
   } else {
@@ -72,8 +71,7 @@ static void me_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
 }
 
 static half *other_half(half *h) {
-  if (h == &h->parent->client)
-    return &h->parent->server;
+  if (h == &h->parent->client) return &h->parent->server;
   return &h->parent->client;
 }
 
@@ -81,11 +79,10 @@ static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
                      gpr_slice_buffer *slices, grpc_closure *cb) {
   half *m = other_half((half *)ep);
   gpr_mu_lock(&m->parent->mu);
-  bool ok= true;
+  bool ok = true;
   if (m->parent->shutdown) {
-   ok = false; 
-  }
-  else if (m->on_read != NULL) {
+    ok = false;
+  } else if (m->on_read != NULL) {
     gpr_slice_buffer_addn(m->on_read_out, slices->slices, slices->count);
     grpc_exec_ctx_enqueue(exec_ctx, m->on_read, true, NULL);
     m->on_read = NULL;
@@ -103,7 +100,7 @@ static void me_add_to_pollset_set(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
                                   grpc_pollset_set *pollset) {}
 
 static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
-  half *m = (half*)ep;
+  half *m = (half *)ep;
   gpr_mu_lock(&m->parent->mu);
   m->parent->shutdown = true;
   if (m->on_read) {
@@ -119,7 +116,7 @@ static void me_shutdown(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
 }
 
 static void me_destroy(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep) {
-  passthru_endpoint *p = ((half*)ep)->parent;
+  passthru_endpoint *p = ((half *)ep)->parent;
   gpr_mu_lock(&p->mu);
   if (0 == --p->halves) {
     gpr_mu_unlock(&p->mu);
@@ -147,7 +144,8 @@ static void half_init(half *m) {
   m->on_read = NULL;
 }
 
-void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **server) {
+void grpc_passthru_endpoint_create(grpc_endpoint **client,
+                                   grpc_endpoint **server) {
   passthru_endpoint *m = gpr_malloc(sizeof(*m));
   half_init(&m->client);
   half_init(&m->server);
@@ -155,4 +153,3 @@ void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **serve
   *client = &m->client.base;
   *server = &m->server.base;
 }
-
diff --git a/test/core/util/passthru_endpoint.h b/test/core/util/passthru_endpoint.h
index ba075d508a..aa1d3a1763 100644
--- a/test/core/util/passthru_endpoint.h
+++ b/test/core/util/passthru_endpoint.h
@@ -36,6 +36,7 @@
 
 #include "src/core/lib/iomgr/endpoint.h"
 
-void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **server);
+void grpc_passthru_endpoint_create(grpc_endpoint **client,
+                                   grpc_endpoint **server);
 
 #endif
-- 
GitLab


From f3596c50747fd383998e03b3fbd2da3aa1c2510e Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 14 Apr 2016 08:08:38 -0700
Subject: [PATCH 058/525] Fix bugs in early triggering

---
 src/core/lib/iomgr/timer.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/core/lib/iomgr/timer.c b/src/core/lib/iomgr/timer.c
index 5ebbbb270d..acb5b26c87 100644
--- a/src/core/lib/iomgr/timer.c
+++ b/src/core/lib/iomgr/timer.c
@@ -184,11 +184,13 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
   timer->triggered = 0;
 
   if (!g_initialized) {
+    timer->triggered = 1;
     grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, false, NULL);
     return;
   }
 
   if (gpr_time_cmp(deadline, now) <= 0) {
+    timer->triggered = 1;
     grpc_exec_ctx_enqueue(exec_ctx, &timer->closure, true, NULL);
     return;
   }
-- 
GitLab


From 36750ede66c56bfc1cda6580e35b2dbfd8c4d1de Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 14 Apr 2016 08:58:35 -0700
Subject: [PATCH 059/525] Validate results of events

---
 test/core/end2end/fuzzers/api_fuzzer.c | 81 ++++++++++++++++++--------
 1 file changed, 56 insertions(+), 25 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index d8385264ea..e0dd717a8b 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -252,12 +252,45 @@ static void my_tcp_client_connect(grpc_exec_ctx *exec_ctx,
 ////////////////////////////////////////////////////////////////////////////////
 // test driver
 
-typedef enum {
-  SERVER_SHUTDOWN,
-  CHANNEL_WATCH,
-} tag_name;
+typedef struct validator {
+  void (*validate)(void *arg, bool success);
+  void *arg;
+} validator;
+
+static validator *create_validator(void (*validate)(void *arg, bool success),
+                                   void *arg) {
+  validator *v = gpr_malloc(sizeof(*v));
+  v->validate = validate;
+  v->arg = arg;
+  return v;
+}
+
+static void assert_success_and_decrement(void *counter, bool success) {
+  GPR_ASSERT(success);
+  --*(int *)counter;
+}
 
-static void *tag(tag_name name) { return (void *)(uintptr_t)name; }
+typedef struct connectivity_watch {
+  int *counter;
+  gpr_timespec deadline;
+} connectivity_watch;
+
+static connectivity_watch *make_connectivity_watch(gpr_timespec s,
+                                                   int *counter) {
+  connectivity_watch *o = gpr_malloc(sizeof(*o));
+  o->deadline = s;
+  o->counter = counter;
+  return o;
+}
+
+static void validate_connectivity_watch(void *p, bool success) {
+  connectivity_watch *w = p;
+  if (!success) {
+    GPR_ASSERT(gpr_time_cmp(gpr_now(w->deadline.clock_type), w->deadline) >= 0);
+  }
+  --*w->counter;
+  gpr_free(w);
+}
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
@@ -286,7 +319,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       if (g_server != NULL) {
         if (!server_shutdown) {
-          grpc_server_shutdown_and_notify(g_server, cq, tag(SERVER_SHUTDOWN));
+          grpc_server_shutdown_and_notify(
+              g_server, cq, create_validator(assert_success_and_decrement,
+                                             &pending_server_shutdowns));
           server_shutdown = true;
           pending_server_shutdowns++;
         } else if (pending_server_shutdowns == 0) {
@@ -308,20 +343,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         grpc_event ev = grpc_completion_queue_next(
             cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL);
         switch (ev.type) {
-          case GRPC_OP_COMPLETE:
-            switch ((tag_name)(uintptr_t)ev.tag) {
-              case SERVER_SHUTDOWN:
-                GPR_ASSERT(pending_server_shutdowns);
-                pending_server_shutdowns--;
-                break;
-              case CHANNEL_WATCH:
-                GPR_ASSERT(pending_channel_watches > 0);
-                pending_channel_watches--;
-                break;
-              default:
-                GPR_ASSERT(false);
-            }
+          case GRPC_OP_COMPLETE: {
+            validator *v = ev.tag;
+            v->validate(v->arg, ev.success);
+            gpr_free(v);
             break;
+          }
           case GRPC_QUEUE_TIMEOUT:
             break;
           case GRPC_QUEUE_SHUTDOWN:
@@ -375,7 +402,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       // begin server shutdown
       case 5: {
         if (g_server != NULL) {
-          grpc_server_shutdown_and_notify(g_server, cq, tag(SERVER_SHUTDOWN));
+          grpc_server_shutdown_and_notify(
+              g_server, cq, create_validator(assert_success_and_decrement,
+                                             &pending_server_shutdowns));
           pending_server_shutdowns++;
           server_shutdown = true;
         }
@@ -411,12 +440,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           grpc_connectivity_state st =
               grpc_channel_check_connectivity_state(g_channel, 0);
           if (st != GRPC_CHANNEL_FATAL_FAILURE) {
+            gpr_timespec deadline = gpr_time_add(
+                gpr_now(GPR_CLOCK_REALTIME),
+                gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
             grpc_channel_watch_connectivity_state(
-                g_channel, st,
-                gpr_time_add(
-                    gpr_now(GPR_CLOCK_REALTIME),
-                    gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN)), cq,
-                    tag(CHANNEL_WATCH));
+                g_channel, st, deadline, cq,
+                create_validator(validate_connectivity_watch,
+                                 make_connectivity_watch(
+                                     deadline, &pending_channel_watches)));
             pending_channel_watches++;
           }
         }
-- 
GitLab


From ac82c186b9d3fb93694a67b6f31b452e3ba858e7 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 14 Apr 2016 09:29:13 -0700
Subject: [PATCH 060/525] Work towards creating calls

---
 test/core/end2end/fuzzers/api_fuzzer.c | 79 +++++++++++++++++++++++++-
 1 file changed, 76 insertions(+), 3 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index e0dd717a8b..39d1d2ae20 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -70,6 +70,8 @@ static uint8_t next_byte(input_stream *inp) {
   return *inp->cur++;
 }
 
+static void end(input_stream *inp) { inp->cur = inp->end; }
+
 static char *read_string(input_stream *inp) {
   size_t len = next_byte(inp);
   char *str = gpr_malloc(len + 1);
@@ -292,6 +294,11 @@ static void validate_connectivity_watch(void *p, bool success) {
   gpr_free(w);
 }
 
+typedef struct call_state {
+  grpc_call *client;
+  grpc_call *server;
+} call_state;
+
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
   if (squelch) gpr_set_log_function(dont_log);
@@ -308,6 +315,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   int pending_server_shutdowns = 0;
   int pending_channel_watches = 0;
 
+#define MAX_CALLS 16
+  call_state calls[MAX_CALLS];
+  int num_calls = 0;
+  memset(calls, 0, sizeof(calls));
+
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
   while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
@@ -336,7 +348,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
     switch (next_byte(&inp)) {
       // terminate on bad bytes
       default:
-        inp.cur = inp.end;
+        end(&inp);
         break;
       // tickle completion queue
       case 0: {
@@ -375,6 +387,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           grpc_channel_args_destroy(args);
           gpr_free(target_uri);
           gpr_free(target);
+        } else {
+          end(&inp);
         }
         break;
       }
@@ -383,6 +397,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         if (g_channel != NULL) {
           grpc_channel_destroy(g_channel);
           g_channel = NULL;
+        } else {
+          end(&inp);
         }
         break;
       }
@@ -397,6 +413,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           grpc_server_start(g_server);
           server_shutdown = false;
           GPR_ASSERT(pending_server_shutdowns == 0);
+        } else {
+          end(&inp);
         }
       }
       // begin server shutdown
@@ -407,6 +425,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                                              &pending_server_shutdowns));
           pending_server_shutdowns++;
           server_shutdown = true;
+        } else {
+          end(&inp);
         }
         break;
       }
@@ -414,6 +434,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       case 6: {
         if (g_server != NULL && server_shutdown) {
           grpc_server_cancel_all_calls(g_server);
+        } else {
+          end(&inp);
         }
         break;
       }
@@ -423,14 +445,22 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
             pending_server_shutdowns == 0) {
           grpc_server_destroy(g_server);
           g_server = NULL;
+        } else {
+          end(&inp);
         }
         break;
       }
       // check connectivity
       case 8: {
         if (g_channel != NULL) {
-          grpc_channel_check_connectivity_state(g_channel,
-                                                next_byte(&inp) > 127);
+          uint8_t try_to_connect = next_byte(&inp);
+          if (try_to_connect == 0 || try_to_connect == 1) {
+            grpc_channel_check_connectivity_state(g_channel, try_to_connect);
+          } else {
+            end(&inp);
+          }
+        } else {
+          end(&inp);
         }
         break;
       }
@@ -450,7 +480,50 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                                      deadline, &pending_channel_watches)));
             pending_channel_watches++;
           }
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // create a call
+      case 10: {
+        bool ok = true;
+        if (g_channel == NULL) ok = false;
+        if (num_calls >= MAX_CALLS) ok = false;
+        grpc_call *parent_call = NULL;
+        uint8_t pcidx = next_byte(&inp);
+        if (pcidx > MAX_CALLS)
+          ok = false;
+        else if (pcidx < MAX_CALLS) {
+          parent_call = calls[pcidx].server;
+          if (parent_call == NULL) ok = false;
+        }
+        uint32_t propagation_mask = read_uint32(&inp);
+        char *method = read_string(&inp);
+        char *host = read_string(&inp);
+        gpr_timespec deadline =
+            gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+                         gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
+
+        if (ok) {
+          GPR_ASSERT(calls[num_calls].client == NULL);
+          calls[num_calls].client =
+              grpc_channel_create_call(g_channel, parent_call, propagation_mask,
+                                       cq, method, host, deadline, NULL);
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // switch the 'current' call
+      case 11: {
+        uint8_t new_current = next_byte(&inp);
+        if (new_current == 0 || new_current >= num_calls) {
+          end(&inp);
+        } else {
+          GPR_SWAP(call_state, calls[0], calls[new_current]);
         }
+        break;
       }
     }
   }
-- 
GitLab


From 1395e19c2c12820e19756db0d261f9e2653734e6 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 14 Apr 2016 12:49:27 -0700
Subject: [PATCH 061/525] progress

---
 test/core/end2end/fuzzers/api_fuzzer.c | 160 ++++++++++++++++++++++++-
 1 file changed, 159 insertions(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 39d1d2ae20..c74783bee4 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -272,6 +272,8 @@ static void assert_success_and_decrement(void *counter, bool success) {
   --*(int *)counter;
 }
 
+static void decrement(void *counter, bool success) { --*(int *)counter; }
+
 typedef struct connectivity_watch {
   int *counter;
   gpr_timespec deadline;
@@ -294,9 +296,15 @@ static void validate_connectivity_watch(void *p, bool success) {
   gpr_free(w);
 }
 
+static void free_non_null(void *p) {
+  GPR_ASSERT(p != NULL);
+  gpr_free(p);
+}
+
 typedef struct call_state {
   grpc_call *client;
   grpc_call *server;
+  grpc_metadata_array recv_initial_metadata;
 } call_state;
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
@@ -314,6 +322,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   bool server_shutdown = false;
   int pending_server_shutdowns = 0;
   int pending_channel_watches = 0;
+  int pending_pings = 0;
 
 #define MAX_CALLS 16
   call_state calls[MAX_CALLS];
@@ -323,7 +332,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
   while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
-         pending_channel_watches > 0) {
+         pending_channel_watches > 0 || pending_pings > 0) {
     if (is_eof(&inp)) {
       if (g_channel != NULL) {
         grpc_channel_destroy(g_channel);
@@ -525,6 +534,155 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         }
         break;
       }
+      // queue some ops on a call
+      case 12: {
+        size_t num_ops = next_byte(&inp);
+        grpc_op *ops = gpr_malloc(sizeof(grpc_op) * num_ops);
+        bool ok = num_calls > 0;
+        uint8_t on_server = next_byte(&inp);
+        if (on_server != 0 && on_server != 1) {
+          ok = false;
+        }
+        if (ok && on_server && calls[0].server == NULL) {
+          ok = false;
+        }
+        if (ok && !on_server && calls[0].client == NULL) {
+          ok = false;
+        }
+        for (size_t i = 0; i < num_ops; i++) {
+          grpc_op *op = &ops[i];
+          switch (next_byte(&inp)) {
+            default:
+              ok = false;
+              break;
+            case GRPC_OP_SEND_INITIAL_METADATA:
+              op->op = GRPC_OP_SEND_INITIAL_METADATA;
+              op->data.send_initial_metadata.count = next_byte(&inp);
+              read_metadata(&inp, &op->data.send_initial_metadata.count,
+                            &op->data.send_initial_metadata.metadata);
+              break;
+            case GRPC_OP_SEND_MESSAGE:
+              op->op = GRPC_OP_SEND_INITIAL_METADATA;
+              op->data.send_message = read_message(&inp);
+              break;
+            case GRPC_OP_SEND_STATUS_FROM_SERVER:
+              op->op = GRPC_OP_SEND_STATUS_FROM_SERVER;
+              read_metadata(
+                  &inp,
+                  &op->data.send_status_from_server.trailing_metadata_count,
+                  &op->data.send_status_from_server.trailing_metadata);
+              break;
+            case GRPC_OP_RECV_INITIAL_METADATA:
+              op->op = GRPC_OP_RECV_INITIAL_METADATA;
+              op->data.recv_initial_metadata = &calls[0].recv_initial_metadata;
+              break;
+            case GRPC_OP_RECV_MESSAGE:
+              op->op = GRPC_OP_RECV_MESSAGE;
+              op->data.recv_message = &calls[0].recv_message[on_server];
+              break;
+            case GRPC_OP_RECV_STATUS_ON_CLIENT:
+              op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
+              op->data.recv_status_on_client.status = &calls[0].status;
+              op->data.recv_status_on_client.trailing_metadata =
+                  &calls[0].recv_trailing_metadata;
+              op->data.recv_status_on_client.status_details =
+                  &calls[0].recv_status_details;
+              op->data.recv_status_on_client.status_details_capacity =
+                  &calls[0].recv_status_details_capacity;
+              break;
+            case GRPC_OP_RECV_CLOSE_ON_SERVER:
+              op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
+              op->data.recv_close_on_server.cancelled = &calls[0].cancelled;
+              break;
+          }
+          op->reserved = NULL;
+          op->flags = read_uint32(&inp);
+          if (ok) {
+            grpc_call_error error = grpc_call_start_batch(
+                on_server ? calls[0].server : calls[0].client, ops, num_ops,
+                tag, NULL);
+          } else {
+            end(&inp);
+          }
+        }
+        break;
+      }
+      // cancel current call on client
+      case 13: {
+        if (num_calls > 0 && calls[0].client) {
+          grpc_call_cancel(calls[0].client, NULL);
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // cancel current call on server
+      case 14: {
+        if (num_calls > 0 && calls[0].server) {
+          grpc_call_cancel(calls[0].server, NULL)
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // get a calls peer on client
+      case 15: {
+        if (num_calls > 0 && calls[0].client) {
+          free_non_null(grpc_call_get_peer(calls[0].client));
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // get a calls peer on server
+      case 16: {
+        if (num_calls > 0 && calls[0].server) {
+          free_non_null(grpc_call_get_peer(calls[0].server));
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // get a channels target
+      case 17: {
+        if (g_channel != NULL) {
+          free_non_null(grpc_channel_get_target(g_channel));
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // send a ping on a channel
+      case 18: {
+        if (g_channel != NULL) {
+          grpc_channel_ping(g_channel, cq,
+                            create_validator(decrement, &pending_pings), NULL);
+        } else {
+          end(&inp);
+        }
+        break;
+      }
+      // enable a tracer
+      case 19: {
+        char *tracer = read_string(&inp);
+        grpc_tracer_set_enabled(tracer, 1);
+        gpr_free(tracer);
+        break;
+      }
+      // disable a tracer
+      case 20: {
+        char *tracer = read_string(&inp);
+        grpc_tracer_set_enabled(tracer, 0);
+        gpr_free(tracer);
+        break;
+      }
+      // create an alarm
+      case 21: {
+        gpr_timespec deadline =
+            gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+                         gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
+        grpc_alarm *alarm = grpc_alarm_create(cq, );
+      }
     }
   }
 
-- 
GitLab


From 9efec8eaad91fa4f5b056f910264b7a5ee9c20fe Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 14 Apr 2016 14:34:55 -0700
Subject: [PATCH 062/525] Add comments to the generated header file

---
 src/compiler/config.h            |  2 ++
 src/compiler/cpp_generator.cc    | 10 ++++++
 src/compiler/cpp_generator.h     | 13 ++++++--
 src/compiler/cpp_plugin.cc       | 53 ++++++++++++++++++++++++++++++++
 src/compiler/generator_helpers.h | 41 ++++++++++++++++++++++++
 5 files changed, 116 insertions(+), 3 deletions(-)

diff --git a/src/compiler/config.h b/src/compiler/config.h
index fea976c318..a826dd9744 100644
--- a/src/compiler/config.h
+++ b/src/compiler/config.h
@@ -44,6 +44,7 @@
 #define GRPC_CUSTOM_FILEDESCRIPTOR ::google::protobuf::FileDescriptor
 #define GRPC_CUSTOM_METHODDESCRIPTOR ::google::protobuf::MethodDescriptor
 #define GRPC_CUSTOM_SERVICEDESCRIPTOR ::google::protobuf::ServiceDescriptor
+#define GRPC_CUSTOM_SOURCELOCATION ::google::protobuf::SourceLocation
 #endif
 
 #ifndef GRPC_CUSTOM_CODEGENERATOR
@@ -74,6 +75,7 @@ typedef GRPC_CUSTOM_DESCRIPTOR Descriptor;
 typedef GRPC_CUSTOM_FILEDESCRIPTOR FileDescriptor;
 typedef GRPC_CUSTOM_METHODDESCRIPTOR MethodDescriptor;
 typedef GRPC_CUSTOM_SERVICEDESCRIPTOR ServiceDescriptor;
+typedef GRPC_CUSTOM_SOURCELOCATION SourceLocation;
 namespace compiler {
 typedef GRPC_CUSTOM_CODEGENERATOR CodeGenerator;
 typedef GRPC_CUSTOM_GENERATORCONTEXT GeneratorContext;
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index b133699306..97455cdbfd 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -101,6 +101,7 @@ grpc::string GetHeaderPrologue(File *file, const Parameters &params) {
     printer->Print(vars,
                   "// If you make any local change, they will be lost.\n");
     printer->Print(vars, "// source: $filename$\n");
+    printer->Print(file->GetLeadingComments().c_str());
     printer->Print(vars, "#ifndef GRPC_$filename_identifier$__INCLUDED\n");
     printer->Print(vars, "#define GRPC_$filename_identifier$__INCLUDED\n");
     printer->Print(vars, "\n");
@@ -455,6 +456,7 @@ void PrintHeaderServerMethodSync(Printer *printer, const Method *method,
   (*vars)["Method"] = method->name();
   (*vars)["Request"] = method->input_type_name();
   (*vars)["Response"] = method->output_type_name();
+  printer->Print(method->GetLeadingComments().c_str());
   if (method->NoStreaming()) {
     printer->Print(*vars,
                    "virtual ::grpc::Status $Method$("
@@ -479,6 +481,7 @@ void PrintHeaderServerMethodSync(Printer *printer, const Method *method,
         "::grpc::ServerReaderWriter< $Response$, $Request$>* stream);"
         "\n");
   }
+  printer->Print(method->GetTrailingComments().c_str());
 }
 
 void PrintHeaderServerMethodAsync(
@@ -673,6 +676,7 @@ void PrintHeaderService(Printer *printer,
                         std::map<grpc::string, grpc::string> *vars) {
   (*vars)["Service"] = service->name();
 
+  printer->Print(service->GetLeadingComments().c_str());
   printer->Print(*vars,
                  "class $Service$ GRPC_FINAL {\n"
                  " public:\n");
@@ -685,7 +689,9 @@ void PrintHeaderService(Printer *printer,
   printer->Indent();
   printer->Print("virtual ~StubInterface() {}\n");
   for (int i = 0; i < service->method_count(); ++i) {
+    printer->Print(service->method(i)->GetLeadingComments().c_str());
     PrintHeaderClientMethodInterfaces(printer, service->method(i).get(), vars, true);
+    printer->Print(service->method(i)->GetTrailingComments().c_str());
   }
   printer->Outdent();
   printer->Print("private:\n");
@@ -761,6 +767,7 @@ void PrintHeaderService(Printer *printer,
 
   printer->Outdent();
   printer->Print("};\n");
+  printer->Print(service->GetTrailingComments().c_str());
 }
 
 grpc::string GetHeaderServices(File *file,
@@ -817,6 +824,8 @@ grpc::string GetHeaderEpilogue(File *file,
 
     printer->Print(vars, "\n");
     printer->Print(vars, "#endif  // GRPC_$filename_identifier$__INCLUDED\n");
+
+    printer->Print(file->GetTrailingComments().c_str());
   }
   return output;
 }
@@ -836,6 +845,7 @@ grpc::string GetSourcePrologue(File *file,
     printer->Print(vars,
                   "// If you make any local change, they will be lost.\n");
     printer->Print(vars, "// source: $filename$\n\n");
+
     printer->Print(vars, "#include \"$filename_base$.pb.h\"\n");
     printer->Print(vars, "#include \"$filename_base$.grpc.pb.h\"\n");
     printer->Print(vars, "\n");
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index 99a60a2eae..1e68dfe3df 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -64,8 +64,15 @@ struct Parameters {
   grpc::string grpc_search_path;
 };
 
+// A common interface for objects having comments in the source.
+struct CommentHolder {
+  virtual ~CommentHolder() {}
+  virtual grpc::string GetLeadingComments() const = 0;
+  virtual grpc::string GetTrailingComments() const = 0;
+};
+
 // An abstract interface representing a method.
-struct Method {
+struct Method : public CommentHolder {
   virtual ~Method() {}
 
   virtual grpc::string name() const = 0;
@@ -80,7 +87,7 @@ struct Method {
 };
 
 // An abstract interface representing a service.
-struct Service {
+struct Service : public CommentHolder {
   virtual ~Service() {}
 
   virtual grpc::string name() const = 0;
@@ -101,7 +108,7 @@ struct Printer {
 
 // An interface that allows the source generated to be output using various
 // libraries/idls/serializers.
-struct File {
+struct File : public CommentHolder {
   virtual ~File() {}
 
   virtual grpc::string filename() const = 0;
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index f703c6453d..6128b816a4 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -35,11 +35,46 @@
 //
 
 #include <memory>
+#include <sstream>
 
 #include "src/compiler/config.h"
 
 #include "src/compiler/cpp_generator.h"
 #include "src/compiler/cpp_generator_helpers.h"
+#include "src/compiler/generator_helpers.h"
+
+grpc::string GenerateComments(const std::vector<grpc::string> &in) {
+  std::ostringstream oss;
+  for (const grpc::string &elem : in) {
+    if (elem.empty()) {
+      oss << "//\n";
+    } else if (elem[0] == ' ') {
+      oss << "//" << elem << "\n";
+    } else {
+      oss << "// " << elem << "\n";
+    }
+  }
+  return oss.str();
+}
+
+// Get leading or trailing comments in a string. Comment lines start with "// ".
+// Leading detached comments are put in in front of leading comments.
+template <typename DescriptorType>
+grpc::string GetComments(const DescriptorType *desc, bool leading) {
+  std::vector<grpc::string> out;
+  if (leading) {
+    grpc_generator::GetComment(
+        desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED, &out);
+    std::vector<grpc::string> leading;
+    grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
+                               &leading);
+    out.insert(out.end(), leading.begin(), leading.end());
+  } else {
+    grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
+                               &out);
+  }
+  return GenerateComments(out);
+}
 
 class ProtoBufMethod : public grpc_cpp_generator::Method {
  public:
@@ -71,6 +106,12 @@ class ProtoBufMethod : public grpc_cpp_generator::Method {
     return method_->client_streaming() && method_->server_streaming();
   }
 
+  grpc::string GetLeadingComments() const { return GetComments(method_, true); }
+
+  grpc::string GetTrailingComments() const {
+    return GetComments(method_, false);
+  }
+
  private:
   const grpc::protobuf::MethodDescriptor *method_;
 };
@@ -88,6 +129,14 @@ class ProtoBufService : public grpc_cpp_generator::Service {
           new ProtoBufMethod(service_->method(i)));
   };
 
+  grpc::string GetLeadingComments() const {
+    return GetComments(service_, true);
+  }
+
+  grpc::string GetTrailingComments() const {
+    return GetComments(service_, false);
+  }
+
  private:
   const grpc::protobuf::ServiceDescriptor *service_;
 };
@@ -136,6 +185,10 @@ class ProtoBufFile : public grpc_cpp_generator::File {
           new ProtoBufPrinter(str));
   }
 
+  grpc::string GetLeadingComments() const { return GetComments(file_, true); }
+
+  grpc::string GetTrailingComments() const { return GetComments(file_, false); }
+
  private:
   const grpc::protobuf::FileDescriptor *file_;
 };
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index e1bb66a875..7cfea9d96d 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -35,6 +35,9 @@
 #define GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
 
 #include <map>
+#include <sstream>
+#include <string>
+#include <vector>
 
 #include "src/compiler/config.h"
 
@@ -165,6 +168,44 @@ inline MethodType GetMethodType(const grpc::protobuf::MethodDescriptor *method)
   }
 }
 
+inline void Split(const grpc::string &s, char delim,
+                  std::vector<grpc::string> *append_to) {
+  std::istringstream iss(s);
+  grpc::string piece;
+  while (std::getline(iss, piece)) {
+    append_to->push_back(piece);
+  }
+}
+
+enum CommentType {
+  COMMENTTYPE_LEADING,
+  COMMENTTYPE_TRAILING,
+  COMMENTTYPE_LEADING_DETACHED
+};
+
+// Get all the comments and append each line to out.
+template <typename DescriptorType>
+inline void GetComment(const DescriptorType *desc, CommentType type,
+                       std::vector<grpc::string> *out) {
+  grpc::protobuf::SourceLocation location;
+  if (!desc->GetSourceLocation(&location)) {
+    return;
+  }
+  if (type == COMMENTTYPE_LEADING || type == COMMENTTYPE_TRAILING) {
+    const grpc::string &comments = type == COMMENTTYPE_LEADING
+                                       ? location.leading_comments
+                                       : location.trailing_comments;
+    Split(comments, '\n', out);
+  } else if (type == COMMENTTYPE_LEADING_DETACHED) {
+    for (int i = 0; i < location.leading_detached_comments.size(); i++) {
+      Split(location.leading_detached_comments[i], '\n', out);
+      out->push_back("");
+    }
+  } else {
+    abort();
+  }
+}
+
 }  // namespace grpc_generator
 
 #endif  // GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
-- 
GitLab


From b8aa58b2cd32339b77fa2d2a7f38629a02d9c5e1 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 14 Apr 2016 15:50:50 -0700
Subject: [PATCH 063/525] Add a test

---
 Makefile                                      |  66 +++++
 build.yaml                                    |  11 +
 src/proto/grpc/testing/compiler_test.proto    |  74 +++++
 test/cpp/codegen/compiler_test_golden         | 260 ++++++++++++++++++
 test/cpp/codegen/golden_file_test.cc          |  64 +++++
 tools/run_tests/sources_and_headers.json      |  18 ++
 tools/run_tests/tests.json                    |  21 ++
 .../golden_file_test/golden_file_test.vcxproj | 206 ++++++++++++++
 .../golden_file_test.vcxproj.filters          |  36 +++
 9 files changed, 756 insertions(+)
 create mode 100644 src/proto/grpc/testing/compiler_test.proto
 create mode 100644 test/cpp/codegen/compiler_test_golden
 create mode 100644 test/cpp/codegen/golden_file_test.cc
 create mode 100644 vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj
 create mode 100644 vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters

diff --git a/Makefile b/Makefile
index 690b92fa4b..842251167b 100644
--- a/Makefile
+++ b/Makefile
@@ -1009,6 +1009,7 @@ cxx_time_test: $(BINDIR)/$(CONFIG)/cxx_time_test
 end2end_test: $(BINDIR)/$(CONFIG)/end2end_test
 generic_async_streaming_ping_pong_test: $(BINDIR)/$(CONFIG)/generic_async_streaming_ping_pong_test
 generic_end2end_test: $(BINDIR)/$(CONFIG)/generic_end2end_test
+golden_file_test: $(BINDIR)/$(CONFIG)/golden_file_test
 grpc_cli: $(BINDIR)/$(CONFIG)/grpc_cli
 grpc_cpp_plugin: $(BINDIR)/$(CONFIG)/grpc_cpp_plugin
 grpc_csharp_plugin: $(BINDIR)/$(CONFIG)/grpc_csharp_plugin
@@ -1375,6 +1376,7 @@ buildtests_cxx: buildtests_zookeeper privatelibs_cxx \
   $(BINDIR)/$(CONFIG)/end2end_test \
   $(BINDIR)/$(CONFIG)/generic_async_streaming_ping_pong_test \
   $(BINDIR)/$(CONFIG)/generic_end2end_test \
+  $(BINDIR)/$(CONFIG)/golden_file_test \
   $(BINDIR)/$(CONFIG)/grpc_cli \
   $(BINDIR)/$(CONFIG)/grpclb_api_test \
   $(BINDIR)/$(CONFIG)/hybrid_end2end_test \
@@ -1705,6 +1707,8 @@ test_cxx: test_zookeeper buildtests_cxx
 	$(Q) $(BINDIR)/$(CONFIG)/generic_async_streaming_ping_pong_test || ( echo test generic_async_streaming_ping_pong_test failed ; exit 1 )
 	$(E) "[RUN]     Testing generic_end2end_test"
 	$(Q) $(BINDIR)/$(CONFIG)/generic_end2end_test || ( echo test generic_end2end_test failed ; exit 1 )
+	$(E) "[RUN]     Testing golden_file_test"
+	$(Q) $(BINDIR)/$(CONFIG)/golden_file_test || ( echo test golden_file_test failed ; exit 1 )
 	$(E) "[RUN]     Testing grpclb_api_test"
 	$(Q) $(BINDIR)/$(CONFIG)/grpclb_api_test || ( echo test grpclb_api_test failed ; exit 1 )
 	$(E) "[RUN]     Testing hybrid_end2end_test"
@@ -1873,6 +1877,21 @@ $(GENDIR)/src/proto/grpc/lb/v0/load_balancer.grpc.pb.cc: src/proto/grpc/lb/v0/lo
 	$(Q) $(PROTOC) --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(BINDIR)/$(CONFIG)/grpc_cpp_plugin $<
 endif
 
+ifeq ($(NO_PROTOC),true)
+$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: protoc_dep_error
+$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: protoc_dep_error
+else
+$(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+	$(E) "[PROTOC]  Generating protobuf CC file from $<"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(PROTOC) --cpp_out=$(GENDIR) $<
+
+$(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc: src/proto/grpc/testing/compiler_test.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(PROTOC) --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(BINDIR)/$(CONFIG)/grpc_cpp_plugin $<
+endif
+
 ifeq ($(NO_PROTOC),true)
 $(GENDIR)/src/proto/grpc/testing/control.pb.cc: protoc_dep_error
 $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc: protoc_dep_error
@@ -10376,6 +10395,53 @@ endif
 endif
 
 
+GOLDEN_FILE_TEST_SRC = \
+    $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc \
+    test/cpp/codegen/golden_file_test.cc \
+
+GOLDEN_FILE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GOLDEN_FILE_TEST_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/golden_file_test: openssl_dep_error
+
+else
+
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/golden_file_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/golden_file_test: $(PROTOBUF_DEP) $(GOLDEN_FILE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LDXX) $(LDFLAGS) $(GOLDEN_FILE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/golden_file_test
+
+endif
+
+endif
+
+$(OBJDIR)/$(CONFIG)/src/proto/grpc/testing/compiler_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+$(OBJDIR)/$(CONFIG)/test/cpp/codegen/golden_file_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_golden_file_test: $(GOLDEN_FILE_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(GOLDEN_FILE_TEST_OBJS:.o=.dep)
+endif
+endif
+$(OBJDIR)/$(CONFIG)/test/cpp/codegen/golden_file_test.o: $(GENDIR)/src/proto/grpc/testing/compiler_test.pb.cc $(GENDIR)/src/proto/grpc/testing/compiler_test.grpc.pb.cc
+
+
 GRPC_CLI_SRC = \
     test/cpp/util/grpc_cli.cc \
 
diff --git a/build.yaml b/build.yaml
index e274b0335f..7c16cb5732 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2516,6 +2516,17 @@ targets:
   - grpc
   - gpr_test_util
   - gpr
+- name: golden_file_test
+  gtest: true
+  build: test
+  language: c++
+  src:
+  - src/proto/grpc/testing/compiler_test.proto
+  - test/cpp/codegen/golden_file_test.cc
+  deps:
+  - grpc++
+  - grpc
+  - gpr
 - name: grpc_cli
   build: test
   run: false
diff --git a/src/proto/grpc/testing/compiler_test.proto b/src/proto/grpc/testing/compiler_test.proto
new file mode 100644
index 0000000000..19003e702a
--- /dev/null
+++ b/src/proto/grpc/testing/compiler_test.proto
@@ -0,0 +1,74 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// File detached comment 1
+
+// File detached comment 2
+
+// File leading comment 1
+syntax = "proto3";
+
+// File leading comment 2
+package grpc.testing;
+
+message Request {
+}
+message Response {
+}
+
+// ServiceA detached comment 1
+
+// ServiceA detached comment 2
+
+// ServiceA leading comment 1
+service ServiceA {
+  // MethodA1 detached comment 1
+
+  // MethodA1 leading comment 1
+  rpc MethodA1(Request) returns (Response);  // MethodA1 trailing comment 1
+
+  // MethodA2 detached leading comment 1
+
+  // Method A2 leading comment 1
+  // Method A2 leading comment 2
+  rpc MethodA2(stream Request) returns (Response);
+  // MethodA2 trailing comment 1
+}
+
+// ServiceB leading comment 1
+service ServiceB {
+  // ServiceB trailing comment 1
+
+  // MethodB1 leading comment 1
+  rpc MethodB1(Request) returns (Response);
+  // MethodB1 trailing comment 1
+}
+// ServiceB trailing comment 2
+
+// File trailing comment
diff --git a/test/cpp/codegen/compiler_test_golden b/test/cpp/codegen/compiler_test_golden
new file mode 100644
index 0000000000..00205fe8b9
--- /dev/null
+++ b/test/cpp/codegen/compiler_test_golden
@@ -0,0 +1,260 @@
+// Generated by the gRPC protobuf plugin.
+// If you make any local change, they will be lost.
+// source: src/proto/grpc/testing/compiler_test.proto
+#ifndef GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
+#define GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
+
+#include "src/proto/grpc/testing/compiler_test.pb.h"
+
+#include <grpc++/impl/codegen/async_stream.h>
+#include <grpc++/impl/codegen/async_unary_call.h>
+#include <grpc++/impl/codegen/proto_utils.h>
+#include <grpc++/impl/codegen/rpc_method.h>
+#include <grpc++/impl/codegen/service_type.h>
+#include <grpc++/impl/codegen/status.h>
+#include <grpc++/impl/codegen/stub_options.h>
+#include <grpc++/impl/codegen/sync_stream.h>
+
+namespace grpc {
+class CompletionQueue;
+class Channel;
+class RpcService;
+class ServerCompletionQueue;
+class ServerContext;
+}  // namespace grpc
+
+namespace grpc {
+namespace testing {
+
+// ServiceA detached comment 1
+//
+// ServiceA detached comment 2
+//
+// ServiceA leading comment 1
+class ServiceA GRPC_FINAL {
+ public:
+  class StubInterface {
+   public:
+    virtual ~StubInterface() {}
+    // MethodA1 leading comment 1
+    virtual ::grpc::Status MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> AsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(AsyncMethodA1Raw(context, request, cq));
+    }
+    // MethodA1 trailing comment 1
+    // MethodA2 detached leading comment 1
+    //
+    // Method A2 leading comment 1
+    // Method A2 leading comment 2
+    std::unique_ptr< ::grpc::ClientWriterInterface< ::grpc::testing::Request>> MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response) {
+      return std::unique_ptr< ::grpc::ClientWriterInterface< ::grpc::testing::Request>>(MethodA2Raw(context, response));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>> AsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) {
+      return std::unique_ptr< ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>>(AsyncMethodA2Raw(context, response, cq, tag));
+    }
+    // MethodA2 trailing comment 1
+  private:
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientWriterInterface< ::grpc::testing::Request>* MethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response) = 0;
+    virtual ::grpc::ClientAsyncWriterInterface< ::grpc::testing::Request>* AsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) = 0;
+  };
+  class Stub GRPC_FINAL : public StubInterface {
+   public:
+    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
+    ::grpc::Status MethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) GRPC_OVERRIDE;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> AsyncMethodA1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(AsyncMethodA1Raw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientWriter< ::grpc::testing::Request>> MethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response) {
+      return std::unique_ptr< ::grpc::ClientWriter< ::grpc::testing::Request>>(MethodA2Raw(context, response));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>> AsyncMethodA2(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) {
+      return std::unique_ptr< ::grpc::ClientAsyncWriter< ::grpc::testing::Request>>(AsyncMethodA2Raw(context, response, cq, tag));
+    }
+
+   private:
+    std::shared_ptr< ::grpc::ChannelInterface> channel_;
+    ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* AsyncMethodA1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) GRPC_OVERRIDE;
+    ::grpc::ClientWriter< ::grpc::testing::Request>* MethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response) GRPC_OVERRIDE;
+    ::grpc::ClientAsyncWriter< ::grpc::testing::Request>* AsyncMethodA2Raw(::grpc::ClientContext* context, ::grpc::testing::Response* response, ::grpc::CompletionQueue* cq, void* tag) GRPC_OVERRIDE;
+    const ::grpc::RpcMethod rpcmethod_MethodA1_;
+    const ::grpc::RpcMethod rpcmethod_MethodA2_;
+  };
+  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
+
+  class Service : public ::grpc::Service {
+   public:
+    Service();
+    virtual ~Service();
+    // MethodA1 leading comment 1
+    virtual ::grpc::Status MethodA1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response);
+    // MethodA1 trailing comment 1
+    // MethodA2 detached leading comment 1
+    //
+    // Method A2 leading comment 1
+    // Method A2 leading comment 2
+    virtual ::grpc::Status MethodA2(::grpc::ServerContext* context, ::grpc::ServerReader< ::grpc::testing::Request>* reader, ::grpc::testing::Response* response);
+    // MethodA2 trailing comment 1
+  };
+  template <class BaseClass>
+  class WithAsyncMethod_MethodA1 : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithAsyncMethod_MethodA1() {
+      ::grpc::Service::MarkMethodAsync(0);
+    }
+    ~WithAsyncMethod_MethodA1() GRPC_OVERRIDE {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status MethodA1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestMethodA1(::grpc::ServerContext* context, ::grpc::testing::Request* request, ::grpc::ServerAsyncResponseWriter< ::grpc::testing::Response>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  template <class BaseClass>
+  class WithAsyncMethod_MethodA2 : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithAsyncMethod_MethodA2() {
+      ::grpc::Service::MarkMethodAsync(1);
+    }
+    ~WithAsyncMethod_MethodA2() GRPC_OVERRIDE {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status MethodA2(::grpc::ServerContext* context, ::grpc::ServerReader< ::grpc::testing::Request>* reader, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestMethodA2(::grpc::ServerContext* context, ::grpc::ServerAsyncReader< ::grpc::testing::Response, ::grpc::testing::Request>* reader, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncClientStreaming(1, context, reader, new_call_cq, notification_cq, tag);
+    }
+  };
+  typedef WithAsyncMethod_MethodA1<WithAsyncMethod_MethodA2<Service > > AsyncService;
+  template <class BaseClass>
+  class WithGenericMethod_MethodA1 : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithGenericMethod_MethodA1() {
+      ::grpc::Service::MarkMethodGeneric(0);
+    }
+    ~WithGenericMethod_MethodA1() GRPC_OVERRIDE {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status MethodA1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+  template <class BaseClass>
+  class WithGenericMethod_MethodA2 : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithGenericMethod_MethodA2() {
+      ::grpc::Service::MarkMethodGeneric(1);
+    }
+    ~WithGenericMethod_MethodA2() GRPC_OVERRIDE {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status MethodA2(::grpc::ServerContext* context, ::grpc::ServerReader< ::grpc::testing::Request>* reader, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+};
+// MethodA1 detached comment 1
+
+// ServiceB leading comment 1
+class ServiceB GRPC_FINAL {
+ public:
+  class StubInterface {
+   public:
+    virtual ~StubInterface() {}
+    // MethodB1 leading comment 1
+    virtual ::grpc::Status MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>> AsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>>(AsyncMethodB1Raw(context, request, cq));
+    }
+    // MethodB1 trailing comment 1
+  private:
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::grpc::testing::Response>* AsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) = 0;
+  };
+  class Stub GRPC_FINAL : public StubInterface {
+   public:
+    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
+    ::grpc::Status MethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::testing::Response* response) GRPC_OVERRIDE;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>> AsyncMethodB1(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>>(AsyncMethodB1Raw(context, request, cq));
+    }
+
+   private:
+    std::shared_ptr< ::grpc::ChannelInterface> channel_;
+    ::grpc::ClientAsyncResponseReader< ::grpc::testing::Response>* AsyncMethodB1Raw(::grpc::ClientContext* context, const ::grpc::testing::Request& request, ::grpc::CompletionQueue* cq) GRPC_OVERRIDE;
+    const ::grpc::RpcMethod rpcmethod_MethodB1_;
+  };
+  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
+
+  class Service : public ::grpc::Service {
+   public:
+    Service();
+    virtual ~Service();
+    // MethodB1 leading comment 1
+    virtual ::grpc::Status MethodB1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response);
+    // MethodB1 trailing comment 1
+  };
+  template <class BaseClass>
+  class WithAsyncMethod_MethodB1 : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithAsyncMethod_MethodB1() {
+      ::grpc::Service::MarkMethodAsync(0);
+    }
+    ~WithAsyncMethod_MethodB1() GRPC_OVERRIDE {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status MethodB1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestMethodB1(::grpc::ServerContext* context, ::grpc::testing::Request* request, ::grpc::ServerAsyncResponseWriter< ::grpc::testing::Response>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  typedef WithAsyncMethod_MethodB1<Service > AsyncService;
+  template <class BaseClass>
+  class WithGenericMethod_MethodB1 : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithGenericMethod_MethodB1() {
+      ::grpc::Service::MarkMethodGeneric(0);
+    }
+    ~WithGenericMethod_MethodB1() GRPC_OVERRIDE {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status MethodB1(::grpc::ServerContext* context, const ::grpc::testing::Request* request, ::grpc::testing::Response* response) GRPC_FINAL GRPC_OVERRIDE {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+};
+// ServiceB trailing comment 1
+
+}  // namespace testing
+}  // namespace grpc
+
+
+#endif  // GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
diff --git a/test/cpp/codegen/golden_file_test.cc b/test/cpp/codegen/golden_file_test.cc
new file mode 100644
index 0000000000..ec08d08de6
--- /dev/null
+++ b/test/cpp/codegen/golden_file_test.cc
@@ -0,0 +1,64 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <fstream>
+#include <sstream>
+
+#include <gtest/gtest.h>
+
+// These paths rely on the fact that we run our tests under grpc/
+const char kGeneratedFilePath[] =
+    "gens/src/proto/grpc/testing/compiler_test.grpc.pb.h";
+const char kGoldenFilePath[] = "test/cpp/codegen/compiler_test_golden";
+
+TEST(GoldenFileTest, TestGeneratedFile) {
+  std::ifstream generated(kGeneratedFilePath);
+  std::ifstream golden(kGoldenFilePath);
+
+  ASSERT_TRUE(generated.good());
+  ASSERT_TRUE(golden.good());
+
+  std::ostringstream gen_oss;
+  std::ostringstream gold_oss;
+  gen_oss << generated.rdbuf();
+  gold_oss << golden.rdbuf();
+  EXPECT_EQ(gold_oss.str(), gen_oss.str());
+
+  generated.close();
+  golden.close();
+}
+
+int main(int argc, char **argv) {
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index ca409e3c05..5e3dee70b8 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -2109,6 +2109,24 @@
     "third_party": false, 
     "type": "target"
   }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc", 
+      "grpc++"
+    ], 
+    "headers": [
+      "src/proto/grpc/testing/compiler_test.grpc.pb.h", 
+      "src/proto/grpc/testing/compiler_test.pb.h"
+    ], 
+    "language": "c++", 
+    "name": "golden_file_test", 
+    "src": [
+      "test/cpp/codegen/golden_file_test.cc"
+    ], 
+    "third_party": false, 
+    "type": "target"
+  }, 
   {
     "deps": [
       "gpr", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index f8c658672b..ddc996e491 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -2267,6 +2267,27 @@
       "windows"
     ]
   }, 
+  {
+    "args": [], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "gtest": true, 
+    "language": "c++", 
+    "name": "golden_file_test", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ]
+  }, 
   {
     "args": [], 
     "ci_platforms": [
diff --git a/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj
new file mode 100644
index 0000000000..e9802773d8
--- /dev/null
+++ b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{0ECDE365-D634-4E15-099F-40A38E151C65}</ProjectGuid>
+    <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+    <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+    <PlatformToolset>v100</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(SolutionDir)\..\vsprojects\cpptest.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\openssl.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\protobuf.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\zlib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <TargetName>golden_file_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <TargetName>golden_file_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Release</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Release</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.pb.cc">
+    </ClCompile>
+    <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.pb.h">
+    </ClInclude>
+    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.grpc.pb.cc">
+    </ClCompile>
+    <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.grpc.pb.h">
+    </ClInclude>
+    <ClCompile Include="$(SolutionDir)\..\test\cpp\codegen\golden_file_test.cc">
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  </ImportGroup>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
+  </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters
new file mode 100644
index 0000000000..c329e4da5c
--- /dev/null
+++ b/vsprojects/vcxproj/test/golden_file_test/golden_file_test.vcxproj.filters
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\testing\compiler_test.proto">
+      <Filter>src\proto\grpc\testing</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\test\cpp\codegen\golden_file_test.cc">
+      <Filter>test\cpp\codegen</Filter>
+    </ClCompile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Filter Include="src">
+      <UniqueIdentifier>{cd916cf8-bce0-7051-b6d4-e1cd0bf3894c}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\proto">
+      <UniqueIdentifier>{a2d414fe-b561-a38e-58a9-40d8bc68a107}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\proto\grpc">
+      <UniqueIdentifier>{edbc155a-ceb8-62b4-2b73-37228e5fa736}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\proto\grpc\testing">
+      <UniqueIdentifier>{761a3503-8934-4ee6-8bf1-77ba1385baa7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test">
+      <UniqueIdentifier>{4f08cfc5-a59d-7cb4-9ef5-a603b2025936}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\cpp">
+      <UniqueIdentifier>{af281cac-e23b-109b-8e63-c7cff85c81f4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\cpp\codegen">
+      <UniqueIdentifier>{e105f656-566f-3d70-fbe5-e03fee8e612d}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
+
-- 
GitLab


From b01e013e9fb2cb21ee81248f160ec40df1bc763d Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 14 Apr 2016 16:41:09 -0700
Subject: [PATCH 064/525] fix compiler warning

---
 src/compiler/generator_helpers.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index 7cfea9d96d..16f0ca32df 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -197,7 +197,8 @@ inline void GetComment(const DescriptorType *desc, CommentType type,
                                        : location.trailing_comments;
     Split(comments, '\n', out);
   } else if (type == COMMENTTYPE_LEADING_DETACHED) {
-    for (int i = 0; i < location.leading_detached_comments.size(); i++) {
+    for (unsigned int i = 0; i < location.leading_detached_comments.size();
+         i++) {
       Split(location.leading_detached_comments[i], '\n', out);
       out->push_back("");
     }
-- 
GitLab


From 8282b755a217031a60329fb4ed2f54cd46966628 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 14 Apr 2016 17:13:24 -0700
Subject: [PATCH 065/525] Clarify the comments

---
 src/proto/grpc/testing/compiler_test.proto | 8 ++++----
 test/cpp/codegen/compiler_test_golden      | 1 -
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/proto/grpc/testing/compiler_test.proto b/src/proto/grpc/testing/compiler_test.proto
index 19003e702a..22674974ed 100644
--- a/src/proto/grpc/testing/compiler_test.proto
+++ b/src/proto/grpc/testing/compiler_test.proto
@@ -31,10 +31,12 @@
 
 // File detached comment 2
 
-// File leading comment 1
+// Syntax leading comment 1
 syntax = "proto3";
 
-// File leading comment 2
+// File detached comment 3
+
+// Package leading comment 1
 package grpc.testing;
 
 message Request {
@@ -48,8 +50,6 @@ message Response {
 
 // ServiceA leading comment 1
 service ServiceA {
-  // MethodA1 detached comment 1
-
   // MethodA1 leading comment 1
   rpc MethodA1(Request) returns (Response);  // MethodA1 trailing comment 1
 
diff --git a/test/cpp/codegen/compiler_test_golden b/test/cpp/codegen/compiler_test_golden
index 00205fe8b9..9a2303902b 100644
--- a/test/cpp/codegen/compiler_test_golden
+++ b/test/cpp/codegen/compiler_test_golden
@@ -172,7 +172,6 @@ class ServiceA GRPC_FINAL {
     }
   };
 };
-// MethodA1 detached comment 1
 
 // ServiceB leading comment 1
 class ServiceB GRPC_FINAL {
-- 
GitLab


From c4b18a50de3ab04b189c9f0e2b56cb08a9f15542 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 15 Apr 2016 04:53:54 +0200
Subject: [PATCH 066/525] Adding support for msys.

---
 BUILD                                       |  4 +
 Makefile                                    |  2 +
 binding.gyp                                 |  2 +
 build.yaml                                  |  2 +
 config.m4                                   |  2 +
 gRPC.podspec                                |  2 +
 grpc.gemspec                                |  2 +
 include/grpc/impl/codegen/port_platform.h   | 44 +++++-----
 package.xml                                 |  2 +
 src/core/lib/iomgr/tcp_server_windows.c     | 27 ++----
 src/core/lib/iomgr/tcp_windows.c            | 14 +++-
 src/core/lib/support/env_win32.c            | 44 +++++-----
 src/core/lib/support/log_linux.c            |  4 +-
 src/core/lib/support/log_win32.c            | 18 +---
 src/core/lib/support/string_util_win32.c    | 91 +++++++++++++++++++++
 src/core/lib/support/string_win32.c         | 41 +++-------
 src/core/lib/support/time_win32.c           |  4 +-
 src/core/lib/support/tmpfile_msys.c         | 75 +++++++++++++++++
 src/core/lib/support/tmpfile_posix.c        |  4 +-
 src/core/lib/support/tmpfile_win32.c        |  4 +-
 src/python/grpcio/grpc_core_dependencies.py |  2 +
 test/core/util/port_windows.c               |  9 +-
 test/core/util/test_config.c                |  2 +-
 tools/doxygen/Doxyfile.core.internal        |  2 +
 tools/run_tests/sources_and_headers.json    |  2 +
 vsprojects/vcxproj/gpr/gpr.vcxproj          |  4 +
 vsprojects/vcxproj/gpr/gpr.vcxproj.filters  |  6 ++
 27 files changed, 296 insertions(+), 119 deletions(-)
 create mode 100644 src/core/lib/support/string_util_win32.c
 create mode 100644 src/core/lib/support/tmpfile_msys.c

diff --git a/BUILD b/BUILD
index fa9a120989..237322a5e1 100644
--- a/BUILD
+++ b/BUILD
@@ -84,6 +84,7 @@ cc_library(
     "src/core/lib/support/stack_lockfree.c",
     "src/core/lib/support/string.c",
     "src/core/lib/support/string_posix.c",
+    "src/core/lib/support/string_util_win32.c",
     "src/core/lib/support/string_win32.c",
     "src/core/lib/support/subprocess_posix.c",
     "src/core/lib/support/subprocess_windows.c",
@@ -98,6 +99,7 @@ cc_library(
     "src/core/lib/support/time_precise.c",
     "src/core/lib/support/time_win32.c",
     "src/core/lib/support/tls_pthread.c",
+    "src/core/lib/support/tmpfile_msys.c",
     "src/core/lib/support/tmpfile_posix.c",
     "src/core/lib/support/tmpfile_win32.c",
     "src/core/lib/support/wrap_memcpy.c",
@@ -1211,6 +1213,7 @@ objc_library(
     "src/core/lib/support/stack_lockfree.c",
     "src/core/lib/support/string.c",
     "src/core/lib/support/string_posix.c",
+    "src/core/lib/support/string_util_win32.c",
     "src/core/lib/support/string_win32.c",
     "src/core/lib/support/subprocess_posix.c",
     "src/core/lib/support/subprocess_windows.c",
@@ -1225,6 +1228,7 @@ objc_library(
     "src/core/lib/support/time_precise.c",
     "src/core/lib/support/time_win32.c",
     "src/core/lib/support/tls_pthread.c",
+    "src/core/lib/support/tmpfile_msys.c",
     "src/core/lib/support/tmpfile_posix.c",
     "src/core/lib/support/tmpfile_win32.c",
     "src/core/lib/support/wrap_memcpy.c",
diff --git a/Makefile b/Makefile
index 488d6f4dce..fdc523907d 100644
--- a/Makefile
+++ b/Makefile
@@ -2322,6 +2322,7 @@ LIBGPR_SRC = \
     src/core/lib/support/stack_lockfree.c \
     src/core/lib/support/string.c \
     src/core/lib/support/string_posix.c \
+    src/core/lib/support/string_util_win32.c \
     src/core/lib/support/string_win32.c \
     src/core/lib/support/subprocess_posix.c \
     src/core/lib/support/subprocess_windows.c \
@@ -2336,6 +2337,7 @@ LIBGPR_SRC = \
     src/core/lib/support/time_precise.c \
     src/core/lib/support/time_win32.c \
     src/core/lib/support/tls_pthread.c \
+    src/core/lib/support/tmpfile_msys.c \
     src/core/lib/support/tmpfile_posix.c \
     src/core/lib/support/tmpfile_win32.c \
     src/core/lib/support/wrap_memcpy.c \
diff --git a/binding.gyp b/binding.gyp
index 8efc8a2b8e..492b75f8fd 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -519,6 +519,7 @@
         'src/core/lib/support/stack_lockfree.c',
         'src/core/lib/support/string.c',
         'src/core/lib/support/string_posix.c',
+        'src/core/lib/support/string_util_win32.c',
         'src/core/lib/support/string_win32.c',
         'src/core/lib/support/subprocess_posix.c',
         'src/core/lib/support/subprocess_windows.c',
@@ -533,6 +534,7 @@
         'src/core/lib/support/time_precise.c',
         'src/core/lib/support/time_win32.c',
         'src/core/lib/support/tls_pthread.c',
+        'src/core/lib/support/tmpfile_msys.c',
         'src/core/lib/support/tmpfile_posix.c',
         'src/core/lib/support/tmpfile_win32.c',
         'src/core/lib/support/wrap_memcpy.c',
diff --git a/build.yaml b/build.yaml
index a6feea5074..4a0663452d 100644
--- a/build.yaml
+++ b/build.yaml
@@ -103,6 +103,7 @@ filegroups:
   - src/core/lib/support/stack_lockfree.c
   - src/core/lib/support/string.c
   - src/core/lib/support/string_posix.c
+  - src/core/lib/support/string_util_win32.c
   - src/core/lib/support/string_win32.c
   - src/core/lib/support/subprocess_posix.c
   - src/core/lib/support/subprocess_windows.c
@@ -117,6 +118,7 @@ filegroups:
   - src/core/lib/support/time_precise.c
   - src/core/lib/support/time_win32.c
   - src/core/lib/support/tls_pthread.c
+  - src/core/lib/support/tmpfile_msys.c
   - src/core/lib/support/tmpfile_posix.c
   - src/core/lib/support/tmpfile_win32.c
   - src/core/lib/support/wrap_memcpy.c
diff --git a/config.m4 b/config.m4
index 7d3d899a40..acd798741f 100644
--- a/config.m4
+++ b/config.m4
@@ -63,6 +63,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/lib/support/stack_lockfree.c \
     src/core/lib/support/string.c \
     src/core/lib/support/string_posix.c \
+    src/core/lib/support/string_util_win32.c \
     src/core/lib/support/string_win32.c \
     src/core/lib/support/subprocess_posix.c \
     src/core/lib/support/subprocess_windows.c \
@@ -77,6 +78,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/lib/support/time_precise.c \
     src/core/lib/support/time_win32.c \
     src/core/lib/support/tls_pthread.c \
+    src/core/lib/support/tmpfile_msys.c \
     src/core/lib/support/tmpfile_posix.c \
     src/core/lib/support/tmpfile_win32.c \
     src/core/lib/support/wrap_memcpy.c \
diff --git a/gRPC.podspec b/gRPC.podspec
index 82c5eaac41..b3122dd272 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -144,6 +144,7 @@ Pod::Spec.new do |s|
                       'src/core/lib/support/stack_lockfree.c',
                       'src/core/lib/support/string.c',
                       'src/core/lib/support/string_posix.c',
+                      'src/core/lib/support/string_util_win32.c',
                       'src/core/lib/support/string_win32.c',
                       'src/core/lib/support/subprocess_posix.c',
                       'src/core/lib/support/subprocess_windows.c',
@@ -158,6 +159,7 @@ Pod::Spec.new do |s|
                       'src/core/lib/support/time_precise.c',
                       'src/core/lib/support/time_win32.c',
                       'src/core/lib/support/tls_pthread.c',
+                      'src/core/lib/support/tmpfile_msys.c',
                       'src/core/lib/support/tmpfile_posix.c',
                       'src/core/lib/support/tmpfile_win32.c',
                       'src/core/lib/support/wrap_memcpy.c',
diff --git a/grpc.gemspec b/grpc.gemspec
index b8cfc4e6c4..3e0677ebdc 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -128,6 +128,7 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/lib/support/stack_lockfree.c )
   s.files += %w( src/core/lib/support/string.c )
   s.files += %w( src/core/lib/support/string_posix.c )
+  s.files += %w( src/core/lib/support/string_util_win32.c )
   s.files += %w( src/core/lib/support/string_win32.c )
   s.files += %w( src/core/lib/support/subprocess_posix.c )
   s.files += %w( src/core/lib/support/subprocess_windows.c )
@@ -142,6 +143,7 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/lib/support/time_precise.c )
   s.files += %w( src/core/lib/support/time_win32.c )
   s.files += %w( src/core/lib/support/tls_pthread.c )
+  s.files += %w( src/core/lib/support/tmpfile_msys.c )
   s.files += %w( src/core/lib/support/tmpfile_posix.c )
   s.files += %w( src/core/lib/support/tmpfile_win32.c )
   s.files += %w( src/core/lib/support/wrap_memcpy.c )
diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h
index 3242f07599..bbcb4098e3 100644
--- a/include/grpc/impl/codegen/port_platform.h
+++ b/include/grpc/impl/codegen/port_platform.h
@@ -82,28 +82,31 @@
    things.  */
 
 #if !defined(GPR_NO_AUTODETECT_PLATFORM)
+#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
 #if defined(_WIN64) || defined(WIN64)
-#define GPR_PLATFORM_STRING "windows"
-#define GPR_WIN32 1
 #define GPR_ARCH_64 1
-#define GPR_GETPID_IN_PROCESS_H 1
-#define GPR_WINSOCK_SOCKET 1
-#define GPR_WINDOWS_SUBPROCESS 1
-#ifdef __GNUC__
-#define GPR_GCC_ATOMIC 1
-#define GPR_GCC_TLS 1
 #else
-#define GPR_WIN32_ATOMIC 1
-#define GPR_MSVC_TLS 1
+#define GPR_ARCH_32 1
 #endif
-#define GPR_WINDOWS_CRASH_HANDLER 1
-#elif defined(_WIN32) || defined(WIN32)
 #define GPR_PLATFORM_STRING "windows"
-#define GPR_ARCH_32 1
 #define GPR_WIN32 1
-#define GPR_GETPID_IN_PROCESS_H 1
 #define GPR_WINSOCK_SOCKET 1
 #define GPR_WINDOWS_SUBPROCESS 1
+#define GPR_WIN32_ENV
+#ifdef __MSYS__
+#define GPR_GETPID_IN_UNISTD_H 1
+#define GPR_MSYS_TMPFILE
+#define GPR_POSIX_LOG
+#define GPR_POSIX_STRING
+#define GPR_POSIX_TIME
+#else
+#define GPR_GETPID_IN_PROCESS_H 1
+#define GPR_WIN32_TMPFILE
+#define GPR_WIN32_LOG
+#define GPR_WINDOWS_CRASH_HANDLER 1
+#define GPR_WIN32_STRING
+#define GPR_WIN32_TIME
+#endif
 #ifdef __GNUC__
 #define GPR_GCC_ATOMIC 1
 #define GPR_GCC_TLS 1
@@ -111,7 +114,6 @@
 #define GPR_WIN32_ATOMIC 1
 #define GPR_MSVC_TLS 1
 #endif
-#define GPR_WINDOWS_CRASH_HANDLER 1
 #elif defined(ANDROID) || defined(__ANDROID__)
 #define GPR_PLATFORM_STRING "android"
 #define GPR_ANDROID 1
@@ -126,7 +128,8 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
-#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_LOG
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
 #define GPR_POSIX_SYNC 1
@@ -153,6 +156,7 @@
 #define GPR_GCC_ATOMIC 1
 #define GPR_GCC_TLS 1
 #define GPR_LINUX 1
+#define GPR_LINUX_LOG
 #define GPR_LINUX_MULTIPOLL_WITH_EPOLL 1
 #define GPR_POSIX_WAKEUP_FD 1
 #define GPR_POSIX_SOCKET 1
@@ -175,7 +179,7 @@
 #ifndef GPR_LINUX_SOCKETUTILS
 #define GPR_POSIX_SOCKETUTILS
 #endif
-#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
 #define GPR_POSIX_SYNC 1
@@ -213,7 +217,7 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
-#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
 #define GPR_POSIX_SYNC 1
@@ -243,7 +247,7 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
-#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
 #define GPR_POSIX_SYNC 1
@@ -280,7 +284,7 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
-#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
 #define GPR_POSIX_SYNC 1
diff --git a/package.xml b/package.xml
index 2f4c625539..b21e974c8e 100644
--- a/package.xml
+++ b/package.xml
@@ -131,6 +131,7 @@
     <file baseinstalldir="/" name="src/core/lib/support/stack_lockfree.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/string.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/string_posix.c" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/string_util_win32.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/string_win32.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/subprocess_posix.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/subprocess_windows.c" role="src" />
@@ -145,6 +146,7 @@
     <file baseinstalldir="/" name="src/core/lib/support/time_precise.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/time_win32.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/tls_pthread.c" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/tmpfile_msys.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/tmpfile_posix.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/tmpfile_win32.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/support/wrap_memcpy.c" role="src" />
diff --git a/src/core/lib/iomgr/tcp_server_windows.c b/src/core/lib/iomgr/tcp_server_windows.c
index 6940dec7b0..53f58477a4 100644
--- a/src/core/lib/iomgr/tcp_server_windows.c
+++ b/src/core/lib/iomgr/tcp_server_windows.c
@@ -510,30 +510,17 @@ int grpc_tcp_server_add_port(grpc_tcp_server *s, const void *addr,
 
 unsigned grpc_tcp_server_port_fd_count(grpc_tcp_server *s,
                                        unsigned port_index) {
-  grpc_tcp_listener *sp;
-  for (sp = s->head; sp && port_index != 0; sp = sp->next, --port_index)
-    ;
-  if (sp) {
-    return 1;
-  } else {
-    return 0;
-  }
+  (void)s;
+  (void)port_index;
+  abort();
 }
 
 int grpc_tcp_server_port_fd(grpc_tcp_server *s, unsigned port_index,
                             unsigned fd_index) {
-  grpc_tcp_listener *sp;
-  if (fd_index != 0) {
-    /* Windows implementation has only one fd per port_index. */
-    return -1;
-  }
-  for (sp = s->head; sp && port_index != 0; sp = sp->next, --port_index)
-    ;
-  if (sp) {
-    return _open_osfhandle((intptr_t)sp->socket->socket, 0);
-  } else {
-    return -1;
-  }
+  (void)s;
+  (void)port_index;
+  (void)fd_index;
+  abort();
 }
 
 void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
diff --git a/src/core/lib/iomgr/tcp_windows.c b/src/core/lib/iomgr/tcp_windows.c
index 7ee689a7e4..3996823933 100644
--- a/src/core/lib/iomgr/tcp_windows.c
+++ b/src/core/lib/iomgr/tcp_windows.c
@@ -35,6 +35,8 @@
 
 #ifdef GPR_WINSOCK_SOCKET
 
+#include <limits.h>
+
 #include "src/core/lib/iomgr/sockaddr_win32.h"
 
 #include <grpc/support/alloc.h>
@@ -51,12 +53,20 @@
 #include "src/core/lib/iomgr/tcp_client.h"
 #include "src/core/lib/iomgr/timer.h"
 
+#if defined(__MSYS__) && defined(GPR_ARCH_64)
+/* Nasty workaround for nasty bug when using the 64 bits msys compiler
+   in conjunction with Microsoft Windows headers. */
+#define GRPC_FIONBIO _IOW('f', 126, uint32_t)
+#else
+#define GRPC_FIONBIO FIONBIO
+#endif
+
 static int set_non_block(SOCKET sock) {
   int status;
-  unsigned long param = 1;
+  uint32_t param = 1;
   DWORD ret;
   status =
-      WSAIoctl(sock, FIONBIO, &param, sizeof(param), NULL, 0, &ret, NULL, NULL);
+      WSAIoctl(sock, GRPC_FIONBIO, &param, sizeof(param), NULL, 0, &ret, NULL, NULL);
   return status == 0;
 }
 
diff --git a/src/core/lib/support/env_win32.c b/src/core/lib/support/env_win32.c
index ef84c941df..e670e1e8d0 100644
--- a/src/core/lib/support/env_win32.c
+++ b/src/core/lib/support/env_win32.c
@@ -33,41 +33,47 @@
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_ENV
+
+#include <windows.h>
 
 #include "src/core/lib/support/env.h"
 #include "src/core/lib/support/string.h"
-
-#ifdef __MINGW32__
-errno_t getenv_s(size_t *size_needed, char *buffer, size_t size,
-                 const char *varname);
-#else
-#include <stdlib.h>
-#endif
+#include "src/core/lib/support/string_win32.h"
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/string_util.h>
 
 char *gpr_getenv(const char *name) {
-  size_t size;
   char *result = NULL;
-  errno_t err;
+  DWORD size;
+  LPTSTR tresult = NULL;
+  LPTSTR tname = gpr_char_to_tchar(name);
+  DWORD ret;
 
-  err = getenv_s(&size, NULL, 0, name);
-  if (err || (size == 0)) return NULL;
-  result = gpr_malloc(size);
-  err = getenv_s(&size, result, size, name);
-  if (err) {
-    gpr_free(result);
+  ret = GetEnvironmentVariable(tname, NULL, 0);
+  if (ret == 0) return NULL;
+  size = ret * (DWORD)sizeof(TCHAR);
+  tresult = gpr_malloc(size);
+  ret = GetEnvironmentVariable(tname, tresult, size);
+  gpr_free(tname);
+  if (ret == 0) {
+    gpr_free(tresult);
     return NULL;
   }
+  result = gpr_tchar_to_char(tresult);
+  gpr_free(tresult);
   return result;
 }
 
 void gpr_setenv(const char *name, const char *value) {
-  errno_t res = _putenv_s(name, value);
-  GPR_ASSERT(res == 0);
+  LPTSTR tname = gpr_char_to_tchar(name);
+  LPTSTR tvalue = gpr_char_to_tchar(value);
+  BOOL res = SetEnvironmentVariable(tname, tvalue);
+  gpr_free(tname);
+  gpr_free(tvalue);
+  GPR_ASSERT(res);
 }
 
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_ENV */
diff --git a/src/core/lib/support/log_linux.c b/src/core/lib/support/log_linux.c
index ff3febb38e..ca04c022e3 100644
--- a/src/core/lib/support/log_linux.c
+++ b/src/core/lib/support/log_linux.c
@@ -41,7 +41,7 @@
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GPR_LINUX
+#ifdef GPR_LINUX_LOG
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
@@ -103,4 +103,4 @@ void gpr_default_log(gpr_log_func_args *args) {
   gpr_free(prefix);
 }
 
-#endif
+#endif /* GPR_LINUX_LOG */
diff --git a/src/core/lib/support/log_win32.c b/src/core/lib/support/log_win32.c
index ba78497a0a..29735bd18c 100644
--- a/src/core/lib/support/log_win32.c
+++ b/src/core/lib/support/log_win32.c
@@ -33,7 +33,7 @@
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_LOG
 
 #include <stdarg.h>
 #include <stdio.h>
@@ -109,18 +109,4 @@ void gpr_default_log(gpr_log_func_args *args) {
   fflush(stderr);
 }
 
-char *gpr_format_message(int messageid) {
-  LPTSTR tmessage;
-  char *message;
-  DWORD status = FormatMessage(
-      FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
-          FORMAT_MESSAGE_IGNORE_INSERTS,
-      NULL, (DWORD)messageid, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-      (LPTSTR)(&tmessage), 0, NULL);
-  if (status == 0) return gpr_strdup("Unable to retrieve error string");
-  message = gpr_tchar_to_char(tmessage);
-  LocalFree(tmessage);
-  return message;
-}
-
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_LOG */
diff --git a/src/core/lib/support/string_util_win32.c b/src/core/lib/support/string_util_win32.c
new file mode 100644
index 0000000000..fd14ce54e4
--- /dev/null
+++ b/src/core/lib/support/string_util_win32.c
@@ -0,0 +1,91 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* Posix code for gpr snprintf support. */
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WIN32
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+#include <strsafe.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/support/string.h"
+
+#if defined UNICODE || defined _UNICODE
+LPTSTR
+gpr_char_to_tchar(LPCSTR input) {
+  LPTSTR ret;
+  int needed = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0);
+  if (needed <= 0) return NULL;
+  ret = gpr_malloc((unsigned)needed * sizeof(TCHAR));
+  MultiByteToWideChar(CP_UTF8, 0, input, -1, ret, needed);
+  return ret;
+}
+
+LPSTR
+gpr_tchar_to_char(LPCTSTR input) {
+  LPSTR ret;
+  int needed = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL);
+  if (needed <= 0) return NULL;
+  ret = gpr_malloc((unsigned)needed);
+  WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, needed, NULL, NULL);
+  return ret;
+}
+#else
+char *gpr_tchar_to_char(LPTSTR input) { return gpr_strdup(input); }
+
+char *gpr_char_to_tchar(LPTSTR input) { return gpr_strdup(input); }
+#endif
+
+char *gpr_format_message(int messageid) {
+  LPTSTR tmessage;
+  char *message;
+  DWORD status = FormatMessage(
+      FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
+          FORMAT_MESSAGE_IGNORE_INSERTS,
+      NULL, (DWORD)messageid, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+      (LPTSTR)(&tmessage), 0, NULL);
+  if (status == 0) return gpr_strdup("Unable to retrieve error string");
+  message = gpr_tchar_to_char(tmessage);
+  LocalFree(tmessage);
+  return message;
+}
+
+#endif /* GPR_WIN32 */
diff --git a/src/core/lib/support/string_win32.c b/src/core/lib/support/string_win32.c
index a2f9857356..8382cde15a 100644
--- a/src/core/lib/support/string_win32.c
+++ b/src/core/lib/support/string_win32.c
@@ -31,23 +31,28 @@
  *
  */
 
-/* Posix code for gpr snprintf support. */
+/* Windows code for gpr snprintf support. */
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_STRING
 
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
+#include <wchar.h>
+#include <strsafe.h>
 
 #include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
 
 #include "src/core/lib/support/string.h"
 
 int gpr_asprintf(char **strp, const char *format, ...) {
   va_list args;
   int ret;
+
+  HRESULT success;
   size_t strp_buflen;
 
   /* Determine the length. */
@@ -68,9 +73,9 @@ int gpr_asprintf(char **strp, const char *format, ...) {
 
   /* Print to the buffer. */
   va_start(args, format);
-  ret = vsnprintf_s(*strp, strp_buflen, _TRUNCATE, format, args);
+  success = StringCbVPrintfA(*strp, strp_buflen, format, args);
   va_end(args);
-  if ((size_t)ret == strp_buflen - 1) {
+  if (success == S_OK) {
     return ret;
   }
 
@@ -80,30 +85,4 @@ int gpr_asprintf(char **strp, const char *format, ...) {
   return -1;
 }
 
-#if defined UNICODE || defined _UNICODE
-LPTSTR
-gpr_char_to_tchar(LPCSTR input) {
-  LPTSTR ret;
-  int needed = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0);
-  if (needed <= 0) return NULL;
-  ret = gpr_malloc((unsigned)needed * sizeof(TCHAR));
-  MultiByteToWideChar(CP_UTF8, 0, input, -1, ret, needed);
-  return ret;
-}
-
-LPSTR
-gpr_tchar_to_char(LPCTSTR input) {
-  LPSTR ret;
-  int needed = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL);
-  if (needed <= 0) return NULL;
-  ret = gpr_malloc((unsigned)needed);
-  WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, needed, NULL, NULL);
-  return ret;
-}
-#else
-char *gpr_tchar_to_char(LPTSTR input) { return gpr_strdup(input); }
-
-char *gpr_char_to_tchar(LPTSTR input) { return gpr_strdup(input); }
-#endif
-
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_STRING */
diff --git a/src/core/lib/support/time_win32.c b/src/core/lib/support/time_win32.c
index f7acbd14a6..9e924ab3f4 100644
--- a/src/core/lib/support/time_win32.c
+++ b/src/core/lib/support/time_win32.c
@@ -35,7 +35,7 @@
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_TIME
 
 #include <grpc/support/log.h>
 #include <grpc/support/time.h>
@@ -107,4 +107,4 @@ void gpr_sleep_until(gpr_timespec until) {
   }
 }
 
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_TIME */
diff --git a/src/core/lib/support/tmpfile_msys.c b/src/core/lib/support/tmpfile_msys.c
new file mode 100644
index 0000000000..f0f803aa75
--- /dev/null
+++ b/src/core/lib/support/tmpfile_msys.c
@@ -0,0 +1,75 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_MSYS_TMPFILE
+
+#include <io.h>
+#include <stdio.h>
+#include <string.h>
+#include <tchar.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/support/string_win32.h"
+#include "src/core/lib/support/tmpfile.h"
+
+FILE *gpr_tmpfile(const char *prefix, char **tmp_filename_out) {
+  FILE *result = NULL;
+  char tmp_filename[MAX_PATH];
+  UINT success;
+
+  if (tmp_filename_out != NULL) *tmp_filename_out = NULL;
+
+  /* Generate a unique filename with our template + temporary path. */
+  success = GetTempFileNameA(".", prefix, 0, tmp_filename);
+  fprintf(stderr, "success = %d\n", success);
+  if (!success) goto end;
+
+  /* Open a file there. */
+  result = fopen(tmp_filename, "wb+");
+  fprintf(stderr, "result = %p\n", result);
+  if (result == NULL) goto end;
+
+end:
+  if (result && tmp_filename_out) {
+    *tmp_filename_out = gpr_strdup(tmp_filename);
+  }
+
+  return result;
+}
+
+#endif /* GPR_MSYS_TMPFILE */
diff --git a/src/core/lib/support/tmpfile_posix.c b/src/core/lib/support/tmpfile_posix.c
index 9e0e7ad808..0cd4bb6fc3 100644
--- a/src/core/lib/support/tmpfile_posix.c
+++ b/src/core/lib/support/tmpfile_posix.c
@@ -33,7 +33,7 @@
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GPR_POSIX_FILE
+#ifdef GPR_POSIX_TMPFILE
 
 #include "src/core/lib/support/tmpfile.h"
 
@@ -82,4 +82,4 @@ end:
   return result;
 }
 
-#endif /* GPR_POSIX_FILE */
+#endif /* GPR_POSIX_TMPFILE */
diff --git a/src/core/lib/support/tmpfile_win32.c b/src/core/lib/support/tmpfile_win32.c
index 0cb2904f8d..9ac73128c3 100644
--- a/src/core/lib/support/tmpfile_win32.c
+++ b/src/core/lib/support/tmpfile_win32.c
@@ -33,7 +33,7 @@
 
 #include <grpc/support/port_platform.h>
 
-#ifdef GPR_WIN32
+#ifdef GPR_WIN32_TMPFILE
 
 #include <io.h>
 #include <stdio.h>
@@ -81,4 +81,4 @@ end:
   return result;
 }
 
-#endif /* GPR_WIN32 */
+#endif /* GPR_WIN32_TMPFILE */
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 1f7f2a196b..e389782b47 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -57,6 +57,7 @@ CORE_SOURCE_FILES = [
   'src/core/lib/support/stack_lockfree.c',
   'src/core/lib/support/string.c',
   'src/core/lib/support/string_posix.c',
+  'src/core/lib/support/string_util_win32.c',
   'src/core/lib/support/string_win32.c',
   'src/core/lib/support/subprocess_posix.c',
   'src/core/lib/support/subprocess_windows.c',
@@ -71,6 +72,7 @@ CORE_SOURCE_FILES = [
   'src/core/lib/support/time_precise.c',
   'src/core/lib/support/time_win32.c',
   'src/core/lib/support/tls_pthread.c',
+  'src/core/lib/support/tmpfile_msys.c',
   'src/core/lib/support/tmpfile_posix.c',
   'src/core/lib/support/tmpfile_win32.c',
   'src/core/lib/support/wrap_memcpy.c',
diff --git a/test/core/util/port_windows.c b/test/core/util/port_windows.c
index 2b6d3dd223..154d607ec7 100644
--- a/test/core/util/port_windows.c
+++ b/test/core/util/port_windows.c
@@ -51,6 +51,11 @@
 #include "src/core/lib/support/env.h"
 #include "test/core/util/port_server_client.h"
 
+#if GPR_GETPID_IN_UNISTD_H
+#include <sys/unistd.h>
+static int _getpid() { return getpid(); }
+#endif
+
 #define NUM_RANDOM_PORTS_TO_PICK 100
 
 static int *chosen_ports = NULL;
@@ -114,7 +119,7 @@ static int is_port_available(int *port, int is_tcp) {
   /* Try binding to port */
   addr.sin_family = AF_INET;
   addr.sin_addr.s_addr = INADDR_ANY;
-  addr.sin_port = htons(*port);
+  addr.sin_port = htons((u_short)*port);
   if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
     gpr_log(GPR_DEBUG, "bind(port=%d) failed: %s", *port, strerror(errno));
     closesocket(fd);
@@ -127,7 +132,7 @@ static int is_port_available(int *port, int is_tcp) {
     closesocket(fd);
     return 0;
   }
-  GPR_ASSERT(alen <= sizeof(addr));
+  GPR_ASSERT(alen <= (socklen_t)sizeof(addr));
   actual_port = ntohs(addr.sin_port);
   GPR_ASSERT(actual_port > 0);
   if (*port == 0) {
diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c
index 3155a4ece6..62468a5a61 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.c
@@ -50,7 +50,7 @@ static unsigned seed(void) { return (unsigned)getpid(); }
 
 #if GPR_GETPID_IN_PROCESS_H
 #include <process.h>
-static unsigned seed(void) { return _getpid(); }
+static unsigned seed(void) { return (unsigned)_getpid(); }
 #endif
 
 #if GPR_WINDOWS_CRASH_HANDLER
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index b131a55b59..e0d9714828 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -1167,6 +1167,7 @@ src/core/lib/support/slice_buffer.c \
 src/core/lib/support/stack_lockfree.c \
 src/core/lib/support/string.c \
 src/core/lib/support/string_posix.c \
+src/core/lib/support/string_util_win32.c \
 src/core/lib/support/string_win32.c \
 src/core/lib/support/subprocess_posix.c \
 src/core/lib/support/subprocess_windows.c \
@@ -1181,6 +1182,7 @@ src/core/lib/support/time_posix.c \
 src/core/lib/support/time_precise.c \
 src/core/lib/support/time_win32.c \
 src/core/lib/support/tls_pthread.c \
+src/core/lib/support/tmpfile_msys.c \
 src/core/lib/support/tmpfile_posix.c \
 src/core/lib/support/tmpfile_win32.c \
 src/core/lib/support/wrap_memcpy.c
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 0b68315c82..b9a004423c 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -5429,6 +5429,7 @@
       "src/core/lib/support/string.c", 
       "src/core/lib/support/string.h", 
       "src/core/lib/support/string_posix.c", 
+      "src/core/lib/support/string_util_win32.c", 
       "src/core/lib/support/string_win32.c", 
       "src/core/lib/support/string_win32.h", 
       "src/core/lib/support/subprocess_posix.c", 
@@ -5447,6 +5448,7 @@
       "src/core/lib/support/time_win32.c", 
       "src/core/lib/support/tls_pthread.c", 
       "src/core/lib/support/tmpfile.h", 
+      "src/core/lib/support/tmpfile_msys.c", 
       "src/core/lib/support/tmpfile_posix.c", 
       "src/core/lib/support/tmpfile_win32.c", 
       "src/core/lib/support/wrap_memcpy.c"
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj b/vsprojects/vcxproj/gpr/gpr.vcxproj
index cdb128e48e..26195bb541 100644
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj
@@ -259,6 +259,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_posix.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_util_win32.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_win32.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\subprocess_posix.c">
@@ -287,6 +289,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tls_pthread.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_msys.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_posix.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_win32.c">
diff --git a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
index 8af6fdd44c..be15391b09 100644
--- a/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
+++ b/vsprojects/vcxproj/gpr/gpr.vcxproj.filters
@@ -82,6 +82,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_posix.c">
       <Filter>src\core\lib\support</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_util_win32.c">
+      <Filter>src\core\lib\support</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\string_win32.c">
       <Filter>src\core\lib\support</Filter>
     </ClCompile>
@@ -124,6 +127,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tls_pthread.c">
       <Filter>src\core\lib\support</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_msys.c">
+      <Filter>src\core\lib\support</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\support\tmpfile_posix.c">
       <Filter>src\core\lib\support</Filter>
     </ClCompile>
-- 
GitLab


From b7c34a50f1e0e529e7446158f6e6eb54e37b3fa8 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 15 Apr 2016 07:40:44 +0200
Subject: [PATCH 067/525] Removing grpc_tcp_server_port_fd* from the Windows
 implementation.

---
 src/core/lib/iomgr/tcp_server_windows.c | 15 ---------------
 1 file changed, 15 deletions(-)

diff --git a/src/core/lib/iomgr/tcp_server_windows.c b/src/core/lib/iomgr/tcp_server_windows.c
index 53f58477a4..125f521d87 100644
--- a/src/core/lib/iomgr/tcp_server_windows.c
+++ b/src/core/lib/iomgr/tcp_server_windows.c
@@ -508,21 +508,6 @@ int grpc_tcp_server_add_port(grpc_tcp_server *s, const void *addr,
   }
 }
 
-unsigned grpc_tcp_server_port_fd_count(grpc_tcp_server *s,
-                                       unsigned port_index) {
-  (void)s;
-  (void)port_index;
-  abort();
-}
-
-int grpc_tcp_server_port_fd(grpc_tcp_server *s, unsigned port_index,
-                            unsigned fd_index) {
-  (void)s;
-  (void)port_index;
-  (void)fd_index;
-  abort();
-}
-
 void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
                            grpc_pollset **pollset, size_t pollset_count,
                            grpc_tcp_server_cb on_accept_cb,
-- 
GitLab


From a0091cba8957591be6a41c8e381a674874f6bc63 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 15 Apr 2016 07:47:50 +0200
Subject: [PATCH 068/525] Re-adding GPR_POSIX_FILE.

---
 include/grpc/impl/codegen/port_platform.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h
index bbcb4098e3..1229d488ed 100644
--- a/include/grpc/impl/codegen/port_platform.h
+++ b/include/grpc/impl/codegen/port_platform.h
@@ -128,6 +128,7 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
+#define GPR_POSIX_FILE 1
 #define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_LOG
 #define GPR_POSIX_STRING 1
@@ -179,6 +180,7 @@
 #ifndef GPR_LINUX_SOCKETUTILS
 #define GPR_POSIX_SOCKETUTILS
 #endif
+#define GPR_POSIX_FILE 1
 #define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
@@ -217,6 +219,7 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
+#define GPR_POSIX_FILE 1
 #define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
@@ -247,6 +250,7 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
+#define GPR_POSIX_FILE 1
 #define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
@@ -284,6 +288,7 @@
 #define GPR_POSIX_SOCKETADDR 1
 #define GPR_POSIX_SOCKETUTILS 1
 #define GPR_POSIX_ENV 1
+#define GPR_POSIX_FILE 1
 #define GPR_POSIX_TMPFILE 1
 #define GPR_POSIX_STRING 1
 #define GPR_POSIX_SUBPROCESS 1
-- 
GitLab


From 344f55b7baad4fce6be0d5c7007b43f5f270e359 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 15 Apr 2016 07:52:25 +0200
Subject: [PATCH 069/525] clang-format.

---
 src/core/lib/iomgr/tcp_windows.c         | 4 ++--
 src/core/lib/support/string_util_win32.c | 2 +-
 src/core/lib/support/string_win32.c      | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/core/lib/iomgr/tcp_windows.c b/src/core/lib/iomgr/tcp_windows.c
index 3996823933..551149e1a6 100644
--- a/src/core/lib/iomgr/tcp_windows.c
+++ b/src/core/lib/iomgr/tcp_windows.c
@@ -65,8 +65,8 @@ static int set_non_block(SOCKET sock) {
   int status;
   uint32_t param = 1;
   DWORD ret;
-  status =
-      WSAIoctl(sock, GRPC_FIONBIO, &param, sizeof(param), NULL, 0, &ret, NULL, NULL);
+  status = WSAIoctl(sock, GRPC_FIONBIO, &param, sizeof(param), NULL, 0, &ret,
+                    NULL, NULL);
   return status == 0;
 }
 
diff --git a/src/core/lib/support/string_util_win32.c b/src/core/lib/support/string_util_win32.c
index fd14ce54e4..c0586a3fbb 100644
--- a/src/core/lib/support/string_util_win32.c
+++ b/src/core/lib/support/string_util_win32.c
@@ -40,8 +40,8 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
-#include <wchar.h>
 #include <strsafe.h>
+#include <wchar.h>
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/string_util.h>
diff --git a/src/core/lib/support/string_win32.c b/src/core/lib/support/string_win32.c
index 8382cde15a..eabd9c6883 100644
--- a/src/core/lib/support/string_win32.c
+++ b/src/core/lib/support/string_win32.c
@@ -40,8 +40,8 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
-#include <wchar.h>
 #include <strsafe.h>
+#include <wchar.h>
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/string_util.h>
-- 
GitLab


From 95953bfd7f71c1555aaf7d9a158295c4720fa9da Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 15 Apr 2016 07:58:22 +0200
Subject: [PATCH 070/525] Moving headers around.

---
 src/core/lib/support/string_util_win32.c | 5 ++++-
 src/core/lib/support/string_win32.c      | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/core/lib/support/string_util_win32.c b/src/core/lib/support/string_util_win32.c
index c0586a3fbb..f3cb0c050f 100644
--- a/src/core/lib/support/string_util_win32.c
+++ b/src/core/lib/support/string_util_win32.c
@@ -37,11 +37,14 @@
 
 #ifdef GPR_WIN32
 
+/* Some platforms (namely msys) need wchar to be included BEFORE
+   anything else, especially strsafe.h. */
+#include <wchar.h>
+
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
 #include <strsafe.h>
-#include <wchar.h>
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/string_util.h>
diff --git a/src/core/lib/support/string_win32.c b/src/core/lib/support/string_win32.c
index eabd9c6883..9b398b89c5 100644
--- a/src/core/lib/support/string_win32.c
+++ b/src/core/lib/support/string_win32.c
@@ -37,11 +37,14 @@
 
 #ifdef GPR_WIN32_STRING
 
+/* Some platforms (namely msys) need wchar to be included BEFORE
+   anything else, especially strsafe.h. */
+#include <wchar.h>
+
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
 #include <strsafe.h>
-#include <wchar.h>
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/string_util.h>
-- 
GitLab


From 2e08941a37450b42dd21e8755e07091ea444f545 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Fri, 15 Apr 2016 10:46:41 -0700
Subject: [PATCH 071/525] Use the comments before syntax line as file comments.

---
 src/compiler/config.h                      |  2 ++
 src/compiler/cpp_generator.cc              |  6 +++-
 src/compiler/generator_helpers.h           | 27 +++++++++++++++++
 src/proto/grpc/testing/compiler_test.proto | 11 +++----
 test/cpp/codegen/compiler_test_golden      | 35 ++++++++++++++++++++++
 5 files changed, 75 insertions(+), 6 deletions(-)

diff --git a/src/compiler/config.h b/src/compiler/config.h
index a826dd9744..a534b119d2 100644
--- a/src/compiler/config.h
+++ b/src/compiler/config.h
@@ -42,6 +42,7 @@
 #include <google/protobuf/descriptor.pb.h>
 #define GRPC_CUSTOM_DESCRIPTOR ::google::protobuf::Descriptor
 #define GRPC_CUSTOM_FILEDESCRIPTOR ::google::protobuf::FileDescriptor
+#define GRPC_CUSTOM_FILEDESCRIPTORPROTO ::google::protobuf::FileDescriptorProto
 #define GRPC_CUSTOM_METHODDESCRIPTOR ::google::protobuf::MethodDescriptor
 #define GRPC_CUSTOM_SERVICEDESCRIPTOR ::google::protobuf::ServiceDescriptor
 #define GRPC_CUSTOM_SOURCELOCATION ::google::protobuf::SourceLocation
@@ -73,6 +74,7 @@ namespace grpc {
 namespace protobuf {
 typedef GRPC_CUSTOM_DESCRIPTOR Descriptor;
 typedef GRPC_CUSTOM_FILEDESCRIPTOR FileDescriptor;
+typedef GRPC_CUSTOM_FILEDESCRIPTORPROTO FileDescriptorProto;
 typedef GRPC_CUSTOM_METHODDESCRIPTOR MethodDescriptor;
 typedef GRPC_CUSTOM_SERVICEDESCRIPTOR ServiceDescriptor;
 typedef GRPC_CUSTOM_SOURCELOCATION SourceLocation;
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index 97455cdbfd..b03b7fd856 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -101,7 +101,11 @@ grpc::string GetHeaderPrologue(File *file, const Parameters &params) {
     printer->Print(vars,
                   "// If you make any local change, they will be lost.\n");
     printer->Print(vars, "// source: $filename$\n");
-    printer->Print(file->GetLeadingComments().c_str());
+    grpc::string leading_comments = file->GetLeadingComments();
+    if (!leading_comments.empty()) {
+      printer->Print(vars, "// Original file comments:\n");
+      printer->Print(leading_comments.c_str());
+    }
     printer->Print(vars, "#ifndef GRPC_$filename_identifier$__INCLUDED\n");
     printer->Print(vars, "#define GRPC_$filename_identifier$__INCLUDED\n");
     printer->Print(vars, "\n");
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index 16f0ca32df..9ba7356857 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -207,6 +207,33 @@ inline void GetComment(const DescriptorType *desc, CommentType type,
   }
 }
 
+// For file level leading and detached leading comments, we return comments
+// above syntax line. Return nothing for trailing comments.
+template <>
+inline void GetComment(const grpc::protobuf::FileDescriptor *desc,
+                       CommentType type, std::vector<grpc::string> *out) {
+  if (type == COMMENTTYPE_TRAILING) {
+    return;
+  }
+  grpc::protobuf::SourceLocation location;
+  std::vector<int> path;
+  path.push_back(grpc::protobuf::FileDescriptorProto::kSyntaxFieldNumber);
+  if (!desc->GetSourceLocation(path, &location)) {
+    return;
+  }
+  if (type == COMMENTTYPE_LEADING) {
+    Split(location.leading_comments, '\n', out);
+  } else if (type == COMMENTTYPE_LEADING_DETACHED) {
+    for (unsigned int i = 0; i < location.leading_detached_comments.size();
+         i++) {
+      Split(location.leading_detached_comments[i], '\n', out);
+      out->push_back("");
+    }
+  } else {
+    abort();
+  }
+}
+
 }  // namespace grpc_generator
 
 #endif  // GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
diff --git a/src/proto/grpc/testing/compiler_test.proto b/src/proto/grpc/testing/compiler_test.proto
index 22674974ed..085e8ae59f 100644
--- a/src/proto/grpc/testing/compiler_test.proto
+++ b/src/proto/grpc/testing/compiler_test.proto
@@ -31,12 +31,12 @@
 
 // File detached comment 2
 
-// Syntax leading comment 1
+// File leading comment 1
 syntax = "proto3";
 
-// File detached comment 3
+// Ignored detached comment
 
-// Package leading comment 1
+// Ignored package leading comment
 package grpc.testing;
 
 message Request {
@@ -60,6 +60,7 @@ service ServiceA {
   rpc MethodA2(stream Request) returns (Response);
   // MethodA2 trailing comment 1
 }
+// Ignored ServiceA trailing comment 1
 
 // ServiceB leading comment 1
 service ServiceB {
@@ -69,6 +70,6 @@ service ServiceB {
   rpc MethodB1(Request) returns (Response);
   // MethodB1 trailing comment 1
 }
-// ServiceB trailing comment 2
+// Ignored ServiceB trailing comment 2
 
-// File trailing comment
+// Ignored file trailing comment
diff --git a/test/cpp/codegen/compiler_test_golden b/test/cpp/codegen/compiler_test_golden
index 9a2303902b..ef3d1aaa51 100644
--- a/test/cpp/codegen/compiler_test_golden
+++ b/test/cpp/codegen/compiler_test_golden
@@ -1,6 +1,41 @@
 // Generated by the gRPC protobuf plugin.
 // If you make any local change, they will be lost.
 // source: src/proto/grpc/testing/compiler_test.proto
+// Original file comments:
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// File detached comment 1
+//
+// File detached comment 2
+//
+// File leading comment 1
 #ifndef GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
 #define GRPC_src_2fproto_2fgrpc_2ftesting_2fcompiler_5ftest_2eproto__INCLUDED
 
-- 
GitLab


From ba0d6ac79a0b937ee41d9d9c81547af2ebc78302 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 13:07:54 -0700
Subject: [PATCH 072/525] First pass client call fuzzing

---
 test/core/end2end/fuzzers/api_fuzzer.c | 84 ++++++++++++++++++++++----
 1 file changed, 71 insertions(+), 13 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index c74783bee4..cc98e02529 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -82,6 +82,14 @@ static char *read_string(input_stream *inp) {
   return str;
 }
 
+static void read_buffer(input_stream *inp, char **buffer, size_t *length) {
+  *length = next_byte(inp);
+  *buffer = gpr_malloc(*length);
+  for (size_t i = 0; i < *length; i++) {
+    (*buffer)[i] = (char)next_byte(inp);
+  }
+}
+
 static uint32_t read_uint32(input_stream *inp) {
   uint8_t b = next_byte(inp);
   uint32_t x = b & 0x7f;
@@ -106,6 +114,23 @@ static uint32_t read_uint32(input_stream *inp) {
   return x;
 }
 
+static grpc_byte_buffer *read_message(input_stream *inp) {
+  gpr_slice slice = gpr_slice_malloc(read_uint32(inp));
+  memset(GPR_SLICE_START_PTR(slice), 0, GPR_SLICE_LENGTH(slice));
+  return grpc_raw_byte_buffer_create(&slice, 1);
+}
+
+static void read_metadata(input_stream *inp, size_t *count, grpc_metadata **metadata) {
+  *count = next_byte(inp);
+  *metadata = gpr_malloc(*count * sizeof(**metadata));
+  memset(*metadata, 0, *count * sizeof(**metadata));
+  for (size_t i = 0; i < *count; i++) {
+    (*metadata)[i].key = read_string(inp);
+    read_buffer(inp, (char**)&(*metadata[i]).value, &(*metadata[i]).value_length);
+    (*metadata)[i].flags = read_uint32(inp);
+  }
+}
+
 static int read_int(input_stream *inp) { return (int)read_uint32(inp); }
 
 static grpc_channel_args *read_args(input_stream *inp) {
@@ -304,7 +329,13 @@ static void free_non_null(void *p) {
 typedef struct call_state {
   grpc_call *client;
   grpc_call *server;
+  grpc_byte_buffer *recv_message[2];
+  grpc_status_code status;
   grpc_metadata_array recv_initial_metadata;
+  grpc_metadata_array recv_trailing_metadata;
+  char *recv_status_details;
+  size_t recv_status_details_capacity;
+  int cancelled;
 } call_state;
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
@@ -323,6 +354,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   int pending_server_shutdowns = 0;
   int pending_channel_watches = 0;
   int pending_pings = 0;
+  int pending_ops = 0;
 
 #define MAX_CALLS 16
   call_state calls[MAX_CALLS];
@@ -332,7 +364,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
   while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
-         pending_channel_watches > 0 || pending_pings > 0) {
+         pending_channel_watches > 0 || pending_pings > 0 || pending_ops > 0) {
     if (is_eof(&inp)) {
       if (g_channel != NULL) {
         grpc_channel_destroy(g_channel);
@@ -549,15 +581,16 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         if (ok && !on_server && calls[0].client == NULL) {
           ok = false;
         }
-        for (size_t i = 0; i < num_ops; i++) {
-          grpc_op *op = &ops[i];
+        size_t i;
+        grpc_op *op;
+        for (i = 0; i < num_ops; i++) {
+          op = &ops[i];
           switch (next_byte(&inp)) {
             default:
               ok = false;
               break;
             case GRPC_OP_SEND_INITIAL_METADATA:
               op->op = GRPC_OP_SEND_INITIAL_METADATA;
-              op->data.send_initial_metadata.count = next_byte(&inp);
               read_metadata(&inp, &op->data.send_initial_metadata.count,
                             &op->data.send_initial_metadata.metadata);
               break;
@@ -565,12 +598,17 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
               op->op = GRPC_OP_SEND_INITIAL_METADATA;
               op->data.send_message = read_message(&inp);
               break;
+            case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
+              op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
+              break;
             case GRPC_OP_SEND_STATUS_FROM_SERVER:
               op->op = GRPC_OP_SEND_STATUS_FROM_SERVER;
               read_metadata(
                   &inp,
                   &op->data.send_status_from_server.trailing_metadata_count,
                   &op->data.send_status_from_server.trailing_metadata);
+              op->data.send_status_from_server.status = next_byte(&inp);
+              op->data.send_status_from_server.status_details = read_string(&inp);
               break;
             case GRPC_OP_RECV_INITIAL_METADATA:
               op->op = GRPC_OP_RECV_INITIAL_METADATA;
@@ -598,12 +636,39 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           op->reserved = NULL;
           op->flags = read_uint32(&inp);
           if (ok) {
+            validator *v = create_validator(decrement, &pending_ops);
+            pending_ops++;
             grpc_call_error error = grpc_call_start_batch(
                 on_server ? calls[0].server : calls[0].client, ops, num_ops,
-                tag, NULL);
+                v, NULL);
+            if (error != GRPC_CALL_OK) {
+              v->validate(v->arg, false);
+              gpr_free(v);
+            }
           } else {
             end(&inp);
           }
+          for (i = 0; i < num_ops; i++) {
+            op = &ops[i];
+            switch (op->op) {
+            case GRPC_OP_SEND_INITIAL_METADATA:
+              gpr_free(op->data.send_initial_metadata.metadata);
+              break;
+            case GRPC_OP_SEND_MESSAGE:
+              grpc_byte_buffer_destroy(op->data.send_message);
+              break;
+            case GRPC_OP_SEND_STATUS_FROM_SERVER:
+              gpr_free(op->data.send_status_from_server.trailing_metadata);
+              gpr_free((void*)op->data.send_status_from_server.status_details);
+              break;
+            case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
+            case GRPC_OP_RECV_INITIAL_METADATA:
+            case GRPC_OP_RECV_MESSAGE:
+            case GRPC_OP_RECV_STATUS_ON_CLIENT:
+            case GRPC_OP_RECV_CLOSE_ON_SERVER:
+              break;
+            }
+          }
         }
         break;
       }
@@ -619,7 +684,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       // cancel current call on server
       case 14: {
         if (num_calls > 0 && calls[0].server) {
-          grpc_call_cancel(calls[0].server, NULL)
+          grpc_call_cancel(calls[0].server, NULL);
         } else {
           end(&inp);
         }
@@ -676,13 +741,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         gpr_free(tracer);
         break;
       }
-      // create an alarm
-      case 21: {
-        gpr_timespec deadline =
-            gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
-                         gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
-        grpc_alarm *alarm = grpc_alarm_create(cq, );
-      }
     }
   }
 
-- 
GitLab


From 2b3895cec4f9bd1881378d2c20733c1038a04822 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 13:17:53 -0700
Subject: [PATCH 073/525] Fix leak

---
 test/core/end2end/fuzzers/api_fuzzer.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index cc98e02529..023fbed8b4 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -669,6 +669,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
               break;
             }
           }
+          gpr_free(ops);
         }
         break;
       }
-- 
GitLab


From 2ca75bf16818e83e936df7365e167904a6647b96 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 13:19:55 -0700
Subject: [PATCH 074/525] Fix typo

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 023fbed8b4..e5b81e358b 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -595,7 +595,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                             &op->data.send_initial_metadata.metadata);
               break;
             case GRPC_OP_SEND_MESSAGE:
-              op->op = GRPC_OP_SEND_INITIAL_METADATA;
+              op->op = GRPC_OP_SEND_MESSAGE;
               op->data.send_message = read_message(&inp);
               break;
             case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
-- 
GitLab


From 41703589dc200c475765300e10dd5e8995234776 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 13:27:40 -0700
Subject: [PATCH 075/525] Fix leaks

---
 test/core/end2end/fuzzers/api_fuzzer.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index e5b81e358b..8e1d4195f1 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -652,12 +652,20 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
             op = &ops[i];
             switch (op->op) {
             case GRPC_OP_SEND_INITIAL_METADATA:
+              for (size_t j = 0; j < op->data.send_initial_metadata.count; j++) {
+                gpr_free((void*)op->data.send_initial_metadata.metadata[j].key);
+                gpr_free((void*)op->data.send_initial_metadata.metadata[j].value);
+              }
               gpr_free(op->data.send_initial_metadata.metadata);
               break;
             case GRPC_OP_SEND_MESSAGE:
               grpc_byte_buffer_destroy(op->data.send_message);
               break;
             case GRPC_OP_SEND_STATUS_FROM_SERVER:
+              for (size_t j = 0; j < op->data.send_status_from_server.trailing_metadata_count; j++) {
+                gpr_free((void*)op->data.send_status_from_server.trailing_metadata[j].key);
+                gpr_free((void*)op->data.send_status_from_server.trailing_metadata[j].value);
+              }
               gpr_free(op->data.send_status_from_server.trailing_metadata);
               gpr_free((void*)op->data.send_status_from_server.status_details);
               break;
-- 
GitLab


From a225c29066fb900601fd9c893a94d8409c41ab14 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 13:30:34 -0700
Subject: [PATCH 076/525] Fix crash

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 8e1d4195f1..7b107d2bc3 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -126,7 +126,7 @@ static void read_metadata(input_stream *inp, size_t *count, grpc_metadata **meta
   memset(*metadata, 0, *count * sizeof(**metadata));
   for (size_t i = 0; i < *count; i++) {
     (*metadata)[i].key = read_string(inp);
-    read_buffer(inp, (char**)&(*metadata[i]).value, &(*metadata[i]).value_length);
+    read_buffer(inp, (char**)&(*metadata)[i].value, &(*metadata)[i].value_length);
     (*metadata)[i].flags = read_uint32(inp);
   }
 }
-- 
GitLab


From 3e0d936100965bd0bee53478b795a96240312110 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 13:36:25 -0700
Subject: [PATCH 077/525] Fix loop

---
 test/core/end2end/fuzzers/api_fuzzer.c | 35 +++++++++++++-------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 7b107d2bc3..f9e74310da 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -635,22 +635,23 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           }
           op->reserved = NULL;
           op->flags = read_uint32(&inp);
-          if (ok) {
-            validator *v = create_validator(decrement, &pending_ops);
-            pending_ops++;
-            grpc_call_error error = grpc_call_start_batch(
-                on_server ? calls[0].server : calls[0].client, ops, num_ops,
-                v, NULL);
-            if (error != GRPC_CALL_OK) {
-              v->validate(v->arg, false);
-              gpr_free(v);
-            }
-          } else {
-            end(&inp);
+        }
+        if (ok) {
+          validator *v = create_validator(decrement, &pending_ops);
+          pending_ops++;
+          grpc_call_error error = grpc_call_start_batch(
+              on_server ? calls[0].server : calls[0].client, ops, num_ops,
+              v, NULL);
+          if (error != GRPC_CALL_OK) {
+            v->validate(v->arg, false);
+            gpr_free(v);
           }
-          for (i = 0; i < num_ops; i++) {
-            op = &ops[i];
-            switch (op->op) {
+        } else {
+          end(&inp);
+        }
+        for (i = 0; i < num_ops; i++) {
+          op = &ops[i];
+          switch (op->op) {
             case GRPC_OP_SEND_INITIAL_METADATA:
               for (size_t j = 0; j < op->data.send_initial_metadata.count; j++) {
                 gpr_free((void*)op->data.send_initial_metadata.metadata[j].key);
@@ -675,10 +676,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
             case GRPC_OP_RECV_STATUS_ON_CLIENT:
             case GRPC_OP_RECV_CLOSE_ON_SERVER:
               break;
-            }
           }
-          gpr_free(ops);
         }
+        gpr_free(ops);
+
         break;
       }
       // cancel current call on client
-- 
GitLab


From 36d6f78168dd13ff5652ed1bcc0f91ae14574317 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 13:48:21 -0700
Subject: [PATCH 078/525] Count pings

---
 test/core/end2end/fuzzers/api_fuzzer.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index f9e74310da..557fd5febd 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -730,6 +730,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       // send a ping on a channel
       case 18: {
         if (g_channel != NULL) {
+          pending_pings++;
           grpc_channel_ping(g_channel, cq,
                             create_validator(decrement, &pending_pings), NULL);
         } else {
-- 
GitLab


From 79310abb126e5082a4fcc8d70ffc928925761e89 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 15:09:48 -0700
Subject: [PATCH 079/525] Add lame ping support

---
 src/core/lib/surface/lame_client.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/core/lib/surface/lame_client.c b/src/core/lib/surface/lame_client.c
index c1f6812c4e..80bd95df68 100644
--- a/src/core/lib/surface/lame_client.c
+++ b/src/core/lib/surface/lame_client.c
@@ -99,6 +99,9 @@ static void lame_start_transport_op(grpc_exec_ctx *exec_ctx,
   if (op->on_consumed != NULL) {
     op->on_consumed->cb(exec_ctx, op->on_consumed->cb_arg, 1);
   }
+  if (op->send_ping != NULL) {
+    op->send_ping->cb(exec_ctx, op->send_ping->cb_arg, 0);
+  }
 }
 
 static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
-- 
GitLab


From f582305ebec5af69ca43bef1c69c96c9b508dd3a Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 15 Apr 2016 15:22:09 -0700
Subject: [PATCH 080/525] Limit message length

---
 test/core/end2end/fuzzers/api_fuzzer.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 557fd5febd..6f9be8ecd6 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -90,6 +90,21 @@ static void read_buffer(input_stream *inp, char **buffer, size_t *length) {
   }
 }
 
+static uint32_t read_uint22(input_stream *inp) {
+  uint8_t b = next_byte(inp);
+  uint32_t x = b & 0x7f;
+  if (b & 0x80) {
+    x <<= 7;
+    b = next_byte(inp);
+    x |= b & 0x7f;
+    if (b & 0x80) {
+      x <<= 8;
+      x |= next_byte(inp);
+    }
+  }
+  return x;
+}
+
 static uint32_t read_uint32(input_stream *inp) {
   uint8_t b = next_byte(inp);
   uint32_t x = b & 0x7f;
@@ -115,7 +130,7 @@ static uint32_t read_uint32(input_stream *inp) {
 }
 
 static grpc_byte_buffer *read_message(input_stream *inp) {
-  gpr_slice slice = gpr_slice_malloc(read_uint32(inp));
+  gpr_slice slice = gpr_slice_malloc(read_uint22(inp));
   memset(GPR_SLICE_START_PTR(slice), 0, GPR_SLICE_LENGTH(slice));
   return grpc_raw_byte_buffer_create(&slice, 1);
 }
-- 
GitLab


From 94a353aa460e618071572cd42f2106353fda6abe Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Sat, 16 Apr 2016 01:21:05 +0200
Subject: [PATCH 081/525] Reverting changes in string_win32.c, as we're going
 to use posix strings for msys.

---
 src/core/lib/support/string_win32.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/src/core/lib/support/string_win32.c b/src/core/lib/support/string_win32.c
index 9b398b89c5..6b92f79253 100644
--- a/src/core/lib/support/string_win32.c
+++ b/src/core/lib/support/string_win32.c
@@ -37,25 +37,17 @@
 
 #ifdef GPR_WIN32_STRING
 
-/* Some platforms (namely msys) need wchar to be included BEFORE
-   anything else, especially strsafe.h. */
-#include <wchar.h>
-
 #include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
-#include <strsafe.h>
 
 #include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
 
 #include "src/core/lib/support/string.h"
 
 int gpr_asprintf(char **strp, const char *format, ...) {
   va_list args;
   int ret;
-
-  HRESULT success;
   size_t strp_buflen;
 
   /* Determine the length. */
@@ -76,9 +68,9 @@ int gpr_asprintf(char **strp, const char *format, ...) {
 
   /* Print to the buffer. */
   va_start(args, format);
-  success = StringCbVPrintfA(*strp, strp_buflen, format, args);
+  ret = vsnprintf_s(*strp, strp_buflen, _TRUNCATE, format, args);
   va_end(args);
-  if (success == S_OK) {
+  if ((size_t)ret == strp_buflen - 1) {
     return ret;
   }
 
-- 
GitLab


From 2e7d957a63c9bcfe0235f8b5d55fd9a372a32ced Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 15 Apr 2016 17:29:57 -0700
Subject: [PATCH 082/525] Provide a function that converts grpc_call_error
 values into a string

---
 grpc.def                                      |  1 +
 include/grpc/grpc.h                           |  3 ++
 src/core/lib/surface/call.c                   | 37 +++++++++++++++++++
 .../grpcio/grpc/_cython/imports.generated.c   |  2 +
 .../grpcio/grpc/_cython/imports.generated.h   |  3 ++
 src/ruby/ext/grpc/rb_grpc_imports.generated.c |  2 +
 src/ruby/ext/grpc/rb_grpc_imports.generated.h |  3 ++
 7 files changed, 51 insertions(+)

diff --git a/grpc.def b/grpc.def
index f81aa1b05a..5e2de0ad2a 100644
--- a/grpc.def
+++ b/grpc.def
@@ -86,6 +86,7 @@ EXPORTS
     grpc_header_key_is_legal
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
+    grpc_call_error_to_string
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h
index 5c868aece3..0ca28c0fef 100644
--- a/include/grpc/grpc.h
+++ b/include/grpc/grpc.h
@@ -384,6 +384,9 @@ GRPCAPI int grpc_header_nonbin_value_is_legal(const char *value, size_t length);
 /** Check whether a metadata key corresponds to a binary value */
 GRPCAPI int grpc_is_binary_header(const char *key, size_t length);
 
+/** Convert grpc_call_error values to a string */
+GRPCAPI const char *grpc_call_error_to_string(grpc_call_error error);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 6581bbd3d1..8deb3442de 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -1512,3 +1512,40 @@ grpc_compression_algorithm grpc_call_compression_for_level(
   gpr_mu_unlock(&call->mu);
   return grpc_compression_algorithm_for_level(level, accepted_encodings);
 }
+
+const char *grpc_call_error_to_string(grpc_call_error error) {
+  switch (error) {
+    case GRPC_CALL_ERROR:
+      return "GRPC_CALL_ERROR";
+    case GRPC_CALL_ERROR_ALREADY_ACCEPTED:
+      return "GRPC_CALL_ERROR_ALREADY_ACCEPTED";
+    case GRPC_CALL_ERROR_ALREADY_FINISHED:
+      return "GRPC_CALL_ERROR_ALREADY_FINISHED";
+    case GRPC_CALL_ERROR_ALREADY_INVOKED:
+      return "GRPC_CALL_ERROR_ALREADY_INVOKED";
+    case GRPC_CALL_ERROR_BATCH_TOO_BIG:
+      return "GRPC_CALL_ERROR_BATCH_TOO_BIG";
+    case GRPC_CALL_ERROR_INVALID_FLAGS:
+      return "GRPC_CALL_ERROR_INVALID_FLAGS";
+    case GRPC_CALL_ERROR_INVALID_MESSAGE:
+      return "GRPC_CALL_ERROR_INVALID_MESSAGE";
+    case GRPC_CALL_ERROR_INVALID_METADATA:
+      return "GRPC_CALL_ERROR_INVALID_METADATA";
+    case GRPC_CALL_ERROR_NOT_INVOKED:
+      return "GRPC_CALL_ERROR_NOT_INVOKED";
+    case GRPC_CALL_ERROR_NOT_ON_CLIENT:
+      return "GRPC_CALL_ERROR_NOT_ON_CLIENT";
+    case GRPC_CALL_ERROR_NOT_ON_SERVER:
+      return "GRPC_CALL_ERROR_NOT_ON_SERVER";
+    case GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE:
+      return "GRPC_CALL_ERROR_NOT_SERVER_COMPLETION_QUEUE";
+    case GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH:
+      return "GRPC_CALL_ERROR_PAYLOAD_TYPE_MISMATCH";
+    case GRPC_CALL_ERROR_TOO_MANY_OPERATIONS:
+      return "GRPC_CALL_ERROR_TOO_MANY_OPERATIONS";
+    case GRPC_CALL_OK:
+      return "GRPC_CALL_OK";
+    default:
+      return "GRPC_CALL_ERROR_UNKNOW";
+  }
+}
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index 8bd6ae6372..37e7930a55 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -124,6 +124,7 @@ grpc_tracer_set_enabled_type grpc_tracer_set_enabled_import;
 grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
+grpc_call_error_to_string_type grpc_call_error_to_string_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -390,6 +391,7 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_key_is_legal_import = (grpc_header_key_is_legal_type) GetProcAddress(library, "grpc_header_key_is_legal");
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
+  grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index 272e85b485..380b065733 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -322,6 +322,9 @@ extern grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_
 typedef int(*grpc_is_binary_header_type)(const char *key, size_t length);
 extern grpc_is_binary_header_type grpc_is_binary_header_import;
 #define grpc_is_binary_header grpc_is_binary_header_import
+typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
+extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
+#define grpc_call_error_to_string grpc_call_error_to_string_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index 56db4ec686..8633f9347c 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -124,6 +124,7 @@ grpc_tracer_set_enabled_type grpc_tracer_set_enabled_import;
 grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
+grpc_call_error_to_string_type grpc_call_error_to_string_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -386,6 +387,7 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_key_is_legal_import = (grpc_header_key_is_legal_type) GetProcAddress(library, "grpc_header_key_is_legal");
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
+  grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index c526f434c6..da328367d5 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -322,6 +322,9 @@ extern grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_
 typedef int(*grpc_is_binary_header_type)(const char *key, size_t length);
 extern grpc_is_binary_header_type grpc_is_binary_header_import;
 #define grpc_is_binary_header grpc_is_binary_header_import
+typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
+extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
+#define grpc_call_error_to_string grpc_call_error_to_string_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
-- 
GitLab


From 208795c0fe7a2783c370adfa9b4ff3f73101961a Mon Sep 17 00:00:00 2001
From: Benjamin Herzog <pirat267@gmail.com>
Date: Mon, 18 Apr 2016 18:10:14 +0200
Subject: [PATCH 083/525] Added nullability to service declaration in objc

---
 src/compiler/objective_c_generator.cc | 6 +++---
 src/compiler/objective_c_plugin.cc    | 7 +++++--
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/compiler/objective_c_generator.cc b/src/compiler/objective_c_generator.cc
index ff092053ad..465491e385 100644
--- a/src/compiler/objective_c_generator.cc
+++ b/src/compiler/objective_c_generator.cc
@@ -75,11 +75,11 @@ void PrintMethodSignature(Printer *printer, const MethodDescriptor *method,
   if (method->server_streaming()) {
     printer->Print(vars,
                    " eventHandler:(void(^)(BOOL done, "
-                   "$response_class$ *response, NSError *error))eventHandler");
+                   "$response_class$ *_Nullable response, NSError *_Nullable error))eventHandler");
   } else {
     printer->Print(vars,
-                   " handler:(void(^)($response_class$ *response, "
-                   "NSError *error))handler");
+                   " handler:(void(^)($response_class$ *_Nullable response, "
+                   "NSError *_Nullable error))handler");
   }
 }
 
diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc
index 17440358bb..f62faa5261 100644
--- a/src/compiler/objective_c_plugin.cc
+++ b/src/compiler/objective_c_plugin.cc
@@ -64,7 +64,8 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
         ".pbobjc.h\"\n\n"
         "#import <ProtoRPC/ProtoService.h>\n"
         "#import <RxLibrary/GRXWriteable.h>\n"
-        "#import <RxLibrary/GRXWriter.h>\n";
+        "#import <RxLibrary/GRXWriter.h>\n\n"
+        "NS_ASSUME_NONNULL_BEGIN\n\n";
 
       // TODO(jcanizales): Instead forward-declare the input and output types
       // and import the files in the .pbrpc.m
@@ -81,8 +82,10 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
         declarations += grpc_objective_c_generator::GetHeader(service);
       }
 
+      ::grpc::string nonNullEnd = "\nNS_ASSUME_NONNULL_END\n";
+
       Write(context, file_name + ".pbrpc.h",
-          imports + '\n' + proto_imports + '\n' + declarations);
+          imports + '\n' + proto_imports + '\n' + declarations + nonNullEnd);
     }
 
     {
-- 
GitLab


From 07f2e5f643dd2b0c80c426322f0db154e484698e Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 18 Apr 2016 22:29:26 -0700
Subject: [PATCH 084/525] Move to a list of active calls

---
 test/core/end2end/fuzzers/api_fuzzer.c | 126 +++++++++++--------------
 1 file changed, 57 insertions(+), 69 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 6f9be8ecd6..9f11e750c7 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -341,18 +341,39 @@ static void free_non_null(void *p) {
   gpr_free(p);
 }
 
+typedef enum {
+  ROOT, CLIENT, SERVER
+} call_state_type;
+
 typedef struct call_state {
-  grpc_call *client;
-  grpc_call *server;
-  grpc_byte_buffer *recv_message[2];
+  call_state_type type;
+  grpc_call *call;
+  grpc_byte_buffer *recv_message;
   grpc_status_code status;
   grpc_metadata_array recv_initial_metadata;
   grpc_metadata_array recv_trailing_metadata;
   char *recv_status_details;
   size_t recv_status_details_capacity;
   int cancelled;
+
+  struct call_state *next;
+  struct call_state *prev;
 } call_state;
 
+static call_state *new_call(call_state *sibling, call_state_type type) {
+  call_state *c = gpr_malloc(sizeof(*c));
+  memset(c, 0, sizeof(*c));
+  if (sibling != NULL) {
+  c->next = sibling;
+  c->prev = sibling->prev;
+  c->next->prev = c->prev->next = c;
+  } else {
+  c->next = c->prev = c;
+  }
+  c->type = type;
+  return c;
+}
+
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
   if (squelch) gpr_set_log_function(dont_log);
@@ -371,10 +392,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   int pending_pings = 0;
   int pending_ops = 0;
 
-#define MAX_CALLS 16
-  call_state calls[MAX_CALLS];
-  int num_calls = 0;
-  memset(calls, 0, sizeof(calls));
+  call_state *active_call = new_call(NULL, ROOT);
 
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
@@ -545,14 +563,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       case 10: {
         bool ok = true;
         if (g_channel == NULL) ok = false;
-        if (num_calls >= MAX_CALLS) ok = false;
         grpc_call *parent_call = NULL;
-        uint8_t pcidx = next_byte(&inp);
-        if (pcidx > MAX_CALLS)
-          ok = false;
-        else if (pcidx < MAX_CALLS) {
-          parent_call = calls[pcidx].server;
-          if (parent_call == NULL) ok = false;
+        if (active_call->type != ROOT) {
+          if (active_call->call == NULL) {
+            end(&inp);
+            break;
+          }
+          parent_call = active_call->call;
         }
         uint32_t propagation_mask = read_uint32(&inp);
         char *method = read_string(&inp);
@@ -562,8 +579,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                          gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
 
         if (ok) {
-          GPR_ASSERT(calls[num_calls].client == NULL);
-          calls[num_calls].client =
+          call_state *cs = new_call(active_call, CLIENT);
+          cs->call =
               grpc_channel_create_call(g_channel, parent_call, propagation_mask,
                                        cq, method, host, deadline, NULL);
         } else {
@@ -573,29 +590,18 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // switch the 'current' call
       case 11: {
-        uint8_t new_current = next_byte(&inp);
-        if (new_current == 0 || new_current >= num_calls) {
-          end(&inp);
-        } else {
-          GPR_SWAP(call_state, calls[0], calls[new_current]);
-        }
+        active_call = active_call->next;
         break;
       }
       // queue some ops on a call
       case 12: {
+        if (active_call->type == ROOT || active_call->call == NULL) {
+          end(&inp);
+          break;
+        }
         size_t num_ops = next_byte(&inp);
         grpc_op *ops = gpr_malloc(sizeof(grpc_op) * num_ops);
-        bool ok = num_calls > 0;
-        uint8_t on_server = next_byte(&inp);
-        if (on_server != 0 && on_server != 1) {
-          ok = false;
-        }
-        if (ok && on_server && calls[0].server == NULL) {
-          ok = false;
-        }
-        if (ok && !on_server && calls[0].client == NULL) {
-          ok = false;
-        }
+        bool ok = true;
         size_t i;
         grpc_op *op;
         for (i = 0; i < num_ops; i++) {
@@ -627,25 +633,25 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
               break;
             case GRPC_OP_RECV_INITIAL_METADATA:
               op->op = GRPC_OP_RECV_INITIAL_METADATA;
-              op->data.recv_initial_metadata = &calls[0].recv_initial_metadata;
+              op->data.recv_initial_metadata = &active_call->recv_initial_metadata;
               break;
             case GRPC_OP_RECV_MESSAGE:
               op->op = GRPC_OP_RECV_MESSAGE;
-              op->data.recv_message = &calls[0].recv_message[on_server];
+              op->data.recv_message = &active_call->recv_message;
               break;
             case GRPC_OP_RECV_STATUS_ON_CLIENT:
               op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
-              op->data.recv_status_on_client.status = &calls[0].status;
+              op->data.recv_status_on_client.status = &active_call->status;
               op->data.recv_status_on_client.trailing_metadata =
-                  &calls[0].recv_trailing_metadata;
+                  &active_call->recv_trailing_metadata;
               op->data.recv_status_on_client.status_details =
-                  &calls[0].recv_status_details;
+                  &active_call->recv_status_details;
               op->data.recv_status_on_client.status_details_capacity =
-                  &calls[0].recv_status_details_capacity;
+                  &active_call->recv_status_details_capacity;
               break;
             case GRPC_OP_RECV_CLOSE_ON_SERVER:
               op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
-              op->data.recv_close_on_server.cancelled = &calls[0].cancelled;
+              op->data.recv_close_on_server.cancelled = &active_call->cancelled;
               break;
           }
           op->reserved = NULL;
@@ -655,7 +661,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           validator *v = create_validator(decrement, &pending_ops);
           pending_ops++;
           grpc_call_error error = grpc_call_start_batch(
-              on_server ? calls[0].server : calls[0].client, ops, num_ops,
+              active_call->call, ops, num_ops,
               v, NULL);
           if (error != GRPC_CALL_OK) {
             v->validate(v->arg, false);
@@ -697,44 +703,26 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
         break;
       }
-      // cancel current call on client
+      // cancel current call
       case 13: {
-        if (num_calls > 0 && calls[0].client) {
-          grpc_call_cancel(calls[0].client, NULL);
+        if (active_call->type != ROOT && active_call->call != NULL) {
+          grpc_call_cancel(active_call->call, NULL);
         } else {
           end(&inp);
         }
         break;
       }
-      // cancel current call on server
+      // get a calls peer
       case 14: {
-        if (num_calls > 0 && calls[0].server) {
-          grpc_call_cancel(calls[0].server, NULL);
-        } else {
-          end(&inp);
-        }
-        break;
-      }
-      // get a calls peer on client
-      case 15: {
-        if (num_calls > 0 && calls[0].client) {
-          free_non_null(grpc_call_get_peer(calls[0].client));
-        } else {
-          end(&inp);
-        }
-        break;
-      }
-      // get a calls peer on server
-      case 16: {
-        if (num_calls > 0 && calls[0].server) {
-          free_non_null(grpc_call_get_peer(calls[0].server));
+        if (active_call->type != ROOT && active_call->call != NULL) {
+          free_non_null(grpc_call_get_peer(active_call->call));
         } else {
           end(&inp);
         }
         break;
       }
       // get a channels target
-      case 17: {
+      case 15: {
         if (g_channel != NULL) {
           free_non_null(grpc_channel_get_target(g_channel));
         } else {
@@ -743,7 +731,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         break;
       }
       // send a ping on a channel
-      case 18: {
+      case 16: {
         if (g_channel != NULL) {
           pending_pings++;
           grpc_channel_ping(g_channel, cq,
@@ -754,14 +742,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         break;
       }
       // enable a tracer
-      case 19: {
+      case 17: {
         char *tracer = read_string(&inp);
         grpc_tracer_set_enabled(tracer, 1);
         gpr_free(tracer);
         break;
       }
       // disable a tracer
-      case 20: {
+      case 18: {
         char *tracer = read_string(&inp);
         grpc_tracer_set_enabled(tracer, 0);
         gpr_free(tracer);
-- 
GitLab


From 7673f7ac63d8bf7e18bdcd2888c5c57822ce938f Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 18 Apr 2016 22:44:57 -0700
Subject: [PATCH 085/525] Change string format

---
 test/core/end2end/fuzzers/api_fuzzer.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 9f11e750c7..a914482588 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -73,12 +73,18 @@ static uint8_t next_byte(input_stream *inp) {
 static void end(input_stream *inp) { inp->cur = inp->end; }
 
 static char *read_string(input_stream *inp) {
-  size_t len = next_byte(inp);
-  char *str = gpr_malloc(len + 1);
-  for (size_t i = 0; i < len; i++) {
-    str[i] = (char)next_byte(inp);
-  }
-  str[len] = 0;
+  char *str = NULL;
+  size_t cap = 0;
+  size_t sz = 0;
+  char c;
+  do {
+    if (cap == sz) {
+      cap = GPR_MAX(3*cap/2, cap+8);
+      str = gpr_realloc(str, cap);
+    }
+    c = (char)next_byte(inp);
+    str[sz++] = c;
+  } while (c != 0);
   return str;
 }
 
-- 
GitLab


From be006cbf8ac475722d77073b222f7eded4030b97 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 18 Apr 2016 22:47:54 -0700
Subject: [PATCH 086/525] Make API calls legal

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index a914482588..225c333cda 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -571,7 +571,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         if (g_channel == NULL) ok = false;
         grpc_call *parent_call = NULL;
         if (active_call->type != ROOT) {
-          if (active_call->call == NULL) {
+          if (active_call->call == NULL || active_call->type == CLIENT) {
             end(&inp);
             break;
           }
-- 
GitLab


From dbfc895ff95cb577c39c412925c3dddf5d9a34aa Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 18 Apr 2016 22:58:10 -0700
Subject: [PATCH 087/525] Stub out request call call

---
 test/core/end2end/fuzzers/api_fuzzer.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 225c333cda..707f27a0c1 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -348,7 +348,7 @@ static void free_non_null(void *p) {
 }
 
 typedef enum {
-  ROOT, CLIENT, SERVER
+  ROOT, CLIENT, SERVER, PENDING_SERVER
 } call_state_type;
 
 typedef struct call_state {
@@ -361,6 +361,7 @@ typedef struct call_state {
   char *recv_status_details;
   size_t recv_status_details_capacity;
   int cancelled;
+  grpc_call_details call_details;
 
   struct call_state *next;
   struct call_state *prev;
@@ -601,7 +602,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // queue some ops on a call
       case 12: {
-        if (active_call->type == ROOT || active_call->call == NULL) {
+        if (active_call->type ==PENDING_SERVER || active_call->type == ROOT || active_call->call == NULL) {
           end(&inp);
           break;
         }
@@ -761,6 +762,18 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         gpr_free(tracer);
         break;
       }
+      // request a server call
+      case 19: {
+        if (g_server == NULL) {
+          end(&inp);
+          break;
+        }
+        call_state *cs = new_call(active_call, PENDING_SERVER);
+        grpc_call_error error = grpc_server_request_call(g_server, &cs->call, &cs->call_details, &cs->recv_initial_metadata,
+                                                         cq, cq, NULL);
+        gpr_log(GPR_DEBUG, "%d", error);
+        break;
+      }
     }
   }
 
-- 
GitLab


From 5d9ac0c825c6117906aaea9b97f8c133c32f7d02 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 18 Apr 2016 23:36:15 -0700
Subject: [PATCH 088/525] Test

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 707f27a0c1..3c1d7bc472 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -771,7 +771,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         call_state *cs = new_call(active_call, PENDING_SERVER);
         grpc_call_error error = grpc_server_request_call(g_server, &cs->call, &cs->call_details, &cs->recv_initial_metadata,
                                                          cq, cq, NULL);
-        gpr_log(GPR_DEBUG, "%d", error);
+        GPR_ASSERT(error == GRPC_CALL_OK);
         break;
       }
     }
-- 
GitLab


From f8d7747ddd0f947c74d137f843cc32bde0e91eb3 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 19 Apr 2016 12:43:06 -0700
Subject: [PATCH 089/525] Fixed minor bug with Node generator

---
 src/compiler/node_generator.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/compiler/node_generator.cc b/src/compiler/node_generator.cc
index 7605b64531..03e1314f7b 100644
--- a/src/compiler/node_generator.cc
+++ b/src/compiler/node_generator.cc
@@ -97,10 +97,10 @@ grpc::string GetRelativePath(const grpc::string& from_file,
  * as a map of fully qualified message type name to message descriptor */
 map<grpc::string, const Descriptor*> GetAllMessages(const FileDescriptor *file) {
   map<grpc::string, const Descriptor*> message_types;
-  for (int i = 0; i < file->service_count(); i++) {
-    const ServiceDescriptor* service = file->service(i);
-    for (int j = 0; j < service->method_count(); j++) {
-      const MethodDescriptor* method = service->method(i);
+  for (int service_num = 0; service_num < file->service_count(); service_num++) {
+    const ServiceDescriptor* service = file->service(service_num);
+    for (int method_num = 0; method_num < service->method_count(); method_num++) {
+      const MethodDescriptor* method = service->method(method_num);
       const Descriptor* input_type = method->input_type();
       const Descriptor* output_type = method->output_type();
       message_types[input_type->name()] = input_type;
-- 
GitLab


From e3e6050bf47724f168b7b03b8ee9194c266204fd Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 12:55:24 -0700
Subject: [PATCH 090/525] Add a script to generate a gource log for all grpc
 repos

---
 tools/gource/gen-all-logs.sh | 47 ++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100755 tools/gource/gen-all-logs.sh

diff --git a/tools/gource/gen-all-logs.sh b/tools/gource/gen-all-logs.sh
new file mode 100755
index 0000000000..85352c514e
--- /dev/null
+++ b/tools/gource/gen-all-logs.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+outdir=`pwd`
+
+tmpdir=`mktemp -d`
+mkdir -p $tmpdir/logs
+repos="grpc grpc-common grpc-go grpc-java grpc.github.io grpc-tools homebrew-grpc grpc-docker-library"
+for repo in $repos
+do
+  cd $tmpdir
+  git clone https://github.com/grpc/$repo.git
+  cd $repo
+  gource --output-custom-log $tmpdir/logs/$repo
+  sed -i .backup "s,\|/,\|/$repo/,g" $tmpdir/logs/$repo
+done
+rm $tmpdir/logs/*.backup
+cat $tmpdir/logs/* | sort -n > $outdir/all-logs.txt
-- 
GitLab


From c3ec3f55d93e530a2c344812e734c02d49e5e7c0 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 13:01:51 -0700
Subject: [PATCH 091/525] Clean up output

---
 tools/gource/gource.sh | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/gource/gource.sh b/tools/gource/gource.sh
index fb3598b7bc..8e658d2737 100755
--- a/tools/gource/gource.sh
+++ b/tools/gource/gource.sh
@@ -28,5 +28,4 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-gource --multi-sampling -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.05 --hide filenames,dirnames $*
-
+gource --multi-sampling -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.01 --hide filenames,dirnames $* --disable-auto-rotate --file-filter '/grpc/doc/ref'
-- 
GitLab


From b345528e982b3fa3ceb455f23c7270c7f8f3f67a Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 13:40:00 -0700
Subject: [PATCH 092/525] Make videos

---
 tools/gource/create_auth_context.h | 42 ++++++++++++++++++++++++++
 tools/gource/gource.sh             | 11 ++++++-
 tools/gource/make-video.sh         | 47 ++++++++++++++++++++++++++++++
 3 files changed, 99 insertions(+), 1 deletion(-)
 create mode 100644 tools/gource/create_auth_context.h
 create mode 100755 tools/gource/make-video.sh

diff --git a/tools/gource/create_auth_context.h b/tools/gource/create_auth_context.h
new file mode 100644
index 0000000000..387407bfec
--- /dev/null
+++ b/tools/gource/create_auth_context.h
@@ -0,0 +1,42 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#include <memory>
+
+#include <grpc++/security/auth_context.h>
+#include <grpc/grpc.h>
+
+namespace grpc {
+
+std::shared_ptr<const AuthContext> CreateAuthContext(grpc_call* call);
+
+}  // namespace grpc
diff --git a/tools/gource/gource.sh b/tools/gource/gource.sh
index 8e658d2737..b3dad5d7c7 100755
--- a/tools/gource/gource.sh
+++ b/tools/gource/gource.sh
@@ -28,4 +28,13 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-gource --multi-sampling -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.01 --hide filenames,dirnames $* --disable-auto-rotate --file-filter '/grpc/doc/ref'
+gource                          \
+  --multi-sampling              \
+  -s 0.1                        \
+  --max-file-lag 0.05           \
+  --max-files 0                 \
+  -e 0.01                       \
+  --hide filenames,dirnames     \
+  --disable-auto-rotate         \
+  --file-filter '/grpc/doc/ref' \
+  $*
diff --git a/tools/gource/make-video.sh b/tools/gource/make-video.sh
new file mode 100755
index 0000000000..02d79df81b
--- /dev/null
+++ b/tools/gource/make-video.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+dst=$1
+shift
+$(dirname $0)/gource.sh \
+  --disable-progress    \
+  --stop-at-end         \
+  --output-ppm-stream - \
+  $@ |                  \
+ffmpeg                  \
+  -y                    \
+  -r 60                 \
+  -f image2pipe         \
+  -vcodec ppm           \
+  -i -                  \
+  -vcodec libx264       \
+  $dst
-- 
GitLab


From f02bada24fc67bc1a6e93108ce466d969a04afd1 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Tue, 19 Apr 2016 14:12:27 -0700
Subject: [PATCH 093/525] remove defaut case in grpc_call_error_to_string

---
 src/core/lib/surface/call.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 8deb3442de..02bc019332 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -1545,7 +1545,6 @@ const char *grpc_call_error_to_string(grpc_call_error error) {
       return "GRPC_CALL_ERROR_TOO_MANY_OPERATIONS";
     case GRPC_CALL_OK:
       return "GRPC_CALL_OK";
-    default:
-      return "GRPC_CALL_ERROR_UNKNOW";
   }
+  GPR_UNREACHABLE_CODE(return "GRPC_CALL_ERROR_UNKNOW");
 }
-- 
GitLab


From 33fd9fa09973f5c5c6865097d810f18bc54c62a8 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 16:13:21 -0700
Subject: [PATCH 094/525] Validate calls kinda

---
 test/core/end2end/fuzzers/api_fuzzer.c | 69 ++++++++++++++++----------
 1 file changed, 43 insertions(+), 26 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 3c1d7bc472..0d069347f3 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -79,7 +79,7 @@ static char *read_string(input_stream *inp) {
   char c;
   do {
     if (cap == sz) {
-      cap = GPR_MAX(3*cap/2, cap+8);
+      cap = GPR_MAX(3 * cap / 2, cap + 8);
       str = gpr_realloc(str, cap);
     }
     c = (char)next_byte(inp);
@@ -141,13 +141,15 @@ static grpc_byte_buffer *read_message(input_stream *inp) {
   return grpc_raw_byte_buffer_create(&slice, 1);
 }
 
-static void read_metadata(input_stream *inp, size_t *count, grpc_metadata **metadata) {
+static void read_metadata(input_stream *inp, size_t *count,
+                          grpc_metadata **metadata) {
   *count = next_byte(inp);
   *metadata = gpr_malloc(*count * sizeof(**metadata));
   memset(*metadata, 0, *count * sizeof(**metadata));
   for (size_t i = 0; i < *count; i++) {
     (*metadata)[i].key = read_string(inp);
-    read_buffer(inp, (char**)&(*metadata)[i].value, &(*metadata)[i].value_length);
+    read_buffer(inp, (char **)&(*metadata)[i].value,
+                &(*metadata)[i].value_length);
     (*metadata)[i].flags = read_uint32(inp);
   }
 }
@@ -347,9 +349,7 @@ static void free_non_null(void *p) {
   gpr_free(p);
 }
 
-typedef enum {
-  ROOT, CLIENT, SERVER, PENDING_SERVER
-} call_state_type;
+typedef enum { ROOT, CLIENT, SERVER, PENDING_SERVER } call_state_type;
 
 typedef struct call_state {
   call_state_type type;
@@ -371,11 +371,11 @@ static call_state *new_call(call_state *sibling, call_state_type type) {
   call_state *c = gpr_malloc(sizeof(*c));
   memset(c, 0, sizeof(*c));
   if (sibling != NULL) {
-  c->next = sibling;
-  c->prev = sibling->prev;
-  c->next->prev = c->prev->next = c;
+    c->next = sibling;
+    c->prev = sibling->prev;
+    c->next->prev = c->prev->next = c;
   } else {
-  c->next = c->prev = c;
+    c->next = c->prev = c;
   }
   c->type = type;
   return c;
@@ -602,7 +602,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // queue some ops on a call
       case 12: {
-        if (active_call->type ==PENDING_SERVER || active_call->type == ROOT || active_call->call == NULL) {
+        if (active_call->type == PENDING_SERVER || active_call->type == ROOT ||
+            active_call->call == NULL) {
           end(&inp);
           break;
         }
@@ -636,11 +637,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                   &op->data.send_status_from_server.trailing_metadata_count,
                   &op->data.send_status_from_server.trailing_metadata);
               op->data.send_status_from_server.status = next_byte(&inp);
-              op->data.send_status_from_server.status_details = read_string(&inp);
+              op->data.send_status_from_server.status_details =
+                  read_string(&inp);
               break;
             case GRPC_OP_RECV_INITIAL_METADATA:
               op->op = GRPC_OP_RECV_INITIAL_METADATA;
-              op->data.recv_initial_metadata = &active_call->recv_initial_metadata;
+              op->data.recv_initial_metadata =
+                  &active_call->recv_initial_metadata;
               break;
             case GRPC_OP_RECV_MESSAGE:
               op->op = GRPC_OP_RECV_MESSAGE;
@@ -667,9 +670,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         if (ok) {
           validator *v = create_validator(decrement, &pending_ops);
           pending_ops++;
-          grpc_call_error error = grpc_call_start_batch(
-              active_call->call, ops, num_ops,
-              v, NULL);
+          grpc_call_error error =
+              grpc_call_start_batch(active_call->call, ops, num_ops, v, NULL);
           if (error != GRPC_CALL_OK) {
             v->validate(v->arg, false);
             gpr_free(v);
@@ -681,9 +683,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           op = &ops[i];
           switch (op->op) {
             case GRPC_OP_SEND_INITIAL_METADATA:
-              for (size_t j = 0; j < op->data.send_initial_metadata.count; j++) {
-                gpr_free((void*)op->data.send_initial_metadata.metadata[j].key);
-                gpr_free((void*)op->data.send_initial_metadata.metadata[j].value);
+              for (size_t j = 0; j < op->data.send_initial_metadata.count;
+                   j++) {
+                gpr_free(
+                    (void *)op->data.send_initial_metadata.metadata[j].key);
+                gpr_free(
+                    (void *)op->data.send_initial_metadata.metadata[j].value);
               }
               gpr_free(op->data.send_initial_metadata.metadata);
               break;
@@ -691,12 +696,18 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
               grpc_byte_buffer_destroy(op->data.send_message);
               break;
             case GRPC_OP_SEND_STATUS_FROM_SERVER:
-              for (size_t j = 0; j < op->data.send_status_from_server.trailing_metadata_count; j++) {
-                gpr_free((void*)op->data.send_status_from_server.trailing_metadata[j].key);
-                gpr_free((void*)op->data.send_status_from_server.trailing_metadata[j].value);
+              for (size_t j = 0;
+                   j < op->data.send_status_from_server.trailing_metadata_count;
+                   j++) {
+                gpr_free((void *)op->data.send_status_from_server
+                             .trailing_metadata[j]
+                             .key);
+                gpr_free((void *)op->data.send_status_from_server
+                             .trailing_metadata[j]
+                             .value);
               }
               gpr_free(op->data.send_status_from_server.trailing_metadata);
-              gpr_free((void*)op->data.send_status_from_server.status_details);
+              gpr_free((void *)op->data.send_status_from_server.status_details);
               break;
             case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
             case GRPC_OP_RECV_INITIAL_METADATA:
@@ -769,9 +780,15 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           break;
         }
         call_state *cs = new_call(active_call, PENDING_SERVER);
-        grpc_call_error error = grpc_server_request_call(g_server, &cs->call, &cs->call_details, &cs->recv_initial_metadata,
-                                                         cq, cq, NULL);
-        GPR_ASSERT(error == GRPC_CALL_OK);
+        pending_ops++;
+        validator *v = create_validator(decrement, &pending_ops);
+        grpc_call_error error =
+            grpc_server_request_call(g_server, &cs->call, &cs->call_details,
+                                     &cs->recv_initial_metadata, cq, cq, v);
+        if (error != GRPC_CALL_OK) {
+          v->validate(v->arg, false);
+          gpr_free(v);
+        }
         break;
       }
     }
-- 
GitLab


From 36cce53680f5c0a3d68ce2f3d04cef8eeac3b36d Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 17:02:49 -0700
Subject: [PATCH 095/525] Delete calls

---
 test/core/end2end/fuzzers/api_fuzzer.c | 43 ++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 0d069347f3..32abca60fe 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -381,6 +381,33 @@ static call_state *new_call(call_state *sibling, call_state_type type) {
   return c;
 }
 
+static call_state *maybe_delete_call_state(call_state **active, call_state *call) {
+  call_state *next = call->next;
+  
+  if (call->call != NULL) return next;
+
+  if (call == *active) {
+    *active = call->next;
+    GPR_ASSERT(call != *active);
+  }
+
+  call->prev->next = call->next;
+  call->next->prev = call->prev;
+  grpc_metadata_array_destroy(&call->recv_initial_metadata);
+  grpc_metadata_array_destroy(&call->recv_trailing_metadata);
+  gpr_free(call->recv_status_details);
+  grpc_call_details_destroy(&call->call_details);
+  gpr_free(call);
+
+  return next;
+}
+
+static call_state *destroy_call(call_state **active, call_state *call) {
+  grpc_call_destroy(call->call);
+  call->call = NULL;
+  return maybe_delete_call_state(active, call);
+}
+
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_test_only_set_metadata_hash_seed(0);
   if (squelch) gpr_set_log_function(dont_log);
@@ -422,6 +449,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           g_server = NULL;
         }
       }
+      call_state *s = active_call;
+      do {
+        if (s->type != PENDING_SERVER && s->call != NULL) {
+          s = destroy_call(&active_call, s);
+        }
+      } while (s != active_call);
 
       g_now = gpr_time_add(g_now, gpr_time_from_seconds(1, GPR_TIMESPAN));
     }
@@ -791,6 +824,16 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         }
         break;
       }
+      // destroy a call
+      case 20: {
+        if (active_call->type != ROOT && active_call->type != PENDING_SERVER &&
+            active_call->call != NULL) {
+          destroy_call(&active_call, active_call);
+        } else {
+          end(&inp);
+        }
+        break;
+      }
     }
   }
 
-- 
GitLab


From 347e9f930832b38cc0c0519877ee3196f878a0d0 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 17:09:13 -0700
Subject: [PATCH 096/525] Dont crash retrieving peers of cancelled calls

---
 src/core/ext/client_config/subchannel_call_holder.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/core/ext/client_config/subchannel_call_holder.c b/src/core/ext/client_config/subchannel_call_holder.c
index 3db462b246..9918fbdcb4 100644
--- a/src/core/ext/client_config/subchannel_call_holder.c
+++ b/src/core/ext/client_config/subchannel_call_holder.c
@@ -252,9 +252,9 @@ char *grpc_subchannel_call_holder_get_peer(
     grpc_exec_ctx *exec_ctx, grpc_subchannel_call_holder *holder) {
   grpc_subchannel_call *subchannel_call = GET_CALL(holder);
 
-  if (subchannel_call) {
-    return grpc_subchannel_call_get_peer(exec_ctx, subchannel_call);
-  } else {
+  if (subchannel_call == NULL || subchannel_call == CANCELLED_CALL) {
     return NULL;
+  } else {
+    return grpc_subchannel_call_get_peer(exec_ctx, subchannel_call);
   }
 }
-- 
GitLab


From 1612abcd7a08e4d2398c26549fc218d2ea83ef14 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 19:43:47 -0700
Subject: [PATCH 097/525] Plug leaks in tests

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 32abca60fe..cbf98ed1f1 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -626,6 +626,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         } else {
           end(&inp);
         }
+        gpr_free(method);
+        gpr_free(host);
         break;
       }
       // switch the 'current' call
-- 
GitLab


From cb6d406591df90a00cedbc3d0641d550be0d3c3a Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 19:58:36 -0700
Subject: [PATCH 098/525] Clean up fuzzer a little

---
 test/core/end2end/fuzzers/api_fuzzer.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index cbf98ed1f1..2c7c222fb1 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -643,6 +643,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           break;
         }
         size_t num_ops = next_byte(&inp);
+        if (num_ops > 6) {
+          end(&inp);
+          break;
+        }
         grpc_op *ops = gpr_malloc(sizeof(grpc_op) * num_ops);
         bool ok = true;
         size_t i;
@@ -651,6 +655,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           op = &ops[i];
           switch (next_byte(&inp)) {
             default:
+              /* invalid value */
+              op->op = -1;
               ok = false;
               break;
             case GRPC_OP_SEND_INITIAL_METADATA:
-- 
GitLab


From 7bbcd7475756bc5c33afbc33ec04f1ec65de3249 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 20:00:16 -0700
Subject: [PATCH 099/525] Compile fix

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 2c7c222fb1..5189dad69c 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -656,7 +656,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           switch (next_byte(&inp)) {
             default:
               /* invalid value */
-              op->op = -1;
+              op->op = (grpc_op_type)-1;
               ok = false;
               break;
             case GRPC_OP_SEND_INITIAL_METADATA:
-- 
GitLab


From 22524376a1254306dd722412cfb5d56f942f12b1 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 20:16:07 -0700
Subject: [PATCH 100/525] Fix leak

---
 test/core/end2end/fuzzers/api_fuzzer.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 5189dad69c..efd438250b 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -431,7 +431,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
   while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
-         pending_channel_watches > 0 || pending_pings > 0 || pending_ops > 0) {
+         pending_channel_watches > 0 || pending_pings > 0 || pending_ops > 0 || active_call->type != ROOT || active_call->next != active_call) {
     if (is_eof(&inp)) {
       if (g_channel != NULL) {
         grpc_channel_destroy(g_channel);
@@ -847,6 +847,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
   GPR_ASSERT(g_channel == NULL);
   GPR_ASSERT(g_server == NULL);
+  GPR_ASSERT(active_call->type == ROOT);
+  GPR_ASSERT(active_call->next == active_call);
+  gpr_free(active_call);
 
   grpc_completion_queue_shutdown(cq);
   GPR_ASSERT(
-- 
GitLab


From ffae01769418fc96cdc29afa33dbb11fa2eec254 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 19 Apr 2016 20:47:50 -0700
Subject: [PATCH 101/525] Fix inf loop

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index efd438250b..bb74a816a6 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -453,6 +453,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       do {
         if (s->type != PENDING_SERVER && s->call != NULL) {
           s = destroy_call(&active_call, s);
+        } else {
+          s = s->next;
         }
       } while (s != active_call);
 
-- 
GitLab


From 69d735a2938579f8e32e20e8fe90efe0cf6f5e57 Mon Sep 17 00:00:00 2001
From: Eric Richardson <ewr@squareup.com>
Date: Wed, 20 Apr 2016 13:23:32 -0400
Subject: [PATCH 102/525] Add peer_cert method to Ruby call object

---
 src/ruby/ext/grpc/rb_call.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c
index f5fdbb2ffd..99fbfcfa24 100644
--- a/src/ruby/ext/grpc/rb_call.c
+++ b/src/ruby/ext/grpc/rb_call.c
@@ -214,6 +214,28 @@ static VALUE grpc_rb_call_get_peer(VALUE self) {
   return res;
 }
 
+/* Called to obtain the x509 cert of an authenticated peer. */
+static VALUE grpc_rb_call_get_peer_cert(VALUE self) {
+  grpc_call *call = NULL;
+  VALUE res = Qnil;
+  grpc_auth_context *ctx = NULL;
+  // char *peer_cert = NULL;
+  TypedData_Get_Struct(self, grpc_call, &grpc_call_data_type, call);
+
+  ctx = grpc_call_auth_context(call);
+
+  grpc_auth_property_iterator it =
+      grpc_auth_context_find_properties_by_name(ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME);
+  const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
+  if (prop == NULL) {
+    return Qnil;
+  }
+
+  res = rb_str_new2(prop->value);
+
+  return res;
+}
+
 /*
   call-seq:
   status = call.status
@@ -861,6 +883,7 @@ void Init_grpc_call() {
   rb_define_method(grpc_rb_cCall, "run_batch", grpc_rb_call_run_batch, 4);
   rb_define_method(grpc_rb_cCall, "cancel", grpc_rb_call_cancel, 0);
   rb_define_method(grpc_rb_cCall, "peer", grpc_rb_call_get_peer, 0);
+  rb_define_method(grpc_rb_cCall, "peer_cert", grpc_rb_call_get_peer_cert, 0);
   rb_define_method(grpc_rb_cCall, "status", grpc_rb_call_get_status, 0);
   rb_define_method(grpc_rb_cCall, "status=", grpc_rb_call_set_status, 1);
   rb_define_method(grpc_rb_cCall, "metadata", grpc_rb_call_get_metadata, 0);
-- 
GitLab


From b2f3a021348a899a84d6b3cefdfeb798bb09e7ee Mon Sep 17 00:00:00 2001
From: Eric Richardson <ewr@squareup.com>
Date: Wed, 20 Apr 2016 13:40:03 -0400
Subject: [PATCH 103/525] Allow `peer` and `peer_cert` to be used from
 ActiveCall::SingleReqView

---
 src/ruby/lib/grpc/generic/active_call.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/ruby/lib/grpc/generic/active_call.rb b/src/ruby/lib/grpc/generic/active_call.rb
index e80d24edc9..4bc95dd78a 100644
--- a/src/ruby/lib/grpc/generic/active_call.rb
+++ b/src/ruby/lib/grpc/generic/active_call.rb
@@ -59,7 +59,7 @@ module GRPC
     include Core::CallOps
     extend Forwardable
     attr_reader(:deadline)
-    def_delegators :@call, :cancel, :metadata, :write_flag, :write_flag=
+    def_delegators :@call, :cancel, :metadata, :write_flag, :write_flag=, :peer, :peer_cert
 
     # client_invoke begins a client invocation.
     #
@@ -472,7 +472,7 @@ module GRPC
     # SingleReqView limits access to an ActiveCall's methods for use in server
     # handlers that receive just one request.
     SingleReqView = view_class(:cancelled, :deadline, :metadata,
-                               :output_metadata)
+                               :output_metadata, :peer, :peer_cert)
 
     # MultiReqView limits access to an ActiveCall's methods for use in
     # server client_streamer handlers.
-- 
GitLab


From 18997430ddefe0fe8db6888b8c466e4eca6198f7 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 20 Apr 2016 10:52:31 -0700
Subject: [PATCH 104/525] Use math test to test generated code

---
 package.json                       |  24 +-
 src/compiler/node_generator.cc     |   6 +-
 src/node/.jshintignore             |   1 +
 src/node/.jshintrc                 |  28 -
 src/node/test/math/math_grpc_pb.js |  99 ++++
 src/node/test/math/math_pb.js      | 866 +++++++++++++++++++++++++++++
 src/node/test/math/math_server.js  |  40 +-
 src/node/test/math_client_test.js  |  45 +-
 templates/package.json.template    |  24 +-
 9 files changed, 1068 insertions(+), 65 deletions(-)
 create mode 100644 src/node/.jshintignore
 delete mode 100644 src/node/.jshintrc
 create mode 100644 src/node/test/math/math_grpc_pb.js
 create mode 100644 src/node/test/math/math_pb.js

diff --git a/package.json b/package.json
index 72731c0245..30d3251f76 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
     "lib": "src/node/src"
   },
   "scripts": {
-    "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js",
+    "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js --exclude-path=src/node/.jshintignore",
     "test": "./node_modules/.bin/mocha src/node/test && npm run-script lint",
     "gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json",
     "coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
@@ -72,5 +72,25 @@
     "binding.gyp"
   ],
   "main": "src/node/index.js",
-  "license": "BSD-3-Clause"
+  "license": "BSD-3-Clause",
+  "jshintConfig" : {
+    "bitwise": true,
+    "curly": true,
+    "eqeqeq": true,
+    "esnext": true,
+    "freeze": true,
+    "immed": true,
+    "indent": 2,
+    "latedef": "nofunc",
+    "maxlen": 80,
+    "mocha": true,
+    "newcap": true,
+    "node": true,
+    "noarg": true,
+    "quotmark": "single",
+    "strict": true,
+    "trailing": true,
+    "undef": true,
+    "unused": "vars"
+  }
 }
diff --git a/src/compiler/node_generator.cc b/src/compiler/node_generator.cc
index 03e1314f7b..822622cccf 100644
--- a/src/compiler/node_generator.cc
+++ b/src/compiler/node_generator.cc
@@ -138,7 +138,7 @@ void PrintMessageTransformer(const Descriptor *descriptor, Printer *out) {
   out->Print("}\n");
   out->Print("return new Buffer(arg.serializeBinary());\n");
   out->Outdent();
-  out->Print("}\n");
+  out->Print("}\n\n");
 
   // Print the deserializer
   out->Print(template_vars,
@@ -148,7 +148,7 @@ void PrintMessageTransformer(const Descriptor *descriptor, Printer *out) {
       template_vars,
       "return $node_name$.deserializeBinary(new Uint8Array(buffer_arg));\n");
   out->Outdent();
-  out->Print("}\n");
+  out->Print("}\n\n");
 }
 
 void PrintMethod(const MethodDescriptor *method, Printer *out) {
@@ -212,6 +212,8 @@ grpc::string GetImports(const FileDescriptor *file) {
 
     out.Print("// GENERATED CODE -- DO NOT EDIT!\n\n");
 
+    out.Print("'use strict';\n");
+
     out.Print("var grpc = require('grpc');\n");
     if (file->message_type_count() > 0) {
       grpc::string file_path = GetRelativePath(file->name(),
diff --git a/src/node/.jshintignore b/src/node/.jshintignore
new file mode 100644
index 0000000000..0a73e1e2b6
--- /dev/null
+++ b/src/node/.jshintignore
@@ -0,0 +1 @@
+**/*_pb.js
\ No newline at end of file
diff --git a/src/node/.jshintrc b/src/node/.jshintrc
deleted file mode 100644
index 8237e0d2b6..0000000000
--- a/src/node/.jshintrc
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "bitwise": true,
-  "curly": true,
-  "eqeqeq": true,
-  "esnext": true,
-  "freeze": true,
-  "immed": true,
-  "indent": 2,
-  "latedef": "nofunc",
-  "maxlen": 80,
-  "newcap": true,
-  "node": true,
-  "noarg": true,
-  "quotmark": "single",
-  "strict": true,
-  "trailing": true,
-  "undef": true,
-  "unused": "vars",
-  "globals": {
-    /* Mocha-provided globals */
-    "describe": false,
-    "it": false,
-    "before": false,
-    "beforeEach": false,
-    "after": false,
-    "afterEach": false
-  }
-}
diff --git a/src/node/test/math/math_grpc_pb.js b/src/node/test/math/math_grpc_pb.js
new file mode 100644
index 0000000000..083ed66913
--- /dev/null
+++ b/src/node/test/math/math_grpc_pb.js
@@ -0,0 +1,99 @@
+// GENERATED CODE -- DO NOT EDIT!
+
+'use strict';
+var grpc = require('grpc');
+var math_pb = require('./math_pb.js');
+
+function serialize_DivArgs(arg) {
+  if (!(arg instanceof math_pb.DivArgs)) {
+    throw new Error('Expected argument of type DivArgs');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_DivArgs(buffer_arg) {
+  return math_pb.DivArgs.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_DivReply(arg) {
+  if (!(arg instanceof math_pb.DivReply)) {
+    throw new Error('Expected argument of type DivReply');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_DivReply(buffer_arg) {
+  return math_pb.DivReply.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_FibArgs(arg) {
+  if (!(arg instanceof math_pb.FibArgs)) {
+    throw new Error('Expected argument of type FibArgs');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_FibArgs(buffer_arg) {
+  return math_pb.FibArgs.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_Num(arg) {
+  if (!(arg instanceof math_pb.Num)) {
+    throw new Error('Expected argument of type Num');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_Num(buffer_arg) {
+  return math_pb.Num.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+
+var MathService = exports.MathService = {
+  div: {
+    path: '/math.Math/Div',
+    requestStream: false,
+    responseStream: false,
+    requestType: math_pb.DivArgs,
+    responseType: math_pb.DivReply,
+    requestSerialize: serialize_DivArgs,
+    requestDeserialize: deserialize_DivArgs,
+    responseSerialize: serialize_DivReply,
+    responseDeserialize: deserialize_DivReply,
+  },
+  divMany: {
+    path: '/math.Math/DivMany',
+    requestStream: true,
+    responseStream: true,
+    requestType: math_pb.DivArgs,
+    responseType: math_pb.DivReply,
+    requestSerialize: serialize_DivArgs,
+    requestDeserialize: deserialize_DivArgs,
+    responseSerialize: serialize_DivReply,
+    responseDeserialize: deserialize_DivReply,
+  },
+  fib: {
+    path: '/math.Math/Fib',
+    requestStream: false,
+    responseStream: true,
+    requestType: math_pb.FibArgs,
+    responseType: math_pb.Num,
+    requestSerialize: serialize_FibArgs,
+    requestDeserialize: deserialize_FibArgs,
+    responseSerialize: serialize_Num,
+    responseDeserialize: deserialize_Num,
+  },
+  sum: {
+    path: '/math.Math/Sum',
+    requestStream: true,
+    responseStream: false,
+    requestType: math_pb.Num,
+    responseType: math_pb.Num,
+    requestSerialize: serialize_Num,
+    requestDeserialize: deserialize_Num,
+    responseSerialize: serialize_Num,
+    responseDeserialize: deserialize_Num,
+  },
+};
+
+exports.MathClient = grpc.makeGenericClientConstructor(MathService);
diff --git a/src/node/test/math/math_pb.js b/src/node/test/math/math_pb.js
new file mode 100644
index 0000000000..3489143bec
--- /dev/null
+++ b/src/node/test/math/math_pb.js
@@ -0,0 +1,866 @@
+/**
+ * @fileoverview
+ * @enhanceable
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.math.DivArgs', null, global);
+goog.exportSymbol('proto.math.DivReply', null, global);
+goog.exportSymbol('proto.math.FibArgs', null, global);
+goog.exportSymbol('proto.math.FibReply', null, global);
+goog.exportSymbol('proto.math.Num', null, global);
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.DivArgs = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.DivArgs, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.math.DivArgs.displayName = 'proto.math.DivArgs';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.DivArgs.prototype.toObject = function(opt_includeInstance) {
+  return proto.math.DivArgs.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.math.DivArgs} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.DivArgs.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    dividend: msg.getDividend(),
+    divisor: msg.getDivisor()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.DivArgs}
+ */
+proto.math.DivArgs.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.math.DivArgs;
+  return proto.math.DivArgs.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.DivArgs} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.DivArgs}
+ */
+proto.math.DivArgs.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setDividend(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setDivisor(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.DivArgs} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivArgs.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.DivArgs.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivArgs.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getDividend();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = this.getDivisor();
+  if (f !== 0) {
+    writer.writeInt64(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.DivArgs} The clone.
+ */
+proto.math.DivArgs.prototype.cloneMessage = function() {
+  return /** @type {!proto.math.DivArgs} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 dividend = 1;
+ * @return {number}
+ */
+proto.math.DivArgs.prototype.getDividend = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value  */
+proto.math.DivArgs.prototype.setDividend = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+/**
+ * optional int64 divisor = 2;
+ * @return {number}
+ */
+proto.math.DivArgs.prototype.getDivisor = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+};
+
+
+/** @param {number} value  */
+proto.math.DivArgs.prototype.setDivisor = function(value) {
+  jspb.Message.setField(this, 2, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.DivReply = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.DivReply, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.math.DivReply.displayName = 'proto.math.DivReply';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.DivReply.prototype.toObject = function(opt_includeInstance) {
+  return proto.math.DivReply.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.math.DivReply} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.DivReply.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    quotient: msg.getQuotient(),
+    remainder: msg.getRemainder()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.DivReply}
+ */
+proto.math.DivReply.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.math.DivReply;
+  return proto.math.DivReply.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.DivReply} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.DivReply}
+ */
+proto.math.DivReply.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setQuotient(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setRemainder(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.DivReply} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivReply.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.DivReply.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.DivReply.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getQuotient();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+  f = this.getRemainder();
+  if (f !== 0) {
+    writer.writeInt64(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.DivReply} The clone.
+ */
+proto.math.DivReply.prototype.cloneMessage = function() {
+  return /** @type {!proto.math.DivReply} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 quotient = 1;
+ * @return {number}
+ */
+proto.math.DivReply.prototype.getQuotient = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value  */
+proto.math.DivReply.prototype.setQuotient = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+/**
+ * optional int64 remainder = 2;
+ * @return {number}
+ */
+proto.math.DivReply.prototype.getRemainder = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+};
+
+
+/** @param {number} value  */
+proto.math.DivReply.prototype.setRemainder = function(value) {
+  jspb.Message.setField(this, 2, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.FibArgs = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.FibArgs, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.math.FibArgs.displayName = 'proto.math.FibArgs';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.FibArgs.prototype.toObject = function(opt_includeInstance) {
+  return proto.math.FibArgs.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.math.FibArgs} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.FibArgs.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    limit: msg.getLimit()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.FibArgs}
+ */
+proto.math.FibArgs.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.math.FibArgs;
+  return proto.math.FibArgs.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.FibArgs} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.FibArgs}
+ */
+proto.math.FibArgs.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setLimit(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.FibArgs} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibArgs.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.FibArgs.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibArgs.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getLimit();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.FibArgs} The clone.
+ */
+proto.math.FibArgs.prototype.cloneMessage = function() {
+  return /** @type {!proto.math.FibArgs} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 limit = 1;
+ * @return {number}
+ */
+proto.math.FibArgs.prototype.getLimit = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value  */
+proto.math.FibArgs.prototype.setLimit = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.Num = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.Num, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.math.Num.displayName = 'proto.math.Num';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.Num.prototype.toObject = function(opt_includeInstance) {
+  return proto.math.Num.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.math.Num} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.Num.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    num: msg.getNum()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.Num}
+ */
+proto.math.Num.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.math.Num;
+  return proto.math.Num.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.Num} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.Num}
+ */
+proto.math.Num.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setNum(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.Num} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.Num.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.Num.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.Num.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getNum();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.Num} The clone.
+ */
+proto.math.Num.prototype.cloneMessage = function() {
+  return /** @type {!proto.math.Num} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 num = 1;
+ * @return {number}
+ */
+proto.math.Num.prototype.getNum = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value  */
+proto.math.Num.prototype.setNum = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.math.FibReply = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.math.FibReply, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.math.FibReply.displayName = 'proto.math.FibReply';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.math.FibReply.prototype.toObject = function(opt_includeInstance) {
+  return proto.math.FibReply.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.math.FibReply} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.math.FibReply.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    count: msg.getCount()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.math.FibReply}
+ */
+proto.math.FibReply.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.math.FibReply;
+  return proto.math.FibReply.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.math.FibReply} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.math.FibReply}
+ */
+proto.math.FibReply.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt64());
+      msg.setCount(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.math.FibReply} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibReply.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.math.FibReply.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.math.FibReply.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getCount();
+  if (f !== 0) {
+    writer.writeInt64(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.math.FibReply} The clone.
+ */
+proto.math.FibReply.prototype.cloneMessage = function() {
+  return /** @type {!proto.math.FibReply} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int64 count = 1;
+ * @return {number}
+ */
+proto.math.FibReply.prototype.getCount = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value  */
+proto.math.FibReply.prototype.setCount = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+goog.object.extend(exports, proto.math);
diff --git a/src/node/test/math/math_server.js b/src/node/test/math/math_server.js
index 9f67c52ab0..fa05ed0165 100644
--- a/src/node/test/math/math_server.js
+++ b/src/node/test/math/math_server.js
@@ -34,8 +34,8 @@
 'use strict';
 
 var grpc = require('../..');
-var math = grpc.load(__dirname + '/../../../proto/math/math.proto').math;
-
+var grpcMath = require('./math_grpc_pb');
+var math = require('./math_pb');
 
 /**
  * Server function for division. Provides the /Math/DivMany and /Math/Div
@@ -46,14 +46,16 @@ var math = grpc.load(__dirname + '/../../../proto/math/math.proto').math;
  */
 function mathDiv(call, cb) {
   var req = call.request;
+  var divisor = req.getDivisor();
+  var dividend = req.getDividend();
   // Unary + is explicit coersion to integer
-  if (+req.divisor === 0) {
+  if (req.getDivisor() === 0) {
     cb(new Error('cannot divide by zero'));
   } else {
-    cb(null, {
-      quotient: req.dividend / req.divisor,
-      remainder: req.dividend % req.divisor
-    });
+    var response = new math.DivReply();
+    response.setQuotient(Math.floor(dividend / divisor));
+    response.setRemainder(dividend % divisor);
+    cb(null, response);
   }
 }
 
@@ -67,7 +69,9 @@ function mathFib(stream) {
   // Here, call is a standard writable Node object Stream
   var previous = 0, current = 1;
   for (var i = 0; i < stream.request.limit; i++) {
-    stream.write({num: current});
+    var response = new math.Num();
+    response.setNum(current);
+    stream.write(response);
     var temp = current;
     current += previous;
     previous = temp;
@@ -85,22 +89,26 @@ function mathSum(call, cb) {
   // Here, call is a standard readable Node object Stream
   var sum = 0;
   call.on('data', function(data) {
-    sum += (+data.num);
+    sum += data.getNum();
   });
   call.on('end', function() {
-    cb(null, {num: sum});
+    var response = new math.Num();
+    response.setNum(sum);
+    cb(null, response);
   });
 }
 
 function mathDivMany(stream) {
   stream.on('data', function(div_args) {
-    if (+div_args.divisor === 0) {
+    var divisor = div_args.getDivisor();
+    var dividend = div_args.getDividend();
+    if (divisor === 0) {
       stream.emit('error', new Error('cannot divide by zero'));
     } else {
-      stream.write({
-        quotient: div_args.dividend / div_args.divisor,
-        remainder: div_args.dividend % div_args.divisor
-      });
+      var response = new math.DivReply();
+      response.setQuotient(Math.floor(dividend / divisor));
+      response.setRemainder(dividend % divisor);
+      stream.write(response);
     }
   });
   stream.on('end', function() {
@@ -110,7 +118,7 @@ function mathDivMany(stream) {
 
 function getMathServer() {
   var server = new grpc.Server();
-  server.addProtoService(math.Math.service, {
+  server.addService(grpcMath.MathService, {
     div: mathDiv,
     fib: mathFib,
     sum: mathSum,
diff --git a/src/node/test/math_client_test.js b/src/node/test/math_client_test.js
index 3d44610536..34c16e070b 100644
--- a/src/node/test/math_client_test.js
+++ b/src/node/test/math_client_test.js
@@ -36,7 +36,8 @@
 var assert = require('assert');
 
 var grpc = require('..');
-var math = grpc.load(__dirname + '/../../proto/math/math.proto').math;
+var math = require('./math/math_pb');
+var MathClient = require('./math/math_grpc_pb').MathClient;
 
 /**
  * Client to use to make requests to a running server.
@@ -55,35 +56,41 @@ describe('Math client', function() {
     var port_num = server.bind('0.0.0.0:0',
                                grpc.ServerCredentials.createInsecure());
     server.start();
-    math_client = new math.Math('localhost:' + port_num,
-                                grpc.credentials.createInsecure());
+    math_client = new MathClient('localhost:' + port_num,
+                                 grpc.credentials.createInsecure());
     done();
   });
   after(function() {
     server.forceShutdown();
   });
   it('should handle a single request', function(done) {
-    var arg = {dividend: 7, divisor: 4};
+    var arg = new math.DivArgs();
+    arg.setDividend(7);
+    arg.setDivisor(4);
     math_client.div(arg, function handleDivResult(err, value) {
       assert.ifError(err);
-      assert.equal(value.quotient, 1);
-      assert.equal(value.remainder, 3);
+      assert.equal(value.getQuotient(), 1);
+      assert.equal(value.getRemainder(), 3);
       done();
     });
   });
   it('should handle an error from a unary request', function(done) {
-    var arg = {dividend: 7, divisor: 0};
+    var arg = new math.DivArgs();
+    arg.setDividend(7);
+    arg.setDivisor(0);
     math_client.div(arg, function handleDivResult(err, value) {
       assert(err);
       done();
     });
   });
   it('should handle a server streaming request', function(done) {
-    var call = math_client.fib({limit: 7});
+    var arg = new math.FibArgs();
+    arg.setLimit(7);
+    var call = math_client.fib(arg);
     var expected_results = [1, 1, 2, 3, 5, 8, 13];
     var next_expected = 0;
     call.on('data', function checkResponse(value) {
-      assert.equal(value.num, expected_results[next_expected]);
+      assert.equal(value.getNum(), expected_results[next_expected]);
       next_expected += 1;
     });
     call.on('status', function checkStatus(status) {
@@ -94,10 +101,12 @@ describe('Math client', function() {
   it('should handle a client streaming request', function(done) {
     var call = math_client.sum(function handleSumResult(err, value) {
       assert.ifError(err);
-      assert.equal(value.num, 21);
+      assert.equal(value.getNum(), 21);
     });
     for (var i = 0; i < 7; i++) {
-      call.write({'num': i});
+      var arg = new math.Num();
+      arg.setNum(i);
+      call.write(arg);
     }
     call.end();
     call.on('status', function checkStatus(status) {
@@ -107,8 +116,8 @@ describe('Math client', function() {
   });
   it('should handle a bidirectional streaming request', function(done) {
     function checkResponse(index, value) {
-      assert.equal(value.quotient, index);
-      assert.equal(value.remainder, 1);
+      assert.equal(value.getQuotient(), index);
+      assert.equal(value.getRemainder(), 1);
     }
     var call = math_client.divMany();
     var response_index = 0;
@@ -117,7 +126,10 @@ describe('Math client', function() {
       response_index += 1;
     });
     for (var i = 0; i < 7; i++) {
-      call.write({dividend: 2 * i + 1, divisor: 2});
+      var arg = new math.DivArgs();
+      arg.setDividend(2 * i + 1);
+      arg.setDivisor(2);
+      call.write(arg);
     }
     call.end();
     call.on('status', function checkStatus(status) {
@@ -131,7 +143,10 @@ describe('Math client', function() {
       assert.fail(value, undefined, 'Unexpected data response on failing call',
                   '!=');
     });
-    call.write({dividend: 7, divisor: 0});
+    var arg = new math.DivArgs();
+    arg.setDividend(7);
+    arg.setDivisor(0);
+    call.write(arg);
     call.end();
     call.on('error', function checkStatus(status) {
       done();
diff --git a/templates/package.json.template b/templates/package.json.template
index 5db270608b..564df84ebe 100644
--- a/templates/package.json.template
+++ b/templates/package.json.template
@@ -21,7 +21,7 @@
       "lib": "src/node/src"
     },
     "scripts": {
-      "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js",
+      "lint": "node ./node_modules/jshint/bin/jshint src/node/src src/node/test src/node/interop src/node/index.js --exclude-path=src/node/.jshintignore",
       "test": "./node_modules/.bin/mocha src/node/test && npm run-script lint",
       "gen_docs": "./node_modules/.bin/jsdoc -c src/node/jsdoc_conf.json",
       "coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
@@ -74,5 +74,25 @@
       "binding.gyp"
     ],
     "main": "src/node/index.js",
-    "license": "BSD-3-Clause"
+    "license": "BSD-3-Clause",
+    "jshintConfig" : {
+      "bitwise": true,
+      "curly": true,
+      "eqeqeq": true,
+      "esnext": true,
+      "freeze": true,
+      "immed": true,
+      "indent": 2,
+      "latedef": "nofunc",
+      "maxlen": 80,
+      "mocha": true,
+      "newcap": true,
+      "node": true,
+      "noarg": true,
+      "quotmark": "single",
+      "strict": true,
+      "trailing": true,
+      "undef": true,
+      "unused": "vars"
+    }
   }
-- 
GitLab


From bdfaf482a339e988a6613222d468a8826eea36c8 Mon Sep 17 00:00:00 2001
From: Eric Richardson <ewr@squareup.com>
Date: Wed, 20 Apr 2016 13:56:55 -0400
Subject: [PATCH 105/525] Short-circuit `peer_cert` if we're insecure or
 unauthenticated

---
 src/ruby/ext/grpc/rb_call.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c
index 99fbfcfa24..c8be2773fd 100644
--- a/src/ruby/ext/grpc/rb_call.c
+++ b/src/ruby/ext/grpc/rb_call.c
@@ -219,11 +219,14 @@ static VALUE grpc_rb_call_get_peer_cert(VALUE self) {
   grpc_call *call = NULL;
   VALUE res = Qnil;
   grpc_auth_context *ctx = NULL;
-  // char *peer_cert = NULL;
   TypedData_Get_Struct(self, grpc_call, &grpc_call_data_type, call);
 
   ctx = grpc_call_auth_context(call);
 
+  if (!ctx || !grpc_auth_context_peer_is_authenticated(ctx)) {
+    return Qnil;
+  }
+
   grpc_auth_property_iterator it =
       grpc_auth_context_find_properties_by_name(ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME);
   const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
@@ -233,6 +236,8 @@ static VALUE grpc_rb_call_get_peer_cert(VALUE self) {
 
   res = rb_str_new2(prop->value);
 
+  grpc_auth_context_release(ctx);
+
   return res;
 }
 
-- 
GitLab


From 792b302a64f93a2c170cdef7be085b625cf18f3c Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 20 Apr 2016 12:51:48 -0700
Subject: [PATCH 106/525] Added file that lets generated code import grpc

---
 .gitignore                              |  2 +-
 src/node/.gitignore                     |  2 --
 src/node/test/math/node_modules/grpc.js | 37 +++++++++++++++++++++++++
 3 files changed, 38 insertions(+), 3 deletions(-)
 delete mode 100644 src/node/.gitignore
 create mode 100644 src/node/test/math/node_modules/grpc.js

diff --git a/.gitignore b/.gitignore
index 502483f456..ca61bda124 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,7 @@ dist/
 *.egg
 
 # Node installation output
-node_modules/
+^node_modules
 src/node/extension_binary/
 
 # gcov coverage data
diff --git a/src/node/.gitignore b/src/node/.gitignore
deleted file mode 100644
index e3fbd98336..0000000000
--- a/src/node/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build
-node_modules
diff --git a/src/node/test/math/node_modules/grpc.js b/src/node/test/math/node_modules/grpc.js
new file mode 100644
index 0000000000..17c8fd96d9
--- /dev/null
+++ b/src/node/test/math/node_modules/grpc.js
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* This exists solely to allow the generated code to import the grpc module
+ * without using a relative path */
+
+module.exports = require('../../..');
-- 
GitLab


From 25df28ef75ba99e5d16743be7310c2920ddd8a32 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Wed, 20 Apr 2016 16:36:12 -0700
Subject: [PATCH 107/525] resolve comments

---
 src/compiler/cpp_generator.h     |  1 +
 src/compiler/cpp_plugin.cc       | 33 +------------------------
 src/compiler/generator_helpers.h | 41 ++++++++++++++++++++++++++++++++
 3 files changed, 43 insertions(+), 32 deletions(-)

diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index 1e68dfe3df..02f95f8cf6 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -65,6 +65,7 @@ struct Parameters {
 };
 
 // A common interface for objects having comments in the source.
+// Return formatted comments to be inserted in generated code.
 struct CommentHolder {
   virtual ~CommentHolder() {}
   virtual grpc::string GetLeadingComments() const = 0;
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index 6128b816a4..f1a1d80939 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -43,38 +43,7 @@
 #include "src/compiler/cpp_generator_helpers.h"
 #include "src/compiler/generator_helpers.h"
 
-grpc::string GenerateComments(const std::vector<grpc::string> &in) {
-  std::ostringstream oss;
-  for (const grpc::string &elem : in) {
-    if (elem.empty()) {
-      oss << "//\n";
-    } else if (elem[0] == ' ') {
-      oss << "//" << elem << "\n";
-    } else {
-      oss << "// " << elem << "\n";
-    }
-  }
-  return oss.str();
-}
-
-// Get leading or trailing comments in a string. Comment lines start with "// ".
-// Leading detached comments are put in in front of leading comments.
-template <typename DescriptorType>
-grpc::string GetComments(const DescriptorType *desc, bool leading) {
-  std::vector<grpc::string> out;
-  if (leading) {
-    grpc_generator::GetComment(
-        desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED, &out);
-    std::vector<grpc::string> leading;
-    grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
-                               &leading);
-    out.insert(out.end(), leading.begin(), leading.end());
-  } else {
-    grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
-                               &out);
-  }
-  return GenerateComments(out);
-}
+using grpc_generator::GetComments;
 
 class ProtoBufMethod : public grpc_cpp_generator::Method {
  public:
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index 9ba7356857..6b02b37d4f 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -34,6 +34,7 @@
 #ifndef GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
 #define GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
 
+#include <iostream>
 #include <map>
 #include <sstream>
 #include <string>
@@ -203,6 +204,7 @@ inline void GetComment(const DescriptorType *desc, CommentType type,
       out->push_back("");
     }
   } else {
+    std::cerr << "Unknown comment type " << type << std::endl;
     abort();
   }
 }
@@ -230,10 +232,49 @@ inline void GetComment(const grpc::protobuf::FileDescriptor *desc,
       out->push_back("");
     }
   } else {
+    std::cerr << "Unknown comment type " << type << std::endl;
     abort();
   }
 }
 
+namespace {
+
+// Prefix comment line with "// " and concatenate them into a string.
+grpc::string GenerateComments(const std::vector<grpc::string> &in) {
+  std::ostringstream oss;
+  for (const grpc::string &elem : in) {
+    if (elem.empty()) {
+      oss << "//\n";
+    } else if (elem[0] == ' ') {
+      oss << "//" << elem << "\n";
+    } else {
+      oss << "// " << elem << "\n";
+    }
+  }
+  return oss.str();
+}
+
+}  // namespace
+
+// Get leading or trailing comments in a string. Comment lines start with "// ".
+// Leading detached comments are put in in front of leading comments.
+template <typename DescriptorType>
+inline grpc::string GetComments(const DescriptorType *desc, bool leading) {
+  std::vector<grpc::string> out;
+  if (leading) {
+    grpc_generator::GetComment(
+        desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED, &out);
+    std::vector<grpc::string> leading;
+    grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
+                               &leading);
+    out.insert(out.end(), leading.begin(), leading.end());
+  } else {
+    grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
+                               &out);
+  }
+  return GenerateComments(out);
+}
+
 }  // namespace grpc_generator
 
 #endif  // GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
-- 
GitLab


From 7151af94659f935c5e1f45b117caf7b33b5f2471 Mon Sep 17 00:00:00 2001
From: Matthew Iselin <miselin@google.com>
Date: Wed, 6 Apr 2016 16:32:08 -0700
Subject: [PATCH 108/525] Allow grpc_http_parser to optionally accept a wider
 range of line endings.

---
 src/core/lib/http/parser.c   | 35 +++++++++++++++++++++++++++++------
 src/core/lib/http/parser.h   |  1 +
 test/core/http/parser_test.c | 11 +++++++++++
 3 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/src/core/lib/http/parser.c b/src/core/lib/http/parser.c
index 01d17fb623..dd9fab9151 100644
--- a/src/core/lib/http/parser.c
+++ b/src/core/lib/http/parser.c
@@ -171,8 +171,8 @@ static int add_header(grpc_http_parser *parser) {
   while (cur != end && (*cur == ' ' || *cur == '\t')) {
     cur++;
   }
-  GPR_ASSERT(end - cur >= 2);
-  hdr.value = buf2str(cur, (size_t)(end - cur) - 2);
+  GPR_ASSERT((size_t)(end - cur) >= parser->cur_line_end_length);
+  hdr.value = buf2str(cur, (size_t)(end - cur) - parser->cur_line_end_length);
 
   if (parser->type == GRPC_HTTP_RESPONSE) {
     hdr_count = &parser->http.response.hdr_count;
@@ -207,7 +207,7 @@ static int finish_line(grpc_http_parser *parser) {
       parser->state = GRPC_HTTP_HEADERS;
       break;
     case GRPC_HTTP_HEADERS:
-      if (parser->cur_line_length == 2) {
+      if (parser->cur_line_length == parser->cur_line_end_length) {
         parser->state = GRPC_HTTP_BODY;
         break;
       }
@@ -247,6 +247,30 @@ static int addbyte_body(grpc_http_parser *parser, uint8_t byte) {
   return 1;
 }
 
+static int check_line(grpc_http_parser *parser) {
+  if (parser->cur_line_length >= 2 &&
+      parser->cur_line[parser->cur_line_length - 2] == '\r' &&
+      parser->cur_line[parser->cur_line_length - 1] == '\n') {
+    return 1;
+  }
+
+  // HTTP request with \n\r line termiantors.
+  else if (parser->cur_line_length >= 2 &&
+           parser->cur_line[parser->cur_line_length - 2] == '\n' &&
+           parser->cur_line[parser->cur_line_length - 1] == '\r') {
+    return 1;
+  }
+
+  // HTTP request with only \n line terminators.
+  else if (parser->cur_line_length >= 1 &&
+           parser->cur_line[parser->cur_line_length - 1] == '\n') {
+    parser->cur_line_end_length = 1;
+    return 1;
+  }
+
+  return 0;
+}
+
 static int addbyte(grpc_http_parser *parser, uint8_t byte) {
   switch (parser->state) {
     case GRPC_HTTP_FIRST_LINE:
@@ -259,9 +283,7 @@ static int addbyte(grpc_http_parser *parser, uint8_t byte) {
       }
       parser->cur_line[parser->cur_line_length] = byte;
       parser->cur_line_length++;
-      if (parser->cur_line_length >= 2 &&
-          parser->cur_line[parser->cur_line_length - 2] == '\r' &&
-          parser->cur_line[parser->cur_line_length - 1] == '\n') {
+      if (check_line(parser)) {
         return finish_line(parser);
       } else {
         return 1;
@@ -277,6 +299,7 @@ void grpc_http_parser_init(grpc_http_parser *parser) {
   memset(parser, 0, sizeof(*parser));
   parser->state = GRPC_HTTP_FIRST_LINE;
   parser->type = GRPC_HTTP_UNKNOWN;
+  parser->cur_line_end_length = 2;
 }
 
 void grpc_http_parser_destroy(grpc_http_parser *parser) {
diff --git a/src/core/lib/http/parser.h b/src/core/lib/http/parser.h
index 8bd73f649a..f0dc06cf3a 100644
--- a/src/core/lib/http/parser.h
+++ b/src/core/lib/http/parser.h
@@ -105,6 +105,7 @@ typedef struct {
 
   uint8_t cur_line[GRPC_HTTP_PARSER_MAX_HEADER_LENGTH];
   size_t cur_line_length;
+  size_t cur_line_end_length;
 } grpc_http_parser;
 
 void grpc_http_parser_init(grpc_http_parser *parser);
diff --git a/test/core/http/parser_test.c b/test/core/http/parser_test.c
index 10936754d9..7fdf60cc2b 100644
--- a/test/core/http/parser_test.c
+++ b/test/core/http/parser_test.c
@@ -238,6 +238,11 @@ int main(int argc, char **argv) {
                   "\r\n"
                   "hello world!",
                   200, "hello world!", "xyz", "abc", NULL);
+    test_succeeds(split_modes[i],
+                  "HTTP/1.1 200 OK\n"
+                  "\n"
+                  "abc",
+                  200, "abc", NULL);
     test_request_succeeds(split_modes[i],
                           "GET / HTTP/1.0\r\n"
                           "\r\n",
@@ -264,6 +269,11 @@ int main(int argc, char **argv) {
                           "xyz",
                           "GET", GRPC_HTTP_HTTP10, "/", "xyz", "xyz", "abc",
                           NULL);
+    test_request_succeeds(split_modes[i],
+                          "GET / HTTP/1.0\n"
+                          "\n"
+                          "xyz",
+                          "GET", GRPC_HTTP_HTTP10, "/", "xyz", NULL);
     test_fails(split_modes[i], "HTTP/1.0\r\n");
     test_fails(split_modes[i], "HTTP/1.2\r\n");
     test_fails(split_modes[i], "HTTP/1.0 000 XYX\r\n");
@@ -281,6 +291,7 @@ int main(int argc, char **argv) {
     test_fails(split_modes[i], "GET / HTTP/0.0\r\n");
     test_fails(split_modes[i], "GET / ____/1.0\r\n");
     test_fails(split_modes[i], "GET / HTTP/1.2\r\n");
+    test_fails(split_modes[i], "GET / HTTP/1.0\n");
 
     tmp1 = gpr_malloc(2 * GRPC_HTTP_PARSER_MAX_HEADER_LENGTH);
     memset(tmp1, 'a', 2 * GRPC_HTTP_PARSER_MAX_HEADER_LENGTH - 1);
-- 
GitLab


From d8887c061c90cf055a25cc80fc134da6e9f436ae Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 21 Apr 2016 00:03:58 -0700
Subject: [PATCH 109/525] Fix compilation error.

---
 src/compiler/generator_helpers.h | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index 6b02b37d4f..8aa875f959 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -237,10 +237,8 @@ inline void GetComment(const grpc::protobuf::FileDescriptor *desc,
   }
 }
 
-namespace {
-
 // Prefix comment line with "// " and concatenate them into a string.
-grpc::string GenerateComments(const std::vector<grpc::string> &in) {
+inline grpc::string GenerateComments(const std::vector<grpc::string> &in) {
   std::ostringstream oss;
   for (const grpc::string &elem : in) {
     if (elem.empty()) {
@@ -254,8 +252,6 @@ grpc::string GenerateComments(const std::vector<grpc::string> &in) {
   return oss.str();
 }
 
-}  // namespace
-
 // Get leading or trailing comments in a string. Comment lines start with "// ".
 // Leading detached comments are put in in front of leading comments.
 template <typename DescriptorType>
-- 
GitLab


From 8ecd4d7aa6a522c68ba96d0362a778cdc98f4550 Mon Sep 17 00:00:00 2001
From: vjpai <vpai@google.com>
Date: Thu, 21 Apr 2016 00:33:46 -0700
Subject: [PATCH 110/525] Add support for an "OTHER" value in client_type,
 server_type, and add a string to represent the name of the desired system
 api. This allows expansion without putting an upper-limit based on some
 foressen variants.

---
 src/csharp/Grpc.IntegrationTesting/Control.cs | 160 +++++++++++++-----
 src/proto/grpc/testing/control.proto          |  10 ++
 .../qps/src/proto/grpc/testing/control.rb     |   4 +
 3 files changed, 131 insertions(+), 43 deletions(-)

diff --git a/src/csharp/Grpc.IntegrationTesting/Control.cs b/src/csharp/Grpc.IntegrationTesting/Control.cs
index 003d2428fa..3fa8d43f38 100644
--- a/src/csharp/Grpc.IntegrationTesting/Control.cs
+++ b/src/csharp/Grpc.IntegrationTesting/Control.cs
@@ -31,7 +31,7 @@ namespace Grpc.Testing {
             "cnBjLnRlc3RpbmcuQ2xvc2VkTG9vcFBhcmFtc0gAEi4KB3BvaXNzb24YAiAB",
             "KAsyGy5ncnBjLnRlc3RpbmcuUG9pc3NvblBhcmFtc0gAQgYKBGxvYWQiQwoO",
             "U2VjdXJpdHlQYXJhbXMSEwoLdXNlX3Rlc3RfY2EYASABKAgSHAoUc2VydmVy",
-            "X2hvc3Rfb3ZlcnJpZGUYAiABKAki1gMKDENsaWVudENvbmZpZxIWCg5zZXJ2",
+            "X2hvc3Rfb3ZlcnJpZGUYAiABKAki8AMKDENsaWVudENvbmZpZxIWCg5zZXJ2",
             "ZXJfdGFyZ2V0cxgBIAMoCRItCgtjbGllbnRfdHlwZRgCIAEoDjIYLmdycGMu",
             "dGVzdGluZy5DbGllbnRUeXBlEjUKD3NlY3VyaXR5X3BhcmFtcxgDIAEoCzIc",
             "LmdycGMudGVzdGluZy5TZWN1cml0eVBhcmFtcxIkChxvdXRzdGFuZGluZ19y",
@@ -41,46 +41,48 @@ namespace Grpc.Testing {
             "ASgLMhguZ3JwYy50ZXN0aW5nLkxvYWRQYXJhbXMSMwoOcGF5bG9hZF9jb25m",
             "aWcYCyABKAsyGy5ncnBjLnRlc3RpbmcuUGF5bG9hZENvbmZpZxI3ChBoaXN0",
             "b2dyYW1fcGFyYW1zGAwgASgLMh0uZ3JwYy50ZXN0aW5nLkhpc3RvZ3JhbVBh",
-            "cmFtcxIRCgljb3JlX2xpc3QYDSADKAUSEgoKY29yZV9saW1pdBgOIAEoBSI4",
-            "CgxDbGllbnRTdGF0dXMSKAoFc3RhdHMYASABKAsyGS5ncnBjLnRlc3Rpbmcu",
-            "Q2xpZW50U3RhdHMiFQoETWFyaxINCgVyZXNldBgBIAEoCCJoCgpDbGllbnRB",
-            "cmdzEisKBXNldHVwGAEgASgLMhouZ3JwYy50ZXN0aW5nLkNsaWVudENvbmZp",
-            "Z0gAEiIKBG1hcmsYAiABKAsyEi5ncnBjLnRlc3RpbmcuTWFya0gAQgkKB2Fy",
-            "Z3R5cGUi/AEKDFNlcnZlckNvbmZpZxItCgtzZXJ2ZXJfdHlwZRgBIAEoDjIY",
-            "LmdycGMudGVzdGluZy5TZXJ2ZXJUeXBlEjUKD3NlY3VyaXR5X3BhcmFtcxgC",
-            "IAEoCzIcLmdycGMudGVzdGluZy5TZWN1cml0eVBhcmFtcxIMCgRwb3J0GAQg",
-            "ASgFEhwKFGFzeW5jX3NlcnZlcl90aHJlYWRzGAcgASgFEhIKCmNvcmVfbGlt",
-            "aXQYCCABKAUSMwoOcGF5bG9hZF9jb25maWcYCSABKAsyGy5ncnBjLnRlc3Rp",
-            "bmcuUGF5bG9hZENvbmZpZxIRCgljb3JlX2xpc3QYCiADKAUiaAoKU2VydmVy",
-            "QXJncxIrCgVzZXR1cBgBIAEoCzIaLmdycGMudGVzdGluZy5TZXJ2ZXJDb25m",
-            "aWdIABIiCgRtYXJrGAIgASgLMhIuZ3JwYy50ZXN0aW5nLk1hcmtIAEIJCgdh",
-            "cmd0eXBlIlUKDFNlcnZlclN0YXR1cxIoCgVzdGF0cxgBIAEoCzIZLmdycGMu",
-            "dGVzdGluZy5TZXJ2ZXJTdGF0cxIMCgRwb3J0GAIgASgFEg0KBWNvcmVzGAMg",
-            "ASgFIg0KC0NvcmVSZXF1ZXN0Ih0KDENvcmVSZXNwb25zZRINCgVjb3JlcxgB",
-            "IAEoBSIGCgRWb2lkIv0BCghTY2VuYXJpbxIMCgRuYW1lGAEgASgJEjEKDWNs",
-            "aWVudF9jb25maWcYAiABKAsyGi5ncnBjLnRlc3RpbmcuQ2xpZW50Q29uZmln",
-            "EhMKC251bV9jbGllbnRzGAMgASgFEjEKDXNlcnZlcl9jb25maWcYBCABKAsy",
-            "Gi5ncnBjLnRlc3RpbmcuU2VydmVyQ29uZmlnEhMKC251bV9zZXJ2ZXJzGAUg",
-            "ASgFEhYKDndhcm11cF9zZWNvbmRzGAYgASgFEhkKEWJlbmNobWFya19zZWNv",
-            "bmRzGAcgASgFEiAKGHNwYXduX2xvY2FsX3dvcmtlcl9jb3VudBgIIAEoBSI2",
-            "CglTY2VuYXJpb3MSKQoJc2NlbmFyaW9zGAEgAygLMhYuZ3JwYy50ZXN0aW5n",
-            "LlNjZW5hcmlvIpICChVTY2VuYXJpb1Jlc3VsdFN1bW1hcnkSCwoDcXBzGAEg",
-            "ASgBEhsKE3Fwc19wZXJfc2VydmVyX2NvcmUYAiABKAESGgoSc2VydmVyX3N5",
-            "c3RlbV90aW1lGAMgASgBEhgKEHNlcnZlcl91c2VyX3RpbWUYBCABKAESGgoS",
-            "Y2xpZW50X3N5c3RlbV90aW1lGAUgASgBEhgKEGNsaWVudF91c2VyX3RpbWUY",
-            "BiABKAESEgoKbGF0ZW5jeV81MBgHIAEoARISCgpsYXRlbmN5XzkwGAggASgB",
-            "EhIKCmxhdGVuY3lfOTUYCSABKAESEgoKbGF0ZW5jeV85ORgKIAEoARITCgts",
-            "YXRlbmN5Xzk5ORgLIAEoASKYAgoOU2NlbmFyaW9SZXN1bHQSKAoIc2NlbmFy",
-            "aW8YASABKAsyFi5ncnBjLnRlc3RpbmcuU2NlbmFyaW8SLgoJbGF0ZW5jaWVz",
-            "GAIgASgLMhsuZ3JwYy50ZXN0aW5nLkhpc3RvZ3JhbURhdGESLwoMY2xpZW50",
-            "X3N0YXRzGAMgAygLMhkuZ3JwYy50ZXN0aW5nLkNsaWVudFN0YXRzEi8KDHNl",
-            "cnZlcl9zdGF0cxgEIAMoCzIZLmdycGMudGVzdGluZy5TZXJ2ZXJTdGF0cxIU",
-            "CgxzZXJ2ZXJfY29yZXMYBSADKAUSNAoHc3VtbWFyeRgGIAEoCzIjLmdycGMu",
-            "dGVzdGluZy5TY2VuYXJpb1Jlc3VsdFN1bW1hcnkqLwoKQ2xpZW50VHlwZRIP",
-            "CgtTWU5DX0NMSUVOVBAAEhAKDEFTWU5DX0NMSUVOVBABKkkKClNlcnZlclR5",
-            "cGUSDwoLU1lOQ19TRVJWRVIQABIQCgxBU1lOQ19TRVJWRVIQARIYChRBU1lO",
-            "Q19HRU5FUklDX1NFUlZFUhACKiMKB1JwY1R5cGUSCQoFVU5BUlkQABINCglT",
-            "VFJFQU1JTkcQAWIGcHJvdG8z"));
+            "cmFtcxIRCgljb3JlX2xpc3QYDSADKAUSEgoKY29yZV9saW1pdBgOIAEoBRIY",
+            "ChBvdGhlcl9jbGllbnRfYXBpGA8gASgJIjgKDENsaWVudFN0YXR1cxIoCgVz",
+            "dGF0cxgBIAEoCzIZLmdycGMudGVzdGluZy5DbGllbnRTdGF0cyIVCgRNYXJr",
+            "Eg0KBXJlc2V0GAEgASgIImgKCkNsaWVudEFyZ3MSKwoFc2V0dXAYASABKAsy",
+            "Gi5ncnBjLnRlc3RpbmcuQ2xpZW50Q29uZmlnSAASIgoEbWFyaxgCIAEoCzIS",
+            "LmdycGMudGVzdGluZy5NYXJrSABCCQoHYXJndHlwZSKWAgoMU2VydmVyQ29u",
+            "ZmlnEi0KC3NlcnZlcl90eXBlGAEgASgOMhguZ3JwYy50ZXN0aW5nLlNlcnZl",
+            "clR5cGUSNQoPc2VjdXJpdHlfcGFyYW1zGAIgASgLMhwuZ3JwYy50ZXN0aW5n",
+            "LlNlY3VyaXR5UGFyYW1zEgwKBHBvcnQYBCABKAUSHAoUYXN5bmNfc2VydmVy",
+            "X3RocmVhZHMYByABKAUSEgoKY29yZV9saW1pdBgIIAEoBRIzCg5wYXlsb2Fk",
+            "X2NvbmZpZxgJIAEoCzIbLmdycGMudGVzdGluZy5QYXlsb2FkQ29uZmlnEhEK",
+            "CWNvcmVfbGlzdBgKIAMoBRIYChBvdGhlcl9zZXJ2ZXJfYXBpGAsgASgJImgK",
+            "ClNlcnZlckFyZ3MSKwoFc2V0dXAYASABKAsyGi5ncnBjLnRlc3RpbmcuU2Vy",
+            "dmVyQ29uZmlnSAASIgoEbWFyaxgCIAEoCzISLmdycGMudGVzdGluZy5NYXJr",
+            "SABCCQoHYXJndHlwZSJVCgxTZXJ2ZXJTdGF0dXMSKAoFc3RhdHMYASABKAsy",
+            "GS5ncnBjLnRlc3RpbmcuU2VydmVyU3RhdHMSDAoEcG9ydBgCIAEoBRINCgVj",
+            "b3JlcxgDIAEoBSINCgtDb3JlUmVxdWVzdCIdCgxDb3JlUmVzcG9uc2USDQoF",
+            "Y29yZXMYASABKAUiBgoEVm9pZCL9AQoIU2NlbmFyaW8SDAoEbmFtZRgBIAEo",
+            "CRIxCg1jbGllbnRfY29uZmlnGAIgASgLMhouZ3JwYy50ZXN0aW5nLkNsaWVu",
+            "dENvbmZpZxITCgtudW1fY2xpZW50cxgDIAEoBRIxCg1zZXJ2ZXJfY29uZmln",
+            "GAQgASgLMhouZ3JwYy50ZXN0aW5nLlNlcnZlckNvbmZpZxITCgtudW1fc2Vy",
+            "dmVycxgFIAEoBRIWCg53YXJtdXBfc2Vjb25kcxgGIAEoBRIZChFiZW5jaG1h",
+            "cmtfc2Vjb25kcxgHIAEoBRIgChhzcGF3bl9sb2NhbF93b3JrZXJfY291bnQY",
+            "CCABKAUiNgoJU2NlbmFyaW9zEikKCXNjZW5hcmlvcxgBIAMoCzIWLmdycGMu",
+            "dGVzdGluZy5TY2VuYXJpbyKSAgoVU2NlbmFyaW9SZXN1bHRTdW1tYXJ5EgsK",
+            "A3FwcxgBIAEoARIbChNxcHNfcGVyX3NlcnZlcl9jb3JlGAIgASgBEhoKEnNl",
+            "cnZlcl9zeXN0ZW1fdGltZRgDIAEoARIYChBzZXJ2ZXJfdXNlcl90aW1lGAQg",
+            "ASgBEhoKEmNsaWVudF9zeXN0ZW1fdGltZRgFIAEoARIYChBjbGllbnRfdXNl",
+            "cl90aW1lGAYgASgBEhIKCmxhdGVuY3lfNTAYByABKAESEgoKbGF0ZW5jeV85",
+            "MBgIIAEoARISCgpsYXRlbmN5Xzk1GAkgASgBEhIKCmxhdGVuY3lfOTkYCiAB",
+            "KAESEwoLbGF0ZW5jeV85OTkYCyABKAEimAIKDlNjZW5hcmlvUmVzdWx0EigK",
+            "CHNjZW5hcmlvGAEgASgLMhYuZ3JwYy50ZXN0aW5nLlNjZW5hcmlvEi4KCWxh",
+            "dGVuY2llcxgCIAEoCzIbLmdycGMudGVzdGluZy5IaXN0b2dyYW1EYXRhEi8K",
+            "DGNsaWVudF9zdGF0cxgDIAMoCzIZLmdycGMudGVzdGluZy5DbGllbnRTdGF0",
+            "cxIvCgxzZXJ2ZXJfc3RhdHMYBCADKAsyGS5ncnBjLnRlc3RpbmcuU2VydmVy",
+            "U3RhdHMSFAoMc2VydmVyX2NvcmVzGAUgAygFEjQKB3N1bW1hcnkYBiABKAsy",
+            "Iy5ncnBjLnRlc3RpbmcuU2NlbmFyaW9SZXN1bHRTdW1tYXJ5KkEKCkNsaWVu",
+            "dFR5cGUSDwoLU1lOQ19DTElFTlQQABIQCgxBU1lOQ19DTElFTlQQARIQCgxP",
+            "VEhFUl9DTElFTlQQAipbCgpTZXJ2ZXJUeXBlEg8KC1NZTkNfU0VSVkVSEAAS",
+            "EAoMQVNZTkNfU0VSVkVSEAESGAoUQVNZTkNfR0VORVJJQ19TRVJWRVIQAhIQ",
+            "CgxPVEhFUl9TRVJWRVIQAyojCgdScGNUeXBlEgkKBVVOQVJZEAASDQoJU1RS",
+            "RUFNSU5HEAFiBnByb3RvMw=="));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { global::Grpc.Testing.PayloadsReflection.Descriptor, global::Grpc.Testing.StatsReflection.Descriptor, },
           new pbr::GeneratedCodeInfo(new[] {typeof(global::Grpc.Testing.ClientType), typeof(global::Grpc.Testing.ServerType), typeof(global::Grpc.Testing.RpcType), }, new pbr::GeneratedCodeInfo[] {
@@ -88,11 +90,11 @@ namespace Grpc.Testing {
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ClosedLoopParams), global::Grpc.Testing.ClosedLoopParams.Parser, null, null, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.LoadParams), global::Grpc.Testing.LoadParams.Parser, new[]{ "ClosedLoop", "Poisson" }, new[]{ "Load" }, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.SecurityParams), global::Grpc.Testing.SecurityParams.Parser, new[]{ "UseTestCa", "ServerHostOverride" }, null, null, null),
-            new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ClientConfig), global::Grpc.Testing.ClientConfig.Parser, new[]{ "ServerTargets", "ClientType", "SecurityParams", "OutstandingRpcsPerChannel", "ClientChannels", "AsyncClientThreads", "RpcType", "LoadParams", "PayloadConfig", "HistogramParams", "CoreList", "CoreLimit" }, null, null, null),
+            new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ClientConfig), global::Grpc.Testing.ClientConfig.Parser, new[]{ "ServerTargets", "ClientType", "SecurityParams", "OutstandingRpcsPerChannel", "ClientChannels", "AsyncClientThreads", "RpcType", "LoadParams", "PayloadConfig", "HistogramParams", "CoreList", "CoreLimit", "OtherClientApi" }, null, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ClientStatus), global::Grpc.Testing.ClientStatus.Parser, new[]{ "Stats" }, null, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.Mark), global::Grpc.Testing.Mark.Parser, new[]{ "Reset" }, null, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ClientArgs), global::Grpc.Testing.ClientArgs.Parser, new[]{ "Setup", "Mark" }, new[]{ "Argtype" }, null, null),
-            new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ServerConfig), global::Grpc.Testing.ServerConfig.Parser, new[]{ "ServerType", "SecurityParams", "Port", "AsyncServerThreads", "CoreLimit", "PayloadConfig", "CoreList" }, null, null, null),
+            new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ServerConfig), global::Grpc.Testing.ServerConfig.Parser, new[]{ "ServerType", "SecurityParams", "Port", "AsyncServerThreads", "CoreLimit", "PayloadConfig", "CoreList", "OtherServerApi" }, null, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ServerArgs), global::Grpc.Testing.ServerArgs.Parser, new[]{ "Setup", "Mark" }, new[]{ "Argtype" }, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.ServerStatus), global::Grpc.Testing.ServerStatus.Parser, new[]{ "Stats", "Port", "Cores" }, null, null, null),
             new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.CoreRequest), global::Grpc.Testing.CoreRequest.Parser, null, null, null, null),
@@ -109,14 +111,26 @@ namespace Grpc.Testing {
   }
   #region Enums
   public enum ClientType {
+    /// <summary>
+    ///  Many languages support a basic distinction between using
+    ///  sync or async client, and this allows the specification
+    /// </summary>
     SYNC_CLIENT = 0,
     ASYNC_CLIENT = 1,
+    /// <summary>
+    ///  used for some language-specific variants
+    /// </summary>
+    OTHER_CLIENT = 2,
   }
 
   public enum ServerType {
     SYNC_SERVER = 0,
     ASYNC_SERVER = 1,
     ASYNC_GENERIC_SERVER = 2,
+    /// <summary>
+    ///  used for some language-specific variants
+    /// </summary>
+    OTHER_SERVER = 3,
   }
 
   public enum RpcType {
@@ -651,6 +665,7 @@ namespace Grpc.Testing {
       HistogramParams = other.histogramParams_ != null ? other.HistogramParams.Clone() : null;
       coreList_ = other.coreList_.Clone();
       coreLimit_ = other.coreLimit_;
+      otherClientApi_ = other.otherClientApi_;
     }
 
     public ClientConfig Clone() {
@@ -795,6 +810,19 @@ namespace Grpc.Testing {
       }
     }
 
+    /// <summary>Field number for the "other_client_api" field.</summary>
+    public const int OtherClientApiFieldNumber = 15;
+    private string otherClientApi_ = "";
+    /// <summary>
+    ///  If we use an OTHER_CLIENT client_type, this string gives more detail
+    /// </summary>
+    public string OtherClientApi {
+      get { return otherClientApi_; }
+      set {
+        otherClientApi_ = pb::Preconditions.CheckNotNull(value, "value");
+      }
+    }
+
     public override bool Equals(object other) {
       return Equals(other as ClientConfig);
     }
@@ -818,6 +846,7 @@ namespace Grpc.Testing {
       if (!object.Equals(HistogramParams, other.HistogramParams)) return false;
       if(!coreList_.Equals(other.coreList_)) return false;
       if (CoreLimit != other.CoreLimit) return false;
+      if (OtherClientApi != other.OtherClientApi) return false;
       return true;
     }
 
@@ -835,6 +864,7 @@ namespace Grpc.Testing {
       if (histogramParams_ != null) hash ^= HistogramParams.GetHashCode();
       hash ^= coreList_.GetHashCode();
       if (CoreLimit != 0) hash ^= CoreLimit.GetHashCode();
+      if (OtherClientApi.Length != 0) hash ^= OtherClientApi.GetHashCode();
       return hash;
     }
 
@@ -885,6 +915,10 @@ namespace Grpc.Testing {
         output.WriteRawTag(112);
         output.WriteInt32(CoreLimit);
       }
+      if (OtherClientApi.Length != 0) {
+        output.WriteRawTag(122);
+        output.WriteString(OtherClientApi);
+      }
     }
 
     public int CalculateSize() {
@@ -921,6 +955,9 @@ namespace Grpc.Testing {
       if (CoreLimit != 0) {
         size += 1 + pb::CodedOutputStream.ComputeInt32Size(CoreLimit);
       }
+      if (OtherClientApi.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(OtherClientApi);
+      }
       return size;
     }
 
@@ -972,6 +1009,9 @@ namespace Grpc.Testing {
       if (other.CoreLimit != 0) {
         CoreLimit = other.CoreLimit;
       }
+      if (other.OtherClientApi.Length != 0) {
+        OtherClientApi = other.OtherClientApi;
+      }
     }
 
     public void MergeFrom(pb::CodedInputStream input) {
@@ -1042,6 +1082,10 @@ namespace Grpc.Testing {
             CoreLimit = input.ReadInt32();
             break;
           }
+          case 122: {
+            OtherClientApi = input.ReadString();
+            break;
+          }
         }
       }
     }
@@ -1462,6 +1506,7 @@ namespace Grpc.Testing {
       coreLimit_ = other.coreLimit_;
       PayloadConfig = other.payloadConfig_ != null ? other.PayloadConfig.Clone() : null;
       coreList_ = other.coreList_.Clone();
+      otherServerApi_ = other.otherServerApi_;
     }
 
     public ServerConfig Clone() {
@@ -1552,6 +1597,19 @@ namespace Grpc.Testing {
       get { return coreList_; }
     }
 
+    /// <summary>Field number for the "other_server_api" field.</summary>
+    public const int OtherServerApiFieldNumber = 11;
+    private string otherServerApi_ = "";
+    /// <summary>
+    ///  If we use an OTHER_SERVER client_type, this string gives more detail
+    /// </summary>
+    public string OtherServerApi {
+      get { return otherServerApi_; }
+      set {
+        otherServerApi_ = pb::Preconditions.CheckNotNull(value, "value");
+      }
+    }
+
     public override bool Equals(object other) {
       return Equals(other as ServerConfig);
     }
@@ -1570,6 +1628,7 @@ namespace Grpc.Testing {
       if (CoreLimit != other.CoreLimit) return false;
       if (!object.Equals(PayloadConfig, other.PayloadConfig)) return false;
       if(!coreList_.Equals(other.coreList_)) return false;
+      if (OtherServerApi != other.OtherServerApi) return false;
       return true;
     }
 
@@ -1582,6 +1641,7 @@ namespace Grpc.Testing {
       if (CoreLimit != 0) hash ^= CoreLimit.GetHashCode();
       if (payloadConfig_ != null) hash ^= PayloadConfig.GetHashCode();
       hash ^= coreList_.GetHashCode();
+      if (OtherServerApi.Length != 0) hash ^= OtherServerApi.GetHashCode();
       return hash;
     }
 
@@ -1615,6 +1675,10 @@ namespace Grpc.Testing {
         output.WriteMessage(PayloadConfig);
       }
       coreList_.WriteTo(output, _repeated_coreList_codec);
+      if (OtherServerApi.Length != 0) {
+        output.WriteRawTag(90);
+        output.WriteString(OtherServerApi);
+      }
     }
 
     public int CalculateSize() {
@@ -1638,6 +1702,9 @@ namespace Grpc.Testing {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(PayloadConfig);
       }
       size += coreList_.CalculateSize(_repeated_coreList_codec);
+      if (OtherServerApi.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(OtherServerApi);
+      }
       return size;
     }
 
@@ -1670,6 +1737,9 @@ namespace Grpc.Testing {
         PayloadConfig.MergeFrom(other.PayloadConfig);
       }
       coreList_.Add(other.coreList_);
+      if (other.OtherServerApi.Length != 0) {
+        OtherServerApi = other.OtherServerApi;
+      }
     }
 
     public void MergeFrom(pb::CodedInputStream input) {
@@ -1714,6 +1784,10 @@ namespace Grpc.Testing {
             coreList_.AddEntriesFrom(input, _repeated_coreList_codec);
             break;
           }
+          case 90: {
+            OtherServerApi = input.ReadString();
+            break;
+          }
         }
       }
     }
diff --git a/src/proto/grpc/testing/control.proto b/src/proto/grpc/testing/control.proto
index 28769ef653..20496a8116 100644
--- a/src/proto/grpc/testing/control.proto
+++ b/src/proto/grpc/testing/control.proto
@@ -35,14 +35,18 @@ import "src/proto/grpc/testing/stats.proto";
 package grpc.testing;
 
 enum ClientType {
+  // Many languages support a basic distinction between using
+  // sync or async client, and this allows the specification
   SYNC_CLIENT = 0;
   ASYNC_CLIENT = 1;
+  OTHER_CLIENT = 2; // used for some language-specific variants
 }
 
 enum ServerType {
   SYNC_SERVER = 0;
   ASYNC_SERVER = 1;
   ASYNC_GENERIC_SERVER = 2;
+  OTHER_SERVER = 3; // used for some language-specific variants
 }
 
 enum RpcType {
@@ -96,6 +100,9 @@ message ClientConfig {
   // Specify the cores we should run the client on, if desired
   repeated int32 core_list = 13;
   int32 core_limit = 14;
+
+  // If we use an OTHER_CLIENT client_type, this string gives more detail
+  string other_client_api = 15;
 }
 
 message ClientStatus { ClientStats stats = 1; }
@@ -127,6 +134,9 @@ message ServerConfig {
 
   // Specify the cores we should run the server on, if desired
   repeated int32 core_list = 10;
+
+  // If we use an OTHER_SERVER client_type, this string gives more detail
+  string other_server_api = 11;
 }
 
 message ServerArgs {
diff --git a/src/ruby/qps/src/proto/grpc/testing/control.rb b/src/ruby/qps/src/proto/grpc/testing/control.rb
index b81e22659d..958fca320b 100644
--- a/src/ruby/qps/src/proto/grpc/testing/control.rb
+++ b/src/ruby/qps/src/proto/grpc/testing/control.rb
@@ -34,6 +34,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
     optional :histogram_params, :message, 12, "grpc.testing.HistogramParams"
     repeated :core_list, :int32, 13
     optional :core_limit, :int32, 14
+    optional :other_client_api, :string, 15
   end
   add_message "grpc.testing.ClientStatus" do
     optional :stats, :message, 1, "grpc.testing.ClientStats"
@@ -55,6 +56,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
     optional :core_limit, :int32, 8
     optional :payload_config, :message, 9, "grpc.testing.PayloadConfig"
     repeated :core_list, :int32, 10
+    optional :other_server_api, :string, 11
   end
   add_message "grpc.testing.ServerArgs" do
     oneof :argtype do
@@ -111,11 +113,13 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
   add_enum "grpc.testing.ClientType" do
     value :SYNC_CLIENT, 0
     value :ASYNC_CLIENT, 1
+    value :OTHER_CLIENT, 2
   end
   add_enum "grpc.testing.ServerType" do
     value :SYNC_SERVER, 0
     value :ASYNC_SERVER, 1
     value :ASYNC_GENERIC_SERVER, 2
+    value :OTHER_SERVER, 3
   end
   add_enum "grpc.testing.RpcType" do
     value :UNARY, 0
-- 
GitLab


From 6ba96de4fdfeb6db6cdec1e9532462ac7658ea09 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 21 Apr 2016 09:58:23 -0700
Subject: [PATCH 111/525] make prefix configurable

---
 src/compiler/generator_helpers.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index 8aa875f959..b8cf5c1e14 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -237,16 +237,18 @@ inline void GetComment(const grpc::protobuf::FileDescriptor *desc,
   }
 }
 
-// Prefix comment line with "// " and concatenate them into a string.
-inline grpc::string GenerateComments(const std::vector<grpc::string> &in) {
+// Add prefix and newline to each comment line and concatenate them together.
+// Make sure there is a space after the prefix unless the line is empty.
+inline grpc::string GenerateCommentsWithPrefix(
+    const std::vector<grpc::string> &in, const grpc::string &prefix) {
   std::ostringstream oss;
   for (const grpc::string &elem : in) {
     if (elem.empty()) {
-      oss << "//\n";
+      oss << prefix << "\n";
     } else if (elem[0] == ' ') {
-      oss << "//" << elem << "\n";
+      oss << prefix << elem << "\n";
     } else {
-      oss << "// " << elem << "\n";
+      oss << prefix << " " << elem << "\n";
     }
   }
   return oss.str();
@@ -268,7 +270,7 @@ inline grpc::string GetComments(const DescriptorType *desc, bool leading) {
     grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
                                &out);
   }
-  return GenerateComments(out);
+  return GenerateCommentsWithPrefix(out, "//");
 }
 
 }  // namespace grpc_generator
-- 
GitLab


From c3e1f6368354c1b9af02e29cf5e5bc9d90b4eb57 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 21 Apr 2016 10:03:21 -0700
Subject: [PATCH 112/525] Add comments

---
 src/compiler/generator_helpers.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index b8cf5c1e14..4e32e76a05 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -184,7 +184,7 @@ enum CommentType {
   COMMENTTYPE_LEADING_DETACHED
 };
 
-// Get all the comments and append each line to out.
+// Get all the raw comments and append each line without newline to out.
 template <typename DescriptorType>
 inline void GetComment(const DescriptorType *desc, CommentType type,
                        std::vector<grpc::string> *out) {
@@ -209,6 +209,7 @@ inline void GetComment(const DescriptorType *desc, CommentType type,
   }
 }
 
+// Each raw comment line without newline is appended to out.
 // For file level leading and detached leading comments, we return comments
 // above syntax line. Return nothing for trailing comments.
 template <>
-- 
GitLab


From 336b744eff21c447fe783ae7bab491980c6d93d2 Mon Sep 17 00:00:00 2001
From: Eric Richardson <ewr@squareup.com>
Date: Thu, 21 Apr 2016 14:46:59 -0400
Subject: [PATCH 113/525] Fix a mixed declaration warning in the
 grpc_rb_call_get_peer_cert method

---
 src/ruby/ext/grpc/rb_call.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c
index c8be2773fd..48c49a21e9 100644
--- a/src/ruby/ext/grpc/rb_call.c
+++ b/src/ruby/ext/grpc/rb_call.c
@@ -227,14 +227,16 @@ static VALUE grpc_rb_call_get_peer_cert(VALUE self) {
     return Qnil;
   }
 
-  grpc_auth_property_iterator it =
-      grpc_auth_context_find_properties_by_name(ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME);
-  const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
-  if (prop == NULL) {
-    return Qnil;
-  }
+  {
+    grpc_auth_property_iterator it =
+        grpc_auth_context_find_properties_by_name(ctx, GRPC_X509_PEM_CERT_PROPERTY_NAME);
+    const grpc_auth_property *prop = grpc_auth_property_iterator_next(&it);
+    if (prop == NULL) {
+      return Qnil;
+    }
 
-  res = rb_str_new2(prop->value);
+    res = rb_str_new2(prop->value);
+  }
 
   grpc_auth_context_release(ctx);
 
-- 
GitLab


From e621f13ecd64d005ad3dfe84f67e81dde6c113ef Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Thu, 21 Apr 2016 14:28:00 -0700
Subject: [PATCH 114/525] Simplified ruby interop test files

---
 grpc.gemspec                           |  4 --
 src/ruby/bin/grpc_ruby_interop_client  | 33 -----------------
 src/ruby/bin/grpc_ruby_interop_server  | 33 -----------------
 src/ruby/bin/interop/interop_client.rb | 51 --------------------------
 src/ruby/bin/interop/interop_server.rb | 50 -------------------------
 src/ruby/pb/test/client.rb             |  5 ++-
 templates/grpc.gemspec.template        |  4 --
 tools/run_tests/run_interop_tests.py   |  8 ++--
 8 files changed, 8 insertions(+), 180 deletions(-)
 delete mode 100755 src/ruby/bin/grpc_ruby_interop_client
 delete mode 100755 src/ruby/bin/grpc_ruby_interop_server
 delete mode 100755 src/ruby/bin/interop/interop_client.rb
 delete mode 100755 src/ruby/bin/interop/interop_server.rb

diff --git a/grpc.gemspec b/grpc.gemspec
index 9c858b2579..05bb681c5f 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -24,10 +24,6 @@ Gem::Specification.new do |s|
   s.files += Dir.glob('include/grpc/**/*')
   s.test_files = Dir.glob('src/ruby/spec/**/*')
   s.bindir = 'src/ruby/bin'
-  %w(math noproto).each do |b|
-    s.executables += ["#{b}_client.rb", "#{b}_server.rb"]
-  end
-  s.executables += %w(grpc_ruby_interop_client grpc_ruby_interop_server)
   s.require_paths = %w( src/ruby/bin src/ruby/lib src/ruby/pb )
   s.platform      = Gem::Platform::RUBY
 
diff --git a/src/ruby/bin/grpc_ruby_interop_client b/src/ruby/bin/grpc_ruby_interop_client
deleted file mode 100755
index e79fd33aa5..0000000000
--- a/src/ruby/bin/grpc_ruby_interop_client
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Provides a gem binary entry point for the interop client.
-require 'test/client'
diff --git a/src/ruby/bin/grpc_ruby_interop_server b/src/ruby/bin/grpc_ruby_interop_server
deleted file mode 100755
index 656a5f7c99..0000000000
--- a/src/ruby/bin/grpc_ruby_interop_server
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Provides a gem binary entry point for the interop server
-require 'test/server'
diff --git a/src/ruby/bin/interop/interop_client.rb b/src/ruby/bin/interop/interop_client.rb
deleted file mode 100755
index 239083f37f..0000000000
--- a/src/ruby/bin/interop/interop_client.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# #######################################################################
-# DEPRECATED: The behaviour in this file has been moved to pb/test/client.rb
-#
-# This file remains to support existing tools and scripts that use it.
-# ######################################################################
-#
-# interop_client is a testing tool that accesses a gRPC interop testing
-# server and runs a test on it.
-#
-# Helps validate interoperation b/w different gRPC implementations.
-#
-# Usage: $ path/to/interop_client.rb --server_host=<hostname> \
-#                                    --server_port=<port> \
-#                                    --test_case=<testcase_name>
-
-this_dir = File.expand_path(File.dirname(__FILE__))
-pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb')
-$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
-
-require 'test/client'
diff --git a/src/ruby/bin/interop/interop_server.rb b/src/ruby/bin/interop/interop_server.rb
deleted file mode 100755
index c6b0d00ec6..0000000000
--- a/src/ruby/bin/interop/interop_server.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# #######################################################################
-# DEPRECATED: The behaviour in this file has been moved to pb/test/server.rb
-#
-# This file remains to support existing tools and scripts that use it.
-# ######################################################################
-#
-# interop_server is a Testing app that runs a gRPC interop testing server.
-#
-# It helps validate interoperation b/w gRPC in different environments
-#
-# Helps validate interoperation b/w different gRPC implementations.
-#
-# Usage: $ path/to/interop_server.rb --port
-
-this_dir = File.expand_path(File.dirname(__FILE__))
-pb_dir = File.join(File.dirname(File.dirname(this_dir)), 'pb')
-$LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
-
-require 'test/server'
diff --git a/src/ruby/pb/test/client.rb b/src/ruby/pb/test/client.rb
index 2f83e67c52..695a5c4ea2 100755
--- a/src/ruby/pb/test/client.rb
+++ b/src/ruby/pb/test/client.rb
@@ -464,6 +464,9 @@ def main
   opts = parse_args
   stub = create_stub(opts)
   NamedTests.new(stub, opts).method(opts['test_case']).call
+  p "OK: #{opts['test_case']}"
 end
 
-main
+if __FILE__ == $0
+  main
+end
diff --git a/templates/grpc.gemspec.template b/templates/grpc.gemspec.template
index 6f8d1fb9e6..ce775ffb90 100644
--- a/templates/grpc.gemspec.template
+++ b/templates/grpc.gemspec.template
@@ -26,10 +26,6 @@
     s.files += Dir.glob('include/grpc/**/*')
     s.test_files = Dir.glob('src/ruby/spec/**/*')
     s.bindir = 'src/ruby/bin'
-    ${'%'}w(math noproto).each do |b|
-      s.executables += ["#{b}_client.rb", "#{b}_server.rb"]
-    end
-    s.executables += %w(grpc_ruby_interop_client grpc_ruby_interop_server)
     s.require_paths = %w( src/ruby/bin src/ruby/lib src/ruby/pb )
     s.platform      = Gem::Platform::RUBY
 
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 28b91f8b62..220d0e6048 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -270,13 +270,13 @@ class RubyLanguage:
     self.safename = str(self)
 
   def client_cmd(self, args):
-    return ['ruby', 'src/ruby/bin/interop/interop_client.rb'] + args
+    return ['ruby', 'src/ruby/pb/test/client.rb'] + args
 
   def cloud_to_prod_env(self):
     return {}
 
   def server_cmd(self, args):
-    return ['ruby', 'src/ruby/bin/interop/interop_server.rb', '--use_tls=true'] + args
+    return ['ruby', 'src/ruby/pb/test/server.rb', '--use_tls=true'] + args
 
   def global_env(self):
     return {}
@@ -590,8 +590,8 @@ prod_servers = {
                       False),
     'cloud_gateway_v2': ('216.239.32.255', 'grpc-test2.sandbox.googleapis.com',
                          True),
-    'gateway_v4': ('grpc-test4.sandbox.googleapis.com', 
-                   'grpc-test4.sandbox.googleapis.com', True), 
+    'gateway_v4': ('grpc-test4.sandbox.googleapis.com',
+                   'grpc-test4.sandbox.googleapis.com', True),
     'cloud_gateway_v4': ('216.239.32.255', 'grpc-test4.sandbox.googleapis.com',
                          True),
 }
-- 
GitLab


From 6321cf2a3cd5a24eb24e66f64a39aef45270eb69 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 14:37:23 -0700
Subject: [PATCH 115/525] Fix inf loop

---
 test/core/end2end/fuzzers/api_fuzzer.c | 105 +++++++++++++++----------
 1 file changed, 63 insertions(+), 42 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index bb74a816a6..1e508e28a1 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -361,12 +361,15 @@ typedef struct call_state {
   char *recv_status_details;
   size_t recv_status_details_capacity;
   int cancelled;
+  int pending_ops;
   grpc_call_details call_details;
 
   struct call_state *next;
   struct call_state *prev;
 } call_state;
 
+static call_state *g_active_call;
+
 static call_state *new_call(call_state *sibling, call_state_type type) {
   call_state *c = gpr_malloc(sizeof(*c));
   memset(c, 0, sizeof(*c));
@@ -381,14 +384,15 @@ static call_state *new_call(call_state *sibling, call_state_type type) {
   return c;
 }
 
-static call_state *maybe_delete_call_state(call_state **active, call_state *call) {
+static call_state *maybe_delete_call_state(call_state *call) {
   call_state *next = call->next;
   
   if (call->call != NULL) return next;
+  if (call->pending_ops != 0) return next;
 
-  if (call == *active) {
-    *active = call->next;
-    GPR_ASSERT(call != *active);
+  if (call == g_active_call) {
+    g_active_call = call->next;
+    GPR_ASSERT(call != g_active_call);
   }
 
   call->prev->next = call->next;
@@ -402,10 +406,28 @@ static call_state *maybe_delete_call_state(call_state **active, call_state *call
   return next;
 }
 
-static call_state *destroy_call(call_state **active, call_state *call) {
+static call_state *destroy_call(call_state *call) {
   grpc_call_destroy(call->call);
   call->call = NULL;
-  return maybe_delete_call_state(active, call);
+  return maybe_delete_call_state(call);
+}
+
+static void finished_request_call(void *csp, bool success) {
+  call_state *cs = csp;
+  GPR_ASSERT(cs->pending_ops > 0);
+  --cs->pending_ops;
+  if (success) {
+    GPR_ASSERT(cs->call != NULL);
+    cs->type = SERVER;
+  } else {
+    maybe_delete_call_state(cs);
+  }
+}
+
+static void finished_batch(void *csp, bool success) {
+  call_state *cs = csp;
+  --cs->pending_ops;
+  maybe_delete_call_state(cs);
 }
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
@@ -424,14 +446,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   int pending_server_shutdowns = 0;
   int pending_channel_watches = 0;
   int pending_pings = 0;
-  int pending_ops = 0;
 
-  call_state *active_call = new_call(NULL, ROOT);
+  g_active_call = new_call(NULL, ROOT);
 
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
   while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
-         pending_channel_watches > 0 || pending_pings > 0 || pending_ops > 0 || active_call->type != ROOT || active_call->next != active_call) {
+         pending_channel_watches > 0 || pending_pings > 0 || g_active_call->type != ROOT || g_active_call->next != g_active_call) {
     if (is_eof(&inp)) {
       if (g_channel != NULL) {
         grpc_channel_destroy(g_channel);
@@ -449,14 +470,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           g_server = NULL;
         }
       }
-      call_state *s = active_call;
+      call_state *s = g_active_call;
       do {
         if (s->type != PENDING_SERVER && s->call != NULL) {
-          s = destroy_call(&active_call, s);
+          s = destroy_call(s);
         } else {
           s = s->next;
         }
-      } while (s != active_call);
+      } while (s != g_active_call);
 
       g_now = gpr_time_add(g_now, gpr_time_from_seconds(1, GPR_TIMESPAN));
     }
@@ -606,12 +627,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
         bool ok = true;
         if (g_channel == NULL) ok = false;
         grpc_call *parent_call = NULL;
-        if (active_call->type != ROOT) {
-          if (active_call->call == NULL || active_call->type == CLIENT) {
+        if (g_active_call->type != ROOT) {
+          if (g_active_call->call == NULL || g_active_call->type == CLIENT) {
             end(&inp);
             break;
           }
-          parent_call = active_call->call;
+          parent_call = g_active_call->call;
         }
         uint32_t propagation_mask = read_uint32(&inp);
         char *method = read_string(&inp);
@@ -621,7 +642,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
                          gpr_time_from_micros(read_uint32(&inp), GPR_TIMESPAN));
 
         if (ok) {
-          call_state *cs = new_call(active_call, CLIENT);
+          call_state *cs = new_call(g_active_call, CLIENT);
           cs->call =
               grpc_channel_create_call(g_channel, parent_call, propagation_mask,
                                        cq, method, host, deadline, NULL);
@@ -634,13 +655,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // switch the 'current' call
       case 11: {
-        active_call = active_call->next;
+        g_active_call = g_active_call->next;
         break;
       }
       // queue some ops on a call
       case 12: {
-        if (active_call->type == PENDING_SERVER || active_call->type == ROOT ||
-            active_call->call == NULL) {
+        if (g_active_call->type == PENDING_SERVER || g_active_call->type == ROOT ||
+            g_active_call->call == NULL) {
           end(&inp);
           break;
         }
@@ -686,35 +707,35 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
             case GRPC_OP_RECV_INITIAL_METADATA:
               op->op = GRPC_OP_RECV_INITIAL_METADATA;
               op->data.recv_initial_metadata =
-                  &active_call->recv_initial_metadata;
+                  &g_active_call->recv_initial_metadata;
               break;
             case GRPC_OP_RECV_MESSAGE:
               op->op = GRPC_OP_RECV_MESSAGE;
-              op->data.recv_message = &active_call->recv_message;
+              op->data.recv_message = &g_active_call->recv_message;
               break;
             case GRPC_OP_RECV_STATUS_ON_CLIENT:
               op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
-              op->data.recv_status_on_client.status = &active_call->status;
+              op->data.recv_status_on_client.status = &g_active_call->status;
               op->data.recv_status_on_client.trailing_metadata =
-                  &active_call->recv_trailing_metadata;
+                  &g_active_call->recv_trailing_metadata;
               op->data.recv_status_on_client.status_details =
-                  &active_call->recv_status_details;
+                  &g_active_call->recv_status_details;
               op->data.recv_status_on_client.status_details_capacity =
-                  &active_call->recv_status_details_capacity;
+                  &g_active_call->recv_status_details_capacity;
               break;
             case GRPC_OP_RECV_CLOSE_ON_SERVER:
               op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
-              op->data.recv_close_on_server.cancelled = &active_call->cancelled;
+              op->data.recv_close_on_server.cancelled = &g_active_call->cancelled;
               break;
           }
           op->reserved = NULL;
           op->flags = read_uint32(&inp);
         }
         if (ok) {
-          validator *v = create_validator(decrement, &pending_ops);
-          pending_ops++;
+          validator *v = create_validator(finished_batch, g_active_call);
+          g_active_call->pending_ops++;
           grpc_call_error error =
-              grpc_call_start_batch(active_call->call, ops, num_ops, v, NULL);
+              grpc_call_start_batch(g_active_call->call, ops, num_ops, v, NULL);
           if (error != GRPC_CALL_OK) {
             v->validate(v->arg, false);
             gpr_free(v);
@@ -766,8 +787,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // cancel current call
       case 13: {
-        if (active_call->type != ROOT && active_call->call != NULL) {
-          grpc_call_cancel(active_call->call, NULL);
+        if (g_active_call->type != ROOT && g_active_call->call != NULL) {
+          grpc_call_cancel(g_active_call->call, NULL);
         } else {
           end(&inp);
         }
@@ -775,8 +796,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // get a calls peer
       case 14: {
-        if (active_call->type != ROOT && active_call->call != NULL) {
-          free_non_null(grpc_call_get_peer(active_call->call));
+        if (g_active_call->type != ROOT && g_active_call->call != NULL) {
+          free_non_null(grpc_call_get_peer(g_active_call->call));
         } else {
           end(&inp);
         }
@@ -822,9 +843,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           end(&inp);
           break;
         }
-        call_state *cs = new_call(active_call, PENDING_SERVER);
-        pending_ops++;
-        validator *v = create_validator(decrement, &pending_ops);
+        call_state *cs = new_call(g_active_call, PENDING_SERVER);
+        cs->pending_ops++;
+        validator *v = create_validator(finished_request_call, cs);
         grpc_call_error error =
             grpc_server_request_call(g_server, &cs->call, &cs->call_details,
                                      &cs->recv_initial_metadata, cq, cq, v);
@@ -836,9 +857,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // destroy a call
       case 20: {
-        if (active_call->type != ROOT && active_call->type != PENDING_SERVER &&
-            active_call->call != NULL) {
-          destroy_call(&active_call, active_call);
+        if (g_active_call->type != ROOT && g_active_call->type != PENDING_SERVER &&
+            g_active_call->call != NULL) {
+          destroy_call(g_active_call);
         } else {
           end(&inp);
         }
@@ -849,9 +870,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
   GPR_ASSERT(g_channel == NULL);
   GPR_ASSERT(g_server == NULL);
-  GPR_ASSERT(active_call->type == ROOT);
-  GPR_ASSERT(active_call->next == active_call);
-  gpr_free(active_call);
+  GPR_ASSERT(g_active_call->type == ROOT);
+  GPR_ASSERT(g_active_call->next == g_active_call);
+  gpr_free(g_active_call);
 
   grpc_completion_queue_shutdown(cq);
   GPR_ASSERT(
-- 
GitLab


From 5421b7999dde772fb2559246d2ae6e13b65d7b46 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 14:51:06 -0700
Subject: [PATCH 116/525] Initial corpus

---
 .../0452ea591951af85724608917fda16926dad7451  |  Bin 0 -> 24 bytes
 .../07ae5ed3dedbd83e376c892a9546cc0cd733c26f  |  Bin 0 -> 25 bytes
 .../0d9d8241c5568fea586d21f91ae1891dac31ba24  |  Bin 0 -> 60 bytes
 .../130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38  |  Bin 0 -> 64 bytes
 .../15c37fe5be9f23c0f0e59e12ee7666007acdb3c5  |  Bin 0 -> 126 bytes
 .../1661d0799cbf2015fd64e9f648ebb49281d41c6d  |  Bin 0 -> 24 bytes
 .../17cfb281eaa8a17d77e08c3648bb93f3b5aa5297  |  Bin 0 -> 129 bytes
 .../1a6b907bfa02ceebeb80aab47b3c3c51161eb868  |  Bin 0 -> 20 bytes
 .../20322515ebf6df572cb2f596d8a20d3d8893193d  |  Bin 0 -> 70 bytes
 .../2099db589f606dd8932a950280f5d2b23751af9f  |  Bin 0 -> 129 bytes
 .../2743ee5a764fb0c4e04cdf84c9b3810ac8093998  |    1 +
 .../2942908b7973da7113098a0ea25487e3372db173  |  Bin 0 -> 22 bytes
 .../2ab009994e603404e194ebe0120840d388fb765e  |  Bin 0 -> 82 bytes
 .../313001e1cc15ef9887b43e0c6de398eea2f20e00  |  Bin 0 -> 23 bytes
 .../31429d04a34cc6643eebed7eeb8a807a83b57b1f  |  Bin 0 -> 146 bytes
 .../32594aaa716c1a04b0f927ef964f1593735cb289  |  Bin 0 -> 47 bytes
 .../3a287590e2d38d5dbc0b85d29ae2497d27aa0305  |  Bin 0 -> 121 bytes
 .../3a4fa4e81b78cae093b2d53b0a6f272a398a7cda  |  Bin 0 -> 60 bytes
 .../3c84d21c46b89e7573750dd4517ea2eb58e37e27  |  Bin 0 -> 23 bytes
 .../3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d  |  Bin 0 -> 62 bytes
 .../3f36ae935255c4bbd2bd8d4a85bfa92bba02225c  |  Bin 0 -> 20 bytes
 .../439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00  |  Bin 0 -> 64 bytes
 .../441c94c010d19206c337d3c850cc449523ab480d  |  Bin 0 -> 46 bytes
 .../449ece0109a8543f26311f3ddc23525a2f288b64  |  Bin 0 -> 37 bytes
 .../44e1fdcc46db56bf61a6702fd10766b56d35bc74  |  Bin 0 -> 122 bytes
 .../47ecf4079ea23d4de5fd9282f733eb5429f7ab05  |    1 +
 .../4c686a41d4d2226b3cc76b8154d8df090d075f00  |  Bin 0 -> 19 bytes
 .../5298ce28a7eab28c99964c0d838b017355607c92  |  Bin 0 -> 66 bytes
 .../5a6491ab9c23fae58967d4a4b5d5cfb23f620001  |  Bin 0 -> 23 bytes
 .../5a8ca84c7d4d9b055f05c55b1f707f223979d387  |    1 +
 .../5d2f29b31d78b47077b15779d620747034d18c05  |  Bin 0 -> 25 bytes
 .../5ea01efbec747fc55ae29eb2b779f00889ca6922  |  Bin 0 -> 23 bytes
 .../6184ea16753b0827f728285f18dad4b3bde00024  |  Bin 0 -> 23 bytes
 .../6230cce2862a18c4c92dc6fb4e034a1d15e1ff18  |  Bin 0 -> 62 bytes
 .../62fbfe90a1b9ac471bc2644c896f64515f6b3c7e  |  Bin 0 -> 24 bytes
 .../638c36cfe098b98008e594eddf90fdacfc078fae  |  Bin 0 -> 34 bytes
 .../682cb8ad9fe4641e7a140ae3d3ee27c841ba397f  |  Bin 0 -> 19 bytes
 .../696ea30e2e1490f2f31b153641b2c29152ded5c2  |  Bin 0 -> 64 bytes
 .../6c1c2177f3483086607c717d0c6c35a81d79e18e  |  Bin 0 -> 20 bytes
 .../6f8ffc96f9ebe390929165e32bdc187afb7a40ce  |  Bin 0 -> 48 bytes
 .../7462e4d1834938e8a5fb975da6865cc7d6b225f3  |  Bin 0 -> 21 bytes
 .../74eef5817db3984a020b2868f3c9979d0220c829  |  Bin 0 -> 130 bytes
 .../761f683f6486e3efb606bf08fa527a4c1a51f302  |  Bin 0 -> 87 bytes
 .../768b6302130ac824947f956e062184afaafcdbab  |  Bin 0 -> 24 bytes
 .../7c026422a34cb34de673a1d6702cbde67d112d27  |  Bin 0 -> 45 bytes
 .../7c9b4e2ea03542254235893edd042a822145e504  |  Bin 0 -> 45 bytes
 .../7d33039255c9611d0e9e0cc7e230f87ad55c007f  |  Bin 0 -> 18 bytes
 .../80a249d17248e0dc7dcc9fb64d8ac2dd0320a544  |  Bin 0 -> 48 bytes
 .../8123e9dc4d43115412f07fcf9946c99d9a1a55c3  |  Bin 0 -> 167 bytes
 .../8492f54a92f9a2a05af1a078489a3a68145d8985  |  Bin 0 -> 79 bytes
 .../8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4  |  Bin 0 -> 98 bytes
 .../880070b48f04fd1c8ffafd750e1c4d37ff404c6c  |  Bin 0 -> 21 bytes
 .../8a9f7329b30a562837353767313df7fa9a1f31f7  |  Bin 0 -> 85 bytes
 .../8b253ba946d6768c147f5d52552e150b703437e0  |  Bin 0 -> 23 bytes
 .../8b53f252f8558726dc0daaee84e2b4d2f0835f44  |  Bin 0 -> 57 bytes
 .../8d7bb385d6b13b0e689a1e81e29113746218ba99  |  Bin 0 -> 121 bytes
 .../8f43b11f10961dcce8eaa8340c96d10bdbc937ad  |  Bin 0 -> 64 bytes
 .../9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e  |  Bin 0 -> 19 bytes
 .../9bfd723bfa4162bb5801a6050af0a8b2db10d4ab  |  Bin 0 -> 21 bytes
 .../9c837f4e6cb572b3431b3a5065b889273712810e  |  Bin 0 -> 64 bytes
 .../a1b153e4cde45a7302094f6c751e3248d2f0fb8e  |  Bin 0 -> 21 bytes
 .../a3c9b6e89b534d02bdad07207c4fdcda536f28a4  |  Bin 0 -> 24 bytes
 .../aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae  |  Bin 0 -> 61 bytes
 .../b0ff62377b87b846f720a70f0b7f7bdc76aa1315  |  Bin 0 -> 46 bytes
 .../b33f833f291ebba4d777c2bae51193553c27d138  |  Bin 0 -> 23 bytes
 .../b77ca0306f700c8c88854e73ccbdf470fba3f820  |  Bin 0 -> 57 bytes
 .../bb349c691efa909b4c5412b9210e1acf4a4b7505  |  Bin 0 -> 65 bytes
 .../bc7f0b79a1781772d7f48e168462f99da27b03e2  |  Bin 0 -> 68 bytes
 .../be40890ee61e101a7429d53cd9ffd59ee600e0f6  |  Bin 0 -> 34 bytes
 .../bef8cedf1a792786a027114c85a89a1bef3155c4  |  Bin 0 -> 163 bytes
 .../bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2  |  Bin 0 -> 47 bytes
 .../c4a63251d65cb186242e7aba5ab3d4709d3f0065  |  Bin 0 -> 26 bytes
 .../ca086cf78308275212c52012f06edf3b4152204a  |  Bin 0 -> 80 bytes
 .../cd0e7c4cd361b786b6f27c481ed601fd373cb221  |  Bin 0 -> 62 bytes
 .../cd4f2c59f0cf55d9a73fb0b96d701c784c446048  |  Bin 0 -> 23 bytes
 ...h-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc |  Bin 0 -> 26 bytes
 .../d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4  |  Bin 0 -> 65 bytes
 .../d2c828ee88b3e352fad3263f1e1ff901a41fc7a6  |  Bin 0 -> 49 bytes
 .../d3124f8fe39ebe943d0d5a7087a51d7e852505bd  |  Bin 0 -> 64 bytes
 .../d333dc3999c6dcca82d85f72e65e10c07f12d978  |  Bin 0 -> 48 bytes
 .../d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35  |  Bin 0 -> 60 bytes
 .../da23c62c70f6c1174adc08093c429f1ec657921a  |  Bin 0 -> 49 bytes
 .../dd0e562fcf5edda051585b70d3b3780a9a6a2818  |  Bin 0 -> 37 bytes
 .../dddf3303e3e8e558ca6f147ec11d8195b6de30bb  |  Bin 0 -> 47 bytes
 .../de838de0352fc7ee32452bc83043cf587176e120  |  Bin 0 -> 19 bytes
 .../df949398b0b614309219c4128b167746e16a1ead  |  Bin 0 -> 165 bytes
 .../e1a0398910c28ad61e065e98e884a7492f6dc594  |  Bin 0 -> 21 bytes
 .../e42a9e07845680b8aad95408657c87b01873bcbe  |    1 +
 .../ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4  |    1 +
 .../ec012a94d14659f311451e89e757bd06a93d30b8  |  Bin 0 -> 64 bytes
 .../ef930a505edebc0ff6ca7eef7549bbaa21d95b4a  |  Bin 0 -> 47 bytes
 .../f0a7e39c194ee3f30312ae2f4827bdbd43416a42  |  Bin 0 -> 44 bytes
 .../f1b592b7e1a5af83eea1bccc2d7bcca302173d57  |  Bin 0 -> 48 bytes
 .../f47f636b8e22e8db428ea956d9336bd12b928a9e  |  Bin 0 -> 60 bytes
 .../f4dc057d97c34f31ea542d67593b8d3a295bf52a  |  Bin 0 -> 37 bytes
 .../f65e41c8021049c4ca8782902de25d6791bae63a  |  Bin 0 -> 124 bytes
 .../f73f63e243ea6484a97ece29bb8d4f33841410fc  |  Bin 0 -> 20 bytes
 tools/fuzzer/runners/api_fuzzer.sh            |    2 +-
 tools/run_tests/tests.json                    | 2136 ++++++++++++++++-
 99 files changed, 2141 insertions(+), 2 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451
new file mode 100644
index 0000000000000000000000000000000000000000..8803e430b9e95cc069c22a80fa7a347a86c3decb
GIT binary patch
literal 24
fcmWf9%g)5dR-VdHRF?Xmv50}O<<VMe1`Y-QSl<U0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f b/test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f
new file mode 100644
index 0000000000000000000000000000000000000000..e814b6ec56005654a0b53fa294acf99dcee0e41e
GIT binary patch
literal 25
gcmZQ#E9cWp<>)91)6n|Qz`)t^NSB2{n1ho608WVoi2wiq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24
new file mode 100644
index 0000000000000000000000000000000000000000..251648518a901d39dcc1e3f637830b7f6d6b822e
GIT binary patch
literal 60
zcmZQ#<0?<(C@N#(Q(#~#{|{oOsxuZbFtHV<7L}zIF)+3~TFbz}Sj54=@xPtnQ45&Q
Kz{tSCzyJW_;1DJN

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38 b/test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38
new file mode 100644
index 0000000000000000000000000000000000000000..c737ee5cd1a778fbdbde2418747f2905e643385f
GIT binary patch
literal 64
zcmZQ#<0`M!Dk`()Q($0Y_@ByARK~=>Sj51@mReMnTBO0i*z$;TErU8^QA<0+e+~x5
UM=g)mGITL;F)%VPaLi%=01p!on*aa+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5
new file mode 100644
index 0000000000000000000000000000000000000000..33e9109648e478ec3410c174bf940c3956431872
GIT binary patch
literal 126
zcmZQ#D^KMpDr4efn^*onm7|D>BUq1#tvI!)j3X5+7YddH%ax`6XDni1Vk_rMRp%%w
z)6n|Qz`)q@h>=0@5mQ;}|FtX(oJAar42&)R{xdN!a4;5eC@?%~+5exBp{j_1fpINZ
Sh~ZHSCj%qHqqPhi3=9C#X(Gh{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d b/test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d
new file mode 100644
index 0000000000000000000000000000000000000000..363345d232456755a27ce069aeea0aec8483be08
GIT binary patch
literal 24
fcmWf9%g)5dR-VeSsx0+CV-W-6lt*i=88{dKT$cx4

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297 b/test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297
new file mode 100644
index 0000000000000000000000000000000000000000..b951e5a31bed56ba44d7e9f9ac37827d13a5ffb2
GIT binary patch
literal 129
zcmZQ#<0?<JFDhf=Q($0Y_@ByARK~=>Sj51@_Oz%hwMavgf$`B=26e`wmUf2!91M(y
zm^gy<nAnO_i^@1snb^v~8u-{+9(9$2H8U_UFmR>*2bsXImVuFh@evaPH;BvFvX+69
Xv514=Q41r(qqPhi3=9k$vltivdov)v

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868
new file mode 100644
index 0000000000000000000000000000000000000000..ebd58f04647f10fcf143dc4a315940ab69e150a1
GIT binary patch
literal 20
bcmZQ#V^U7#C@Qo6&sfC3*z#zt76$_WGUo+)

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d b/test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d
new file mode 100644
index 0000000000000000000000000000000000000000..0e9a66eb9a3050b3b0baf037f12b94917e573d65
GIT binary patch
literal 70
zcmZQ#V_;xl;3`kGFDhf=Q($0Y_@ByARK~=>Sj52glqt2Ss7!-_@zGiab;hEWc832P
X42*|b9(92=tz}?j&|qNTn8g49F53`V

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f b/test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f
new file mode 100644
index 0000000000000000000000000000000000000000..085168f792a23b5c0006e61b3ed642ea3e33db74
GIT binary patch
literal 129
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(OL#|#-f&XhW{K4jE7nt
zF>wUzF|ie=7L{?NGO?AXauk(yF)%PNaIIxvWa48h{|^#LWng4r;Q9|Thv5+u12>4p
b*s_*^ld*_{;ZX}C!=tqf983(e7#J7;iW4A;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998
new file mode 100644
index 0000000000..a070f08446
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173
new file mode 100644
index 0000000000000000000000000000000000000000..b794909fa90c088adbb40fa778626425cea671c2
GIT binary patch
literal 22
dcmZQ#E9Xn)C@Ry?`p>|?*z#yC3j-$y0{}m)1zi9D

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e b/test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e
new file mode 100644
index 0000000000000000000000000000000000000000..2972ed8abed8ddee4d20a2ee9c46516e297dc781
GIT binary patch
literal 82
zcmZQ#<0?<(C@N#(Q(#~#{|{oOsxvS$6|ohk7BR7v^MOR{l^L}DGcYi=JX*_8mdaTK
cW^phUd2ldr{BCD>)B=*=U|?Wm;9w8{0DCGH3jhEB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00
new file mode 100644
index 0000000000000000000000000000000000000000..ec613045c8c010cee78959f861b9761f775e49ab
GIT binary patch
literal 23
ecmZQ#E9Xn)C@Qo6&sfC3*z#yC1BZY>upR(Qk_J%#

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f b/test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f
new file mode 100644
index 0000000000000000000000000000000000000000..5713b9e316771d03d065e1733c15a048fc7c7491
GIT binary patch
literal 146
zcmZQ#E9Xn)C@Ry?Vqz-?F_`$+%KxWw6ftoG>oKtvrxulQq=KbFi^^bfWvTxeix|LK
z)xmoIGcYi=JYr&a#8j60e=Q3GXAuV@17pj-{}2g~2nQ1b0|#RfhXTW+mi_-38LAkH
Y7#JAWg2fmfwQw>pGCW$#z`?)(0BflyV*mgE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289 b/test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289
new file mode 100644
index 0000000000000000000000000000000000000000..390f90e27bd739e4a053318416084428e6240a57
GIT binary patch
literal 47
zcmZQ#WBQ+}9HFSnputeaSj5o6z_^xyk?9c|lQM%UM^TvvgZ+QTA_g1AmPczDI2Zu*
ChYINc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305
new file mode 100644
index 0000000000000000000000000000000000000000..266d308de2d998e3280923efd4a88499f515bccf
GIT binary patch
literal 121
zcmZQ#D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&minKuh=GZ%oG+Dwqo_<n>puen
zW6L8ZhDS_gssGoqFmQ4(7BMikFfcH1FcxtrFg$8u_|M3|Sj51<xE3tL@Ti58fsx_S
JS_TdV1^}Pv9$Wwb

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda b/test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda
new file mode 100644
index 0000000000000000000000000000000000000000..796be8ef09e1cdc14cef6acd8bb66fd1b85e8ff0
GIT binary patch
literal 60
zcmZQ#<0?<(C@N#(Q(#~#{|{oOsxvS$6|ohk7L}zIF)+3~TFbz}SmeRM!12GG;ZX~S
L&%nsQ!N33j<xUW7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27
new file mode 100644
index 0000000000000000000000000000000000000000..1ae200faf7b477b0714a30dc0f35f090f99efcf9
GIT binary patch
literal 23
ecmZQ#E9Xn)C@Qnp`p>|?*doIJXf1;#2Lk{^gaxwz

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d b/test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d
new file mode 100644
index 0000000000000000000000000000000000000000..e631a79a091f3dc4ba01a05f650275a4fbc73fd8
GIT binary patch
literal 62
zcmZSL2-ag_D^4vc<49#<D^KMpDr4efEB_B-r2c0tVqju;#Kgc2VllR?W#D8i;$V2x
N!pQJwEdvJw0{{Tz5M%%V

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c b/test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c
new file mode 100644
index 0000000000000000000000000000000000000000..6d4b5bd9cf8b9c484851cf32c4f983447c733fe6
GIT binary patch
literal 20
bcmZQ#E9Xn)C@Qo6&sfC3*z#yC1BU<rIZg$@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00
new file mode 100644
index 0000000000000000000000000000000000000000..100fcdc76c489512788ac31a8597bb2fdfef0dfe
GIT binary patch
literal 64
zcmZQ#<0?<JFDkR<Q($0Y_@ByARK~=>Sj51@mReMnTBO0i*z$;TErU8^QA<0+e+~x5
UM=g)mGITL;F)%VPaLi%=01iqJm;e9(

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d b/test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d
new file mode 100644
index 0000000000000000000000000000000000000000..1885de73f3359a86375b2129d4f6af243d3d5a1f
GIT binary patch
literal 46
zcmZS5XJh!Es%&o%tk+S*#CDD^wWv%(i=nLOKLZ0}%OeKH7Dk3gYZ*8>7}hd)FaQ8B
C84Q&G

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64 b/test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64
new file mode 100644
index 0000000000000000000000000000000000000000..edfd64ca1b55748c457d82604f14d0142271e05d
GIT binary patch
literal 37
qcmZQ#D^KMpDr4efEB_B-r2c0tVqk1}w3dN`v4}%~;ZX}C0|NljvI?sJ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74 b/test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74
new file mode 100644
index 0000000000000000000000000000000000000000..eb48a38ae58b7ba237dbc8080463d782d3a0f301
GIT binary patch
literal 122
zcmZQ#D^KMpDr4efEB~L$QN+X%tjEMwoLW@IkqVXyMaY$<{%0&=U}7uhOI7D6D$~&V
z&%nUg@`#Dy5mQ;}|FtX(oJAar42&%d3=ABMMH~tYk6IZ1Gcqt1F)%Q$1q(4eYT;yH
MWO%fefrEho0M5-G&;S4c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05 b/test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05
new file mode 100644
index 0000000000..d64a5a8a6a
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05
@@ -0,0 +1 @@
+�
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00
new file mode 100644
index 0000000000000000000000000000000000000000..84021f12d950602320f472743a3c7720497c949e
GIT binary patch
literal 19
acmZQ#E9c`#wO3<c_+PY^q2&=H2Lk{r)&%VU

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92
new file mode 100644
index 0000000000000000000000000000000000000000..811352a641fbb7264726214ab2ebce39f6dd2b19
GIT binary patch
literal 66
zcmZQ#<0?<JFDhf=Q($0Y_@ByARK~=>Sj51@_Oz%hwMc`3@zGiab;hEWc832P42*|b
W9(6G=FfeefWng4rWMJT!#Q*>;2oN&>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001
new file mode 100644
index 0000000000000000000000000000000000000000..7904c178d2a79486445a0efb062f7a6e1500a598
GIT binary patch
literal 23
ecmZQ#WBQ+}Y_C|vP{vrqz}Ujb@MtZA2Lk{?j|Hj#

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387
new file mode 100644
index 0000000000..54a81dcac6
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05
new file mode 100644
index 0000000000000000000000000000000000000000..88f6ab193dc05159b7be48952185ddc7dd455f97
GIT binary patch
literal 25
gcmZQ#E9cWp<=`j^)6n|Qz`)t^Xe|o^CkH1307&5le*gdg

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922
new file mode 100644
index 0000000000000000000000000000000000000000..f76c4ae5ffdc5aad10bbea6c64ab2a87748fa3e1
GIT binary patch
literal 23
ecmZQ#WBQ+}9M4h2P{vrqz}Uj@NNX*F2Lk{^%mvy2

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024
new file mode 100644
index 0000000000000000000000000000000000000000..f6171477cbdee659af5f7e269b5c9826ab2a476b
GIT binary patch
literal 23
ecmZQ#WBQ+}Y|l}|P{vrqz}Ujb@MtZA2Lk{={{@i%

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18
new file mode 100644
index 0000000000000000000000000000000000000000..f3320f1c2bf693c2b65970d1cc211013dbf366c8
GIT binary patch
literal 62
zcmZQ#<0?<JFDhf=Q(#~#|DVcHRK~=>Sj51@mReMnTExKE@`!US0|#SKOFP4V4hF_Y
SEsxeRFfcGMGH`LsVgLa2tq=tO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e b/test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e
new file mode 100644
index 0000000000000000000000000000000000000000..27d167826c316fc6d037feef64ec511f409f6d80
GIT binary patch
literal 24
fcmZQ#E9Xn);3z87(E887z}WI=EeiuD2PXpnMy3UB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae b/test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae
new file mode 100644
index 0000000000000000000000000000000000000000..153b006e968025e998c521fac8e7a82f9c6f003d
GIT binary patch
literal 34
pcmZQ#E9Xn);3!Jd(E887z}WI=EeiuD2PYF7lVa))<p@O`1^|Ye2W|iW

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f b/test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f
new file mode 100644
index 0000000000000000000000000000000000000000..a25e18212fecc91806ad92dbeda9863f26c6b4c2
GIT binary patch
literal 19
acmZQ#E9Xn)C@Qo6&%nUg@@Ops2Lk{y5d}Q}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2
new file mode 100644
index 0000000000000000000000000000000000000000..7b43eeb20a84b742490edcb1505ea9e721aa811e
GIT binary patch
literal 64
zcmZQ#<0?<JFDhf=Q($0Y_@ByARK~=>Sj51@mReMnTBO0i*z$;TErU8^QA<0+e+~x5
UM=g)mGITL;F)%VPaLi%=00GhvUjP6A

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e b/test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e
new file mode 100644
index 0000000000000000000000000000000000000000..717269dd6360fa9eeab8f9a4808e0b8274ec7e12
GIT binary patch
literal 20
bcmZQ#E9Xn)C@Qo6&sfC3*z#yC0|x^DIX(rj

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce b/test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce
new file mode 100644
index 0000000000000000000000000000000000000000..420c2c1e1a13c975f5b832fc24d76ed73cf09d8c
GIT binary patch
literal 48
zcmZQ#WBQ+}9HFSGs=>fe##qGA!oawefsyGE8<R4FDo0U~2ZQ~8#v%qA#+FBG88{dK
D{Nf7^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3
new file mode 100644
index 0000000000000000000000000000000000000000..2db7068462dc5569a5a9001cf448b0a934d17741
GIT binary patch
literal 21
ccmZQ#V^U^F<tQq%|Ib*&z}WI=EdvJw05X>aPyhe`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829 b/test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829
new file mode 100644
index 0000000000000000000000000000000000000000..266e5c4947460996afb930955e2fa47e73a37af4
GIT binary patch
literal 130
zcmZQ#<0?<JFDhf=Q($0Y_@ByARK~=>Sj51@_Oz%hwMavgf$`B=26e`wmUf2!91M(y
zm^gy<nAF*dQ;W(tQkmGw!8-WZS{`+kgLN}7FfeeX{s$Ssu$F<5f$<R&12->25d&k(
bS_V$WA`XT}EsPA0)-rG~Ffee;VqgFOdD0*A

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302 b/test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302
new file mode 100644
index 0000000000000000000000000000000000000000..99a59683f1fd57726a844a427da921584bb71268
GIT binary patch
literal 87
zcmZQ#<0?<rDzfHNU|?hTpUP2G#>B)>#K6RsT2z)=q`|=0@`!US6C2b2RAqaPB8D=?
rA_hhVb;hEW7RGjl{~QdAk6IqBW$0qyV)(E5pMitn(OL!%hFJ^%xv&?;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab b/test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab
new file mode 100644
index 0000000000000000000000000000000000000000..71e1c98fac8b102d7e323d91c74a2797668fa096
GIT binary patch
literal 24
fcmZQ#WBQ+}T+dO&P{vrqz}Ujb@JMSdg9ifuO6>*v

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27
new file mode 100644
index 0000000000000000000000000000000000000000..e85bb86ad4a6fe393207ca9c97e0b78aa0102f3f
GIT binary patch
literal 45
zcmZQ#V^U02j!@KLC}S*QXklPn%fQI=h>b~^L6xJZ%!9%HKVuOCV~ae)BL)rz0K&fs
AAOHXW

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504
new file mode 100644
index 0000000000000000000000000000000000000000..42751a19d793eb569842da245b515248f4de735a
GIT binary patch
literal 45
zcmZQ#WBQ+}9HFSoputeaSj5o6z_^xyk?9eWGJ`5dQJDvW{eQ+H2F8|0YZ*8g0Oeu|
AuK)l5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f
new file mode 100644
index 0000000000000000000000000000000000000000..e1ab5b3717481a256bfe5b565c3472091ce3e290
GIT binary patch
literal 18
ZcmZQ7PAw`+En?vK&)D*4Edv7w0{}a01-$?O

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544 b/test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544
new file mode 100644
index 0000000000000000000000000000000000000000..8f68ee5907ecf80f8e3160eb14cd66bd3ce6c7ac
GIT binary patch
literal 48
zcmZQ#WBQ+}9HFSG!l1!W##qGA!oawefsyGE8<R4FDo0U~2ZQ~8#v%qA#+FBG88{dK
D{F4g}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3
new file mode 100644
index 0000000000000000000000000000000000000000..7de08146e45b3d8c4e86fbab52493f69d52429e1
GIT binary patch
literal 167
zcmZQ#<0`jTWlAk8V&G$9D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&minKuh=GaW
z5fg;P*uucTz`<C=p}_E{h2cLV17nc_0~-U#lrkm;uu=xbmbG9d43F5J7L}zIX)rK8
v;#|w1&REpa&hVduf$>qxqqPiOObiTM3=9k{j0}$$85q_wa4>MpVqgFO>1rwT

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985
new file mode 100644
index 0000000000000000000000000000000000000000..d489fafed3ccc9f8ba8e414f13a2e33a80ab78c6
GIT binary patch
literal 79
zcmZSL2-ag_D^4vcV`3}kOXVmkvu9vnY<aYnBbAA*9K>hhV=F%kVx<0OEMj16VR*#B
c0AjT;u4Uk0EaG5b$a>Vm$na<_0|x^G07eKEP5=M^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4
new file mode 100644
index 0000000000000000000000000000000000000000..fdd8d37e11d9ebf0b1e52f4242e3638ab831521a
GIT binary patch
literal 98
zcmZQ#D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&minKuh=GaW5fg;P*uucTz`<C=
hp}_E{h2cLV17i^b17pituo%Om7Dk3gYZ*8g7yu2i8FK&t

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c b/test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c
new file mode 100644
index 0000000000000000000000000000000000000000..a9e62d9980c9391ff3d15804ab1f2c257002248d
GIT binary patch
literal 21
ccmZQ#E9Wan<tQq%|Ifg{%-Hg1EdvJw06j<rumAu6

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7
new file mode 100644
index 0000000000000000000000000000000000000000..6a1887785e4fc457c9524ce99c19c15e1dc565be
GIT binary patch
literal 85
zcmZQ#WBQ+}Y|q5TRi0{JRK~=oz`$1iKb51XjERA<h=GYMwWut$h=H-?5$9S44#uLE
nc832P42+Lj9<60yU|?Wm;NqCYz){3d#t2fx$na<_g9ifurfL<H

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0
new file mode 100644
index 0000000000000000000000000000000000000000..6985667939753a325d298e9cbc0dd0e9bd9d2d44
GIT binary patch
literal 23
ecmZQ#E9Xn)C@Qm8X3+Z2z`)q@Xe|RL2Lk{>sRfe&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44
new file mode 100644
index 0000000000000000000000000000000000000000..48e98050594d19c3b2391dbe9edc083fcdf32f9f
GIT binary patch
literal 57
zcmZQ#D^KMpDr4efEB~L$%~4dA`k%3gfwAS$S_Td#w&K*HG7h*1V-be}!=n}k4hBXB
F1_1SV5P1Lq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99
new file mode 100644
index 0000000000000000000000000000000000000000..66ee1d4699ecec340386ca52b1b88736b7c20066
GIT binary patch
literal 121
zcmZQ#D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&minKuh=GZ%oG+Dwqo_<n>puen
zW6L8ZhDS_gssGoqaB?sfF)+3;Ffed17I7#rJZfS1&&a@7#K6G#@Bjb*MH~!|S~wXP
N86K@=U|?X-0087FA;ACu

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad
new file mode 100644
index 0000000000000000000000000000000000000000..c12934d57e3c6ed503ab3482811bcc1b8e2fd69c
GIT binary patch
literal 64
zcmZQ#<0?<jDk`()Q($0Y_@ByARK~=>Sj51@mReMnTBO0i*z$;TErU8^QA<0+e+~x5
UM=g)mGITL;G5r6}z%h#f03(_b!T<mO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e
new file mode 100644
index 0000000000000000000000000000000000000000..cb87caa80542222b10544d0146ade117f19ba328
GIT binary patch
literal 19
acmZQ#D^4vc<4FC_Sj52C@@Ops2Lk{)ECs{>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab
new file mode 100644
index 0000000000000000000000000000000000000000..4259817b69cb0b36f8a8f177ad78cda14c86d1ed
GIT binary patch
literal 21
ccmZQ#E9Xn)C@Qnp`p>|?*z#yCgC++906W_SkN^Mx

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e
new file mode 100644
index 0000000000000000000000000000000000000000..762d87036078b2e4bf978b242464964ae0f2b398
GIT binary patch
literal 64
zcmZQ#<0?<jDk`()Q($0YVB+{+mRiKXSj51@mReMnTBO0i*z$;TErWVdOFP4V4hF_Y
UEsxeRbTM%8G5r6}z%h#f048@5&j0`b

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e
new file mode 100644
index 0000000000000000000000000000000000000000..132222cce9a8e4e9ce1f6193316e2160508b9dc7
GIT binary patch
literal 21
ccmZQ#E9Xn)C@Qnp`p>|?*z#yC11ARq06TjHZ~y=R

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4
new file mode 100644
index 0000000000000000000000000000000000000000..296a734f16923fb575b4d861957f1252845a9b71
GIT binary patch
literal 24
fcmZQ#E9Xn);3z87(E887z}WI=EeiuD2j>m|M_vXd

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae b/test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae
new file mode 100644
index 0000000000000000000000000000000000000000..712d2a999e3513fe25fc573d3f6ac915d234b503
GIT binary patch
literal 61
zcmZSL2-ag_D^4vc<49#<D^KMpDr4efEB_B-r2c0tVqju;#KZt%Ft)5^;9xA`V0hHR
M$na<_0|x^G0QHLySO5S3

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315
new file mode 100644
index 0000000000000000000000000000000000000000..a502809ae821d5dfaf3431b995b45110de42a267
GIT binary patch
literal 46
zcmZQ#WBPBEsvM!H&QQi!#L&XPxR!yD=@A=~vO0q*M^TvvgZ+QTA_m5mM{5~47y$EC
B3g`d;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138
new file mode 100644
index 0000000000000000000000000000000000000000..16ffa9d81f83381ec109eeba3f4dcd31d16d7855
GIT binary patch
literal 23
ecmZQ#WBQ+}Y|Bx^%)nU0z}Ujb@MtZA2Lk{*2?ZPg

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820
new file mode 100644
index 0000000000000000000000000000000000000000..afbc92d5063f9b4d2598164d98ef843fa4a7d7f8
GIT binary patch
literal 57
zcmWe)D^KMpDr4efEB~L$%~4dA`u}ec17pjhwG13gY{jWXWgMyh86hH!MH~tYk6IWw
I7#JBC03Lr4g#Z8m

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505
new file mode 100644
index 0000000000000000000000000000000000000000..b22a7683a5850b871bde3f5347abe9eaeabf0bf3
GIT binary patch
literal 65
zcmZQ#<0?<JFREkWQ(#~#|DVcHRK~<0SH!@?mReL+#K73{h;uCi2V+r7JHvkt2F6D%
RkJd6cFn|Fg1K0om3;-%!5n%uT

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2
new file mode 100644
index 0000000000000000000000000000000000000000..fdc020d7377fb24b6cba140ea7845ebd6e598f1d
GIT binary patch
literal 68
zcmZQ#<0?<JFDhf=Q($0YNd3=IRK~=>Sj51@_Oz%hwMc`3@zGiab;hEWc832P42*|b
Y9(6G=FfeefWng4rWMJT8VwlAM086qEHvj+t

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6
new file mode 100644
index 0000000000000000000000000000000000000000..24f445985a270e850af6c700ad01c181218de73c
GIT binary patch
literal 34
pcmZQ#V^U^FRY)%?NY+bE%_}Y~X5c6)v;WUnq`=tnXe|Q=0|1{Q3Hty5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4
new file mode 100644
index 0000000000000000000000000000000000000000..b3c115e2bbda16de06dc3e423ba187b600c54359
GIT binary patch
literal 163
zcmZQ#<0?<JFDhf=V`3{$<p43*%KxWw6ftoG>oKtvrxulQq@qccrT%9uVqju;!~|h6
zwlFX-a4;5eC@?%~VffF;z*wZfz{UVFrHqLItdxPVWi40<!y~q*MP;c)8Vrn&IM*_$
oGZwY9GyLaZV0_f_Xe~n*0~Z4WLklCrBSr>>wG12#9J3f00D@F0%>V!Z

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2
new file mode 100644
index 0000000000000000000000000000000000000000..63cc356a739b0a6ffac6231f569940bd1d2ca805
GIT binary patch
literal 47
zcmZS5XJh)Gs%&o%tk+S*#8%Fi%28CNp~X;E^q+x&vE>m1V+$k0qqPj291Lq2JQx5g
CYYa#L

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065
new file mode 100644
index 0000000000000000000000000000000000000000..240cc20c05ea437598b2e88ef77a1bc287570272
GIT binary patch
literal 26
hcmZQ#E9Xn);3(oyEYr~X&%nUg@@Op!11AUP4ggIF22TJ0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a
new file mode 100644
index 0000000000000000000000000000000000000000..564a12e2851cea51eec88a8ae66bb6598d8a2b5e
GIT binary patch
literal 80
zcmZQ#<0?;OVk=H9D&t7~&sbz%#89Tdz{JPc!dCu2m7}OERh_Zu(OL!uCbrbFqEyBr
i2F8|0oNF047>gJ<{<kwcYT;mP0m(BkGH}ddU;qG*WEM#P

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221
new file mode 100644
index 0000000000000000000000000000000000000000..be7a1706c22b8aa2b553e9cac9c9b7ae18fa764b
GIT binary patch
literal 62
zcmZSL2-ag_D^4vc<49#<D^KMpDr4efEB_B-r2c0tVqju;#Kgc2VllR?W#C{e;$V2x
N!pQJwEdvJw0{{Tk5MuxU

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048
new file mode 100644
index 0000000000000000000000000000000000000000..bed26bd411f1767dcdc624475134bf326d191aeb
GIT binary patch
literal 23
ecmZQ#WBQ+}Y_F)nP{vrqz}Ujb@MtZA2Lk{;IR#(<

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc
new file mode 100644
index 0000000000000000000000000000000000000000..4114505579ea5825a578d4dc79d9c49daf231ef6
GIT binary patch
literal 26
hcmZQ_E7#!DOy%e(3e(WK&%nUh@<>;NL70P+0RUH_1>pby

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4
new file mode 100644
index 0000000000000000000000000000000000000000..f7892d30eb36ffdb4401a66a79d7fbf091d02e15
GIT binary patch
literal 65
zcmZQ#<0?<JFDhf=Q($0Y_@ByARK~=>Sj51@_Oz%hwMc`3@e$`*26e`wmUf2!91M()
VS{|)s=wjevU|?WmVBna=0011|5L*BM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6
new file mode 100644
index 0000000000000000000000000000000000000000..3052b6562e34d25b078fa6c7efe21d66b62fd9e5
GIT binary patch
literal 49
zcmZQ#WBQ+}Y;O>(-%-TGR?e5oQB<a(#Zbmr^q+x&vE>oN|No3Fj0}&~GH`M*tYz?E
F003G#4jBLd

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd b/test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd
new file mode 100644
index 0000000000000000000000000000000000000000..50760fa59ebde02c20c86546c31b134067121351
GIT binary patch
literal 64
zcmZQ#<0?<pDk`()Q($0Y_@ByARK~=>Sj51@mReMnTBO0i*z$;TErU8^QA<0+e+~x5
UM=g)mGITL;F)%VPaLi%=010ytg8%>k

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978
new file mode 100644
index 0000000000000000000000000000000000000000..9086fb3d5f3e3871842353ffd348538464724d60
GIT binary patch
literal 48
zcmZQ#WBQ+}9HFSG+NHrz##qGA!oawefsyGE8<R4FDo0U~2ZR0pB1Q&7hL%Tb88jIH
D5t$3E

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35
new file mode 100644
index 0000000000000000000000000000000000000000..6386318aacae82923bcf9d46821e924ce24e22ff
GIT binary patch
literal 60
zcmZSL2-ag_D^4vc<49#<D^KMpDr4efEB_B-r2c0tVqk1}1fkY4a4;5eFfcr7VPtr;
JmVtwT0Ra1)5ZM3#

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a b/test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a
new file mode 100644
index 0000000000000000000000000000000000000000..8ec7fecc6e0575d03b58bb96a51bcd5488ba4b6a
GIT binary patch
literal 49
zcmZQ#WBR`!RXIXYQ=379p^UMJp@o5QEdwLdBQ_>w233xtqW}Nx|1%a@*)X;|Sj)h{
F001?J4Wa-5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818
new file mode 100644
index 0000000000000000000000000000000000000000..6cc90395bde53b284a0065b5fbc84a6367dd8240
GIT binary patch
literal 37
qcmZQ#D^KMpDr4efEB_B-r2c0tVqk1}w3dN`v513#;ZX}C0|Nli(h7?J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb b/test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb
new file mode 100644
index 0000000000000000000000000000000000000000..cc23afee50cad31e2973a361c1f31f3db85e910a
GIT binary patch
literal 47
zcmZQ#WBQ+}Y;O>()=|X7R?e5oQB<a(#Zbmr#K_RX@c$75V+$k0qqPj292#pGJQx5a
C+6+1X

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120 b/test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120
new file mode 100644
index 0000000000000000000000000000000000000000..5f84542818bb89081672315ae968850fe0d142d2
GIT binary patch
literal 19
acmZQ#E9c`#wKrp6_+P}>@@Ops2Lk{r`2_s{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead b/test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead
new file mode 100644
index 0000000000000000000000000000000000000000..229971071f9e891a364b9646f638d52a03c28c8b
GIT binary patch
literal 165
zcmZQ#<0?<JFH&VFW8!0CD^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&minKuh=GaW
z5fg;P*uucTz`<C=p}_E{h2cLV17nc_0~-U#lrkm;uu=xbmbG9d43F5J7L}zIX)rK8
t;#|w1&REpa&hVduf$>qxqqPiO3|tHh3@wZdj~E#k)-rG~aLi(0005k7De?dS

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594
new file mode 100644
index 0000000000000000000000000000000000000000..71cdbf08d90868dcc1e85aabf3e3fe3d447db245
GIT binary patch
literal 21
ccmZQ#E9Xn)C@Ry?`p>|?*z#yC11ARq06I_wSpWb4

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe b/test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe
new file mode 100644
index 0000000000..60e70cbd38
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe
@@ -0,0 +1 @@
+S.
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4
new file mode 100644
index 0000000000..28c93e6537
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4
@@ -0,0 +1 @@
+S.
\ No newline at end of file
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8
new file mode 100644
index 0000000000000000000000000000000000000000..f4f01ddf7f0f4455228f6505c7557d3ce98c5c62
GIT binary patch
literal 64
zcmZQ#<0?<rDk`()Q($0Y_@ByARK~=>Sj51@mReMnTBO0i*z$;TErU8^QA<0+e+~x5
UM=g)mGITL;G5r6}z%h#f02JC1f&c&j

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a
new file mode 100644
index 0000000000000000000000000000000000000000..c6c53a949c97fd37ad6a7e01ca383d0732087c34
GIT binary patch
literal 47
zcmZQ#WBQ+}Y;O>(*HOg8R?e5oQB<a(#Zbmr^q+x&vE>m1V+$k0qqPj291Lq2JQx5e
CGYlF4

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42
new file mode 100644
index 0000000000000000000000000000000000000000..e791177dde5ff9bf1d0d60246fc2d75eed6d707d
GIT binary patch
literal 44
zcmZQ#WBQ+}9HFSeP{vrq(89pDmVuG!5gU^-gDOW+nFoXYf5svP#+FBG88{dK;DQQ>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57
new file mode 100644
index 0000000000000000000000000000000000000000..3a65338b63b0bb33b9dc64f8aee09a7d5114b5da
GIT binary patch
literal 48
zcmZQ#WBQ+}9HFSG%Amne##qGA!oawefsyGE8<R4FDo0U~2ZQ~8#v%qA#+FBG88{dK
D{JIMc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e b/test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e
new file mode 100644
index 0000000000000000000000000000000000000000..75257d8c4fb457fc24d8c7aa0fc1ebee9c4efd81
GIT binary patch
literal 60
zcmZQ#<0?<JFDhf=Q(#~#|DVcHRF<mFSj51@mReMnTExKE@`!US0|#Rf1IPb%hDR-o
QEsxeRFfcN3%wk{w0P7wQg#Z8m

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a
new file mode 100644
index 0000000000000000000000000000000000000000..f1b3ac747a5a8b014fc4f3ecad5c3700c9c2a635
GIT binary patch
literal 37
scmZQ#E9Xn);3!Jd(E887z}WKW|Npft44fRCOl(YwsXLS-6m=My0ltd~?*IS*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a
new file mode 100644
index 0000000000000000000000000000000000000000..2f0bb8844204dd4c2468f308ff2390d36b30c117
GIT binary patch
literal 124
zcmZQ#D^KMpDr4efEB~L$QN+X%tjEMwoLW@IkqVXyMaY$<{%0&=U}7uhOI7D6D$~&V
z&%nUg@`#Dy5mQ;}|FtX(oJAar42&)R{xdN!a4;5eC@?%~+5exBp{j_1fpINZh~ZHS
OCj%qHqqPhi3=9BnBq9d@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc b/test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc
new file mode 100644
index 0000000000000000000000000000000000000000..3f5fd07552357c51d8ab4fe64ed76e5db84b1187
GIT binary patch
literal 20
bcmZSLV=GVPC@M?+&sfC3*z#yC0|x^DI;92H

literal 0
HcmV?d00001

diff --git a/tools/fuzzer/runners/api_fuzzer.sh b/tools/fuzzer/runners/api_fuzzer.sh
index 6be0c1e3bf..df41c8e131 100644
--- a/tools/fuzzer/runners/api_fuzzer.sh
+++ b/tools/fuzzer/runners/api_fuzzer.sh
@@ -33,7 +33,7 @@ flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
 
 if [ "$jobs" != "1" ]
 then
-  flags="-jobs=$jobs -workers=$jobs"
+  flags="-jobs=$jobs -workers=$jobs $flags"
 fi
 
 if [ "$config" == "asan-trace-cmp" ]
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index c897fe8e77..8c94c5376e 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -22454,6 +22454,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin"
@@ -22520,6 +22542,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin"
@@ -22652,6 +22696,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin"
@@ -22698,7 +22764,2075 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
     ], 
     "ci_platforms": [
       "linux", 
-- 
GitLab


From 2b3d33ae8a0412076f98a51b4cc2a6cb8c2c3c54 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 14:51:44 -0700
Subject: [PATCH 117/525] clang-fmt

---
 test/core/end2end/fuzzers/api_fuzzer.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 1e508e28a1..b750780a95 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -386,7 +386,7 @@ static call_state *new_call(call_state *sibling, call_state_type type) {
 
 static call_state *maybe_delete_call_state(call_state *call) {
   call_state *next = call->next;
-  
+
   if (call->call != NULL) return next;
   if (call->pending_ops != 0) return next;
 
@@ -452,7 +452,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   grpc_completion_queue *cq = grpc_completion_queue_create(NULL);
 
   while (!is_eof(&inp) || g_channel != NULL || g_server != NULL ||
-         pending_channel_watches > 0 || pending_pings > 0 || g_active_call->type != ROOT || g_active_call->next != g_active_call) {
+         pending_channel_watches > 0 || pending_pings > 0 ||
+         g_active_call->type != ROOT || g_active_call->next != g_active_call) {
     if (is_eof(&inp)) {
       if (g_channel != NULL) {
         grpc_channel_destroy(g_channel);
@@ -660,8 +661,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // queue some ops on a call
       case 12: {
-        if (g_active_call->type == PENDING_SERVER || g_active_call->type == ROOT ||
-            g_active_call->call == NULL) {
+        if (g_active_call->type == PENDING_SERVER ||
+            g_active_call->type == ROOT || g_active_call->call == NULL) {
           end(&inp);
           break;
         }
@@ -725,7 +726,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
               break;
             case GRPC_OP_RECV_CLOSE_ON_SERVER:
               op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
-              op->data.recv_close_on_server.cancelled = &g_active_call->cancelled;
+              op->data.recv_close_on_server.cancelled =
+                  &g_active_call->cancelled;
               break;
           }
           op->reserved = NULL;
@@ -857,7 +859,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
       }
       // destroy a call
       case 20: {
-        if (g_active_call->type != ROOT && g_active_call->type != PENDING_SERVER &&
+        if (g_active_call->type != ROOT &&
+            g_active_call->type != PENDING_SERVER &&
             g_active_call->call != NULL) {
           destroy_call(g_active_call);
         } else {
-- 
GitLab


From 88b9e4803ceb6d434c3b59ed0fe8e87f41681dd2 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 15:09:56 -0700
Subject: [PATCH 118/525] fix boringssl

---
 Makefile                                      |  72 ++-
 binding.gyp                                   |   3 +
 config.m4                                     |   3 +
 grpc.gemspec                                  |   5 +-
 package.xml                                   |   5 +-
 src/boringssl/err_data.c                      | 510 +++++++++---------
 src/python/grpcio/grpc_core_dependencies.py   |   3 +
 third_party/boringssl                         |   2 +-
 tools/run_tests/sources_and_headers.json      |  27 +-
 tools/run_tests/tests.json                    |  24 +
 .../vcxproj/boringssl/boringssl.vcxproj       |   8 +-
 .../boringssl/boringssl.vcxproj.filters       |  15 +-
 .../boringssl_x509_test.vcxproj               | 198 +++++++
 .../boringssl_x509_test.vcxproj.filters       |   7 +
 .../boringssl_x509_test_lib.vcxproj           | 170 ++++++
 .../boringssl_x509_test_lib.vcxproj.filters   |  24 +
 16 files changed, 815 insertions(+), 261 deletions(-)
 create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj
 create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj.filters
 create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj
 create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj.filters

diff --git a/Makefile b/Makefile
index ad030518a6..a2ddcbed90 100644
--- a/Makefile
+++ b/Makefile
@@ -1077,6 +1077,7 @@ boringssl_refcount_test: $(BINDIR)/$(CONFIG)/boringssl_refcount_test
 boringssl_rsa_test: $(BINDIR)/$(CONFIG)/boringssl_rsa_test
 boringssl_thread_test: $(BINDIR)/$(CONFIG)/boringssl_thread_test
 boringssl_pkcs7_test: $(BINDIR)/$(CONFIG)/boringssl_pkcs7_test
+boringssl_x509_test: $(BINDIR)/$(CONFIG)/boringssl_x509_test
 boringssl_tab_test: $(BINDIR)/$(CONFIG)/boringssl_tab_test
 boringssl_v3name_test: $(BINDIR)/$(CONFIG)/boringssl_v3name_test
 boringssl_pqueue_test: $(BINDIR)/$(CONFIG)/boringssl_pqueue_test
@@ -1199,7 +1200,7 @@ pc_cxx: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++.pc
 
 pc_cxx_unsecure: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc
 
-privatelibs_cxx:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a
+privatelibs_cxx:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a
 
 ifeq ($(HAS_ZOOKEEPER),true)
 privatelibs_zookeeper: 
@@ -1439,6 +1440,7 @@ buildtests_cxx: buildtests_zookeeper privatelibs_cxx \
   $(BINDIR)/$(CONFIG)/boringssl_rsa_test \
   $(BINDIR)/$(CONFIG)/boringssl_thread_test \
   $(BINDIR)/$(CONFIG)/boringssl_pkcs7_test \
+  $(BINDIR)/$(CONFIG)/boringssl_x509_test \
   $(BINDIR)/$(CONFIG)/boringssl_tab_test \
   $(BINDIR)/$(CONFIG)/boringssl_v3name_test \
   $(BINDIR)/$(CONFIG)/boringssl_pqueue_test \
@@ -4087,6 +4089,7 @@ LIBBORINGSSL_SRC = \
     third_party/boringssl/crypto/bn/shift.c \
     third_party/boringssl/crypto/bn/sqrt.c \
     third_party/boringssl/crypto/buf/buf.c \
+    third_party/boringssl/crypto/bytestring/asn1_compat.c \
     third_party/boringssl/crypto/bytestring/ber.c \
     third_party/boringssl/crypto/bytestring/cbb.c \
     third_party/boringssl/crypto/bytestring/cbs.c \
@@ -4110,6 +4113,7 @@ LIBBORINGSSL_SRC = \
     third_party/boringssl/crypto/cpu-intel.c \
     third_party/boringssl/crypto/crypto.c \
     third_party/boringssl/crypto/curve25519/curve25519.c \
+    third_party/boringssl/crypto/curve25519/x25519-x86_64.c \
     third_party/boringssl/crypto/des/des.c \
     third_party/boringssl/crypto/dh/check.c \
     third_party/boringssl/crypto/dh/dh.c \
@@ -4301,6 +4305,7 @@ LIBBORINGSSL_SRC = \
     third_party/boringssl/ssl/ssl_buffer.c \
     third_party/boringssl/ssl/ssl_cert.c \
     third_party/boringssl/ssl/ssl_cipher.c \
+    third_party/boringssl/ssl/ssl_ecdh.c \
     third_party/boringssl/ssl/ssl_file.c \
     third_party/boringssl/ssl/ssl_lib.c \
     third_party/boringssl/ssl/ssl_rsa.c \
@@ -5529,6 +5534,44 @@ ifneq ($(NO_DEPS),true)
 endif
 
 
+LIBBORINGSSL_X509_TEST_LIB_SRC = \
+    third_party/boringssl/crypto/x509/x509_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_X509_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_X509_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_X509_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_X509_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay.
+
+$(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a: $(ZLIB_DEP)  $(PROTOBUF_DEP) $(LIBBORINGSSL_X509_TEST_LIB_OBJS) 
+	$(E) "[AR]      Creating $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a
+	$(Q) $(AR) $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBBORINGSSL_X509_TEST_LIB_OBJS) 
+ifeq ($(SYSTEM),Darwin)
+	$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_X509_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
 LIBBORINGSSL_TAB_TEST_LIB_SRC = \
     third_party/boringssl/crypto/x509v3/tab_test.c \
 
@@ -12740,6 +12783,33 @@ endif
 
 
 
+# boringssl needs an override to ensure that it does not include
+# system openssl headers regardless of other configuration
+# we do so here with a target specific variable assignment
+$(BORINGSSL_X509_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_X509_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_X509_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_x509_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_x509_test:  $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LDXX) $(LDFLAGS)  $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_x509_test
+
+endif
+
+
+
+
+
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
diff --git a/binding.gyp b/binding.gyp
index 53d86534de..e6c31eda4d 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -223,6 +223,7 @@
             'third_party/boringssl/crypto/bn/shift.c',
             'third_party/boringssl/crypto/bn/sqrt.c',
             'third_party/boringssl/crypto/buf/buf.c',
+            'third_party/boringssl/crypto/bytestring/asn1_compat.c',
             'third_party/boringssl/crypto/bytestring/ber.c',
             'third_party/boringssl/crypto/bytestring/cbb.c',
             'third_party/boringssl/crypto/bytestring/cbs.c',
@@ -246,6 +247,7 @@
             'third_party/boringssl/crypto/cpu-intel.c',
             'third_party/boringssl/crypto/crypto.c',
             'third_party/boringssl/crypto/curve25519/curve25519.c',
+            'third_party/boringssl/crypto/curve25519/x25519-x86_64.c',
             'third_party/boringssl/crypto/des/des.c',
             'third_party/boringssl/crypto/dh/check.c',
             'third_party/boringssl/crypto/dh/dh.c',
@@ -437,6 +439,7 @@
             'third_party/boringssl/ssl/ssl_buffer.c',
             'third_party/boringssl/ssl/ssl_cert.c',
             'third_party/boringssl/ssl/ssl_cipher.c',
+            'third_party/boringssl/ssl/ssl_ecdh.c',
             'third_party/boringssl/ssl/ssl_file.c',
             'third_party/boringssl/ssl/ssl_lib.c',
             'third_party/boringssl/ssl/ssl_rsa.c',
diff --git a/config.m4 b/config.m4
index c26cb7b881..d787614533 100644
--- a/config.m4
+++ b/config.m4
@@ -317,6 +317,7 @@ if test "$PHP_GRPC" != "no"; then
     third_party/boringssl/crypto/bn/shift.c \
     third_party/boringssl/crypto/bn/sqrt.c \
     third_party/boringssl/crypto/buf/buf.c \
+    third_party/boringssl/crypto/bytestring/asn1_compat.c \
     third_party/boringssl/crypto/bytestring/ber.c \
     third_party/boringssl/crypto/bytestring/cbb.c \
     third_party/boringssl/crypto/bytestring/cbs.c \
@@ -340,6 +341,7 @@ if test "$PHP_GRPC" != "no"; then
     third_party/boringssl/crypto/cpu-intel.c \
     third_party/boringssl/crypto/crypto.c \
     third_party/boringssl/crypto/curve25519/curve25519.c \
+    third_party/boringssl/crypto/curve25519/x25519-x86_64.c \
     third_party/boringssl/crypto/des/des.c \
     third_party/boringssl/crypto/dh/check.c \
     third_party/boringssl/crypto/dh/dh.c \
@@ -531,6 +533,7 @@ if test "$PHP_GRPC" != "no"; then
     third_party/boringssl/ssl/ssl_buffer.c \
     third_party/boringssl/ssl/ssl_cert.c \
     third_party/boringssl/ssl/ssl_cipher.c \
+    third_party/boringssl/ssl/ssl_ecdh.c \
     third_party/boringssl/ssl/ssl_file.c \
     third_party/boringssl/ssl/ssl_lib.c \
     third_party/boringssl/ssl/ssl_rsa.c \
diff --git a/grpc.gemspec b/grpc.gemspec
index bac1f186f2..e94294f619 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -483,12 +483,12 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/boringssl/crypto/cipher/internal.h )
   s.files += %w( third_party/boringssl/crypto/conf/conf_def.h )
   s.files += %w( third_party/boringssl/crypto/conf/internal.h )
+  s.files += %w( third_party/boringssl/crypto/curve25519/internal.h )
   s.files += %w( third_party/boringssl/crypto/des/internal.h )
   s.files += %w( third_party/boringssl/crypto/dh/internal.h )
   s.files += %w( third_party/boringssl/crypto/digest/internal.h )
   s.files += %w( third_party/boringssl/crypto/digest/md32_common.h )
   s.files += %w( third_party/boringssl/crypto/directory.h )
-  s.files += %w( third_party/boringssl/crypto/dsa/internal.h )
   s.files += %w( third_party/boringssl/crypto/ec/internal.h )
   s.files += %w( third_party/boringssl/crypto/ec/p256-x86_64-table.h )
   s.files += %w( third_party/boringssl/crypto/evp/internal.h )
@@ -653,6 +653,7 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/boringssl/crypto/bn/shift.c )
   s.files += %w( third_party/boringssl/crypto/bn/sqrt.c )
   s.files += %w( third_party/boringssl/crypto/buf/buf.c )
+  s.files += %w( third_party/boringssl/crypto/bytestring/asn1_compat.c )
   s.files += %w( third_party/boringssl/crypto/bytestring/ber.c )
   s.files += %w( third_party/boringssl/crypto/bytestring/cbb.c )
   s.files += %w( third_party/boringssl/crypto/bytestring/cbs.c )
@@ -676,6 +677,7 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/boringssl/crypto/cpu-intel.c )
   s.files += %w( third_party/boringssl/crypto/crypto.c )
   s.files += %w( third_party/boringssl/crypto/curve25519/curve25519.c )
+  s.files += %w( third_party/boringssl/crypto/curve25519/x25519-x86_64.c )
   s.files += %w( third_party/boringssl/crypto/des/des.c )
   s.files += %w( third_party/boringssl/crypto/dh/check.c )
   s.files += %w( third_party/boringssl/crypto/dh/dh.c )
@@ -867,6 +869,7 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/boringssl/ssl/ssl_buffer.c )
   s.files += %w( third_party/boringssl/ssl/ssl_cert.c )
   s.files += %w( third_party/boringssl/ssl/ssl_cipher.c )
+  s.files += %w( third_party/boringssl/ssl/ssl_ecdh.c )
   s.files += %w( third_party/boringssl/ssl/ssl_file.c )
   s.files += %w( third_party/boringssl/ssl/ssl_lib.c )
   s.files += %w( third_party/boringssl/ssl/ssl_rsa.c )
diff --git a/package.xml b/package.xml
index 99ef0b8c70..716250c677 100644
--- a/package.xml
+++ b/package.xml
@@ -486,12 +486,12 @@
     <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/conf/conf_def.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/conf/internal.h" role="src" />
+    <file baseinstalldir="/" name="third_party/boringssl/crypto/curve25519/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/des/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/digest/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/digest/md32_common.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/directory.h" role="src" />
-    <file baseinstalldir="/" name="third_party/boringssl/crypto/dsa/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/internal.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/p256-x86_64-table.h" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/internal.h" role="src" />
@@ -656,6 +656,7 @@
     <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/shift.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/sqrt.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/buf/buf.c" role="src" />
+    <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/asn1_compat.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/ber.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/cbb.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/cbs.c" role="src" />
@@ -679,6 +680,7 @@
     <file baseinstalldir="/" name="third_party/boringssl/crypto/cpu-intel.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/crypto.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/curve25519/curve25519.c" role="src" />
+    <file baseinstalldir="/" name="third_party/boringssl/crypto/curve25519/x25519-x86_64.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/des/des.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/check.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/dh.c" role="src" />
@@ -870,6 +872,7 @@
     <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_buffer.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_cert.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_cipher.c" role="src" />
+    <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_ecdh.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_file.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_lib.c" role="src" />
     <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_rsa.c" role="src" />
diff --git a/src/boringssl/err_data.c b/src/boringssl/err_data.c
index 1a1d950419..d4cc08bd99 100644
--- a/src/boringssl/err_data.c
+++ b/src/boringssl/err_data.c
@@ -54,30 +54,30 @@ OPENSSL_COMPILE_ASSERT(ERR_LIB_USER == 32, library_values_changed_32);
 OPENSSL_COMPILE_ASSERT(ERR_NUM_LIBS == 33, library_values_changed_num);
 
 const uint32_t kOpenSSLReasonValues[] = {
-    0xc3207ba,
-    0xc3287d4,
-    0xc3307e3,
-    0xc3387f3,
-    0xc340802,
-    0xc34881b,
-    0xc350827,
-    0xc358844,
-    0xc360856,
-    0xc368864,
-    0xc370874,
-    0xc378881,
-    0xc380891,
-    0xc38889c,
-    0xc3908b2,
-    0xc3988c1,
-    0xc3a08d5,
-    0xc3a87c7,
+    0xc3207ab,
+    0xc3287c5,
+    0xc3307d4,
+    0xc3387e4,
+    0xc3407f3,
+    0xc34880c,
+    0xc350818,
+    0xc358835,
+    0xc360847,
+    0xc368855,
+    0xc370865,
+    0xc378872,
+    0xc380882,
+    0xc38888d,
+    0xc3908a3,
+    0xc3988b2,
+    0xc3a08c6,
+    0xc3a87b8,
     0xc3b00b0,
-    0x10321478,
-    0x10329484,
-    0x1033149d,
-    0x103394b0,
-    0x10340de1,
+    0x10321484,
+    0x10329490,
+    0x103314a9,
+    0x103394bc,
+    0x10340ded,
     0x103494cf,
     0x103514e4,
     0x10359516,
@@ -97,7 +97,7 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x103c9658,
     0x103d166f,
     0x103d9682,
-    0x103e0b6c,
+    0x103e0b5d,
     0x103e96b3,
     0x103f16c6,
     0x103f96e0,
@@ -108,87 +108,91 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x10421747,
     0x1042975b,
     0x1043176d,
-    0x104385d0,
-    0x104408c1,
+    0x104385c1,
+    0x104408b2,
     0x10449782,
     0x10451799,
     0x104597ae,
     0x104617bc,
     0x10469695,
     0x104714f7,
-    0x104787c7,
+    0x104787b8,
     0x104800b0,
-    0x104894c3,
-    0x14320b4f,
-    0x14328b5d,
-    0x14330b6c,
-    0x14338b7e,
+    0x10488b8c,
+    0x14320b40,
+    0x14328b4e,
+    0x14330b5d,
+    0x14338b6f,
     0x18320083,
-    0x18328e47,
-    0x18340e75,
-    0x18348e89,
-    0x18358ec0,
-    0x18368eed,
-    0x18370f00,
-    0x18378f14,
-    0x18380f38,
-    0x18388f46,
-    0x18390f5c,
-    0x18398f70,
-    0x183a0f80,
-    0x183b0f90,
-    0x183b8fa5,
-    0x183c8fd0,
-    0x183d0fe4,
-    0x183d8ff4,
-    0x183e0b9b,
-    0x183e9001,
-    0x183f1013,
-    0x183f901e,
-    0x1840102e,
-    0x1840903f,
-    0x18411050,
-    0x18419062,
-    0x1842108b,
-    0x184290bd,
-    0x184310cc,
-    0x18451135,
-    0x1845914b,
-    0x18461166,
-    0x18468ed8,
-    0x184709d9,
+    0x18328e53,
+    0x18340e81,
+    0x18348e95,
+    0x18358ecc,
+    0x18368ef9,
+    0x18370f0c,
+    0x18378f20,
+    0x18380f44,
+    0x18388f52,
+    0x18390f68,
+    0x18398f7c,
+    0x183a0f8c,
+    0x183b0f9c,
+    0x183b8fb1,
+    0x183c8fdc,
+    0x183d0ff0,
+    0x183d9000,
+    0x183e0b98,
+    0x183e900d,
+    0x183f101f,
+    0x183f902a,
+    0x1840103a,
+    0x1840904b,
+    0x1841105c,
+    0x1841906e,
+    0x18421097,
+    0x184290c9,
+    0x184310d8,
+    0x18451141,
+    0x18459157,
+    0x18461172,
+    0x18468ee4,
+    0x184709ca,
     0x18478094,
-    0x18480fbc,
-    0x18489101,
-    0x18490e5d,
-    0x18498e9e,
-    0x184a119c,
-    0x184a9119,
-    0x184b10e0,
-    0x184b8e37,
-    0x184c10a4,
-    0x184c866b,
-    0x184d1181,
-    0x203211c3,
-    0x243211cf,
-    0x24328907,
-    0x243311e1,
-    0x243391ee,
-    0x243411fb,
-    0x2434920d,
-    0x2435121c,
-    0x24359239,
-    0x24361246,
-    0x24369254,
-    0x24371262,
-    0x24379270,
-    0x24381279,
-    0x24389286,
-    0x24391299,
-    0x28320b8f,
-    0x28328b9b,
-    0x28330b6c,
-    0x28338bae,
+    0x18480fc8,
+    0x1848910d,
+    0x18490e69,
+    0x18498eaa,
+    0x184a11a8,
+    0x184a9125,
+    0x184b10ec,
+    0x184b8e43,
+    0x184c10b0,
+    0x184c865c,
+    0x184d118d,
+    0x184d80b0,
+    0x203211cf,
+    0x243211db,
+    0x243288f8,
+    0x243311ed,
+    0x243391fa,
+    0x24341207,
+    0x24349219,
+    0x24351228,
+    0x24359245,
+    0x24361252,
+    0x24369260,
+    0x2437126e,
+    0x2437927c,
+    0x24381285,
+    0x24389292,
+    0x243912a5,
+    0x28320b80,
+    0x28328b98,
+    0x28330b5d,
+    0x28338bab,
+    0x28340b8c,
+    0x28348094,
+    0x283500b0,
     0x2c32281d,
     0x2c32a82b,
     0x2c33283d,
@@ -207,7 +211,7 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x2c39a917,
     0x2c3a292b,
     0x2c3aa93c,
-    0x2c3b1359,
+    0x2c3b1365,
     0x2c3ba94d,
     0x2c3c2961,
     0x2c3ca977,
@@ -219,12 +223,12 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x2c3faa09,
     0x2c402a2c,
     0x2c40aa4b,
-    0x2c4111c3,
+    0x2c4111cf,
     0x2c41aa5c,
     0x2c422a6f,
-    0x2c429135,
+    0x2c429141,
     0x2c432a80,
-    0x2c4386a2,
+    0x2c438693,
     0x2c4429ad,
     0x30320000,
     0x30328015,
@@ -277,77 +281,79 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x304a03b4,
     0x304a83c7,
     0x304b03d2,
-    0x304b83e1,
-    0x304c03f2,
-    0x304c83fe,
-    0x304d0414,
-    0x304d8422,
-    0x304e0438,
-    0x304e844a,
-    0x304f045c,
-    0x304f846f,
-    0x30500482,
-    0x30508493,
-    0x305104a3,
-    0x305184bb,
-    0x305204d0,
-    0x305284e8,
-    0x305304fc,
-    0x30538514,
-    0x3054052d,
-    0x30548546,
-    0x30550563,
-    0x3055856e,
-    0x30560586,
-    0x30568596,
-    0x305705a7,
-    0x305785ba,
-    0x305805d0,
-    0x305885d9,
-    0x305905ee,
+    0x304b83e3,
+    0x304c03ef,
+    0x304c8405,
+    0x304d0413,
+    0x304d8429,
+    0x304e043b,
+    0x304e844d,
+    0x304f0460,
+    0x304f8473,
+    0x30500484,
+    0x30508494,
+    0x305104ac,
+    0x305184c1,
+    0x305204d9,
+    0x305284ed,
+    0x30530505,
+    0x3053851e,
+    0x30540537,
+    0x30548554,
+    0x3055055f,
+    0x30558577,
+    0x30560587,
+    0x30568598,
+    0x305705ab,
+    0x305785c1,
+    0x305805ca,
+    0x305885df,
+    0x305905f2,
     0x30598601,
-    0x305a0610,
+    0x305a0621,
     0x305a8630,
-    0x305b063f,
-    0x305b864b,
-    0x305c066b,
-    0x305c8687,
-    0x305d0698,
-    0x305d86a2,
-    0x34320ac9,
-    0x34328add,
-    0x34330afa,
-    0x34338b0d,
-    0x34340b1c,
-    0x34348b39,
+    0x305b063c,
+    0x305b865c,
+    0x305c0678,
+    0x305c8689,
+    0x305d0693,
+    0x34320aba,
+    0x34328ace,
+    0x34330aeb,
+    0x34338afe,
+    0x34340b0d,
+    0x34348b2a,
     0x3c320083,
-    0x3c328bd8,
-    0x3c330bf1,
-    0x3c338c0c,
-    0x3c340c29,
-    0x3c348c44,
-    0x3c350c5f,
-    0x3c358c74,
-    0x3c360c8d,
-    0x3c368ca5,
-    0x3c370cb6,
-    0x3c378cc4,
-    0x3c380cd1,
-    0x3c388ce5,
-    0x3c390b9b,
-    0x3c398cf9,
-    0x3c3a0d0d,
-    0x3c3a8881,
-    0x3c3b0d1d,
-    0x3c3b8d38,
-    0x3c3c0d4a,
-    0x3c3c8d60,
-    0x3c3d0d6a,
-    0x3c3d8d7e,
-    0x3c3e0d8c,
-    0x3c3e8db1,
-    0x3c3f0bc4,
-    0x3c3f8d9a,
+    0x3c328bd5,
+    0x3c330bee,
+    0x3c338c09,
+    0x3c340c26,
+    0x3c348c50,
+    0x3c350c6b,
+    0x3c358c80,
+    0x3c360c99,
+    0x3c368cb1,
+    0x3c370cc2,
+    0x3c378cd0,
+    0x3c380cdd,
+    0x3c388cf1,
+    0x3c390b98,
+    0x3c398d05,
+    0x3c3a0d19,
+    0x3c3a8872,
+    0x3c3b0d29,
+    0x3c3b8d44,
+    0x3c3c0d56,
+    0x3c3c8d6c,
+    0x3c3d0d76,
+    0x3c3d8d8a,
+    0x3c3e0d98,
+    0x3c3e8dbd,
+    0x3c3f0bc1,
+    0x3c3f8da6,
+    0x3c400094,
+    0x3c4080b0,
+    0x3c410c41,
     0x403217d3,
     0x403297e9,
     0x40331817,
@@ -362,7 +368,7 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x403798b8,
     0x403818c3,
     0x403898d5,
-    0x40390de1,
+    0x40390ded,
     0x403998e5,
     0x403a18f8,
     0x403a9919,
@@ -437,7 +443,7 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x405d1e9e,
     0x405d9eb5,
     0x405e1ed5,
-    0x405e8a17,
+    0x405e8a08,
     0x405f1ef6,
     0x405f9f03,
     0x40601f11,
@@ -474,18 +480,18 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x406fa60d,
     0x40702620,
     0x4070a63d,
-    0x40710782,
+    0x40710773,
     0x4071a64f,
     0x40722662,
     0x4072a67b,
     0x40732693,
-    0x407390bd,
+    0x407390c9,
     0x407426a7,
     0x4074a6c1,
     0x407526d2,
     0x4075a6e6,
     0x407626f4,
-    0x40769286,
+    0x40769292,
     0x40772719,
     0x4077a73b,
     0x40782756,
@@ -528,48 +534,48 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x422c251d,
     0x422ca4d8,
     0x422d24b7,
-    0x443206ad,
-    0x443286bc,
-    0x443306c8,
-    0x443386d6,
-    0x443406e9,
-    0x443486fa,
-    0x44350701,
-    0x4435870b,
-    0x4436071e,
-    0x44368734,
-    0x44370746,
-    0x44378753,
-    0x44380762,
-    0x4438876a,
-    0x44390782,
-    0x44398790,
-    0x443a07a3,
-    0x4c3212b0,
-    0x4c3292c0,
-    0x4c3312d3,
-    0x4c3392f3,
+    0x4432069e,
+    0x443286ad,
+    0x443306b9,
+    0x443386c7,
+    0x443406da,
+    0x443486eb,
+    0x443506f2,
+    0x443586fc,
+    0x4436070f,
+    0x44368725,
+    0x44370737,
+    0x44378744,
+    0x44380753,
+    0x4438875b,
+    0x44390773,
+    0x44398781,
+    0x443a0794,
+    0x4c3212bc,
+    0x4c3292cc,
+    0x4c3312df,
+    0x4c3392ff,
     0x4c340094,
     0x4c3480b0,
-    0x4c3512ff,
-    0x4c35930d,
-    0x4c361329,
-    0x4c36933c,
-    0x4c37134b,
-    0x4c379359,
-    0x4c38136e,
-    0x4c38937a,
-    0x4c39139a,
-    0x4c3993c4,
-    0x4c3a13dd,
-    0x4c3a93f6,
-    0x4c3b05d0,
-    0x4c3b940f,
-    0x4c3c1421,
-    0x4c3c9430,
-    0x4c3d10bd,
-    0x4c3d9449,
-    0x4c3e1456,
+    0x4c35130b,
+    0x4c359319,
+    0x4c361335,
+    0x4c369348,
+    0x4c371357,
+    0x4c379365,
+    0x4c38137a,
+    0x4c389386,
+    0x4c3913a6,
+    0x4c3993d0,
+    0x4c3a13e9,
+    0x4c3a9402,
+    0x4c3b05c1,
+    0x4c3b941b,
+    0x4c3c142d,
+    0x4c3c943c,
+    0x4c3d10c9,
+    0x4c3d9455,
+    0x4c3e1462,
     0x50322a92,
     0x5032aaa1,
     0x50332aac,
@@ -607,7 +613,7 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x50432d43,
     0x5043ad53,
     0x50442d62,
-    0x50448414,
+    0x50448405,
     0x50452d76,
     0x5045ad94,
     0x50462da7,
@@ -631,45 +637,45 @@ const uint32_t kOpenSSLReasonValues[] = {
     0x504f2f62,
     0x504faf79,
     0x50502f88,
-    0x50508687,
+    0x50508678,
     0x50512f9b,
-    0x58320e1f,
-    0x68320de1,
-    0x68328b9b,
-    0x68330bae,
-    0x68338def,
-    0x68340dff,
+    0x58320e2b,
+    0x68320ded,
+    0x68328b98,
+    0x68330bab,
+    0x68338dfb,
+    0x68340e0b,
     0x683480b0,
-    0x6c320dbd,
-    0x6c328b7e,
-    0x6c330dc8,
-    0x7432098d,
-    0x783208f2,
-    0x78328907,
-    0x78330913,
+    0x6c320dc9,
+    0x6c328b6f,
+    0x6c330dd4,
+    0x7432097e,
+    0x783208e3,
+    0x783288f8,
+    0x78330904,
     0x78338083,
-    0x78340922,
-    0x78348937,
-    0x78350956,
-    0x78358978,
-    0x7836098d,
-    0x783689a3,
-    0x783709b3,
-    0x783789c6,
-    0x783809d9,
-    0x783889eb,
-    0x783909f8,
-    0x78398a17,
-    0x783a0a2c,
-    0x783a8a3a,
-    0x783b0a44,
-    0x783b8a58,
-    0x783c0a6f,
-    0x783c8a84,
-    0x783d0a9b,
-    0x783d8ab0,
-    0x783e0a06,
-    0x7c3211b2,
+    0x78340913,
+    0x78348928,
+    0x78350947,
+    0x78358969,
+    0x7836097e,
+    0x78368994,
+    0x783709a4,
+    0x783789b7,
+    0x783809ca,
+    0x783889dc,
+    0x783909e9,
+    0x78398a08,
+    0x783a0a1d,
+    0x783a8a2b,
+    0x783b0a35,
+    0x783b8a49,
+    0x783c0a60,
+    0x783c8a75,
+    0x783d0a8c,
+    0x783d8aa1,
+    0x783e09f7,
+    0x7c3211be,
 };
 
 const size_t kOpenSSLReasonValuesLen = sizeof(kOpenSSLReasonValues) / sizeof(kOpenSSLReasonValues[0]);
@@ -725,7 +731,6 @@ const char kOpenSSLReasonStringData[] =
     "INVALID_UNIVERSALSTRING_LENGTH\0"
     "INVALID_UTF8STRING\0"
     "LIST_ERROR\0"
-    "MALLOC_FAILURE\0"
     "MISSING_ASN1_EOS\0"
     "MISSING_EOC\0"
     "MISSING_SECOND_NUMBER\0"
@@ -833,6 +838,7 @@ const char kOpenSSLReasonStringData[] =
     "MODULUS_TOO_LARGE\0"
     "NO_PRIVATE_VALUE\0"
     "BAD_Q_VALUE\0"
+    "BAD_VERSION\0"
     "MISSING_PARAMETERS\0"
     "NEED_NEW_SETUP_VALUES\0"
     "BIGNUM_OUT_OF_RANGE\0"
@@ -840,6 +846,7 @@ const char kOpenSSLReasonStringData[] =
     "D2I_ECPKPARAMETERS_FAILURE\0"
     "EC_GROUP_NEW_BY_NAME_FAILURE\0"
     "GROUP2PKPARAMETERS_FAILURE\0"
+    "GROUP_MISMATCH\0"
     "I2D_ECPKPARAMETERS_FAILURE\0"
     "INCOMPATIBLE_OBJECTS\0"
     "INVALID_COMPRESSED_POINT\0"
@@ -948,7 +955,6 @@ const char kOpenSSLReasonStringData[] =
     "BAD_FIXED_HEADER_DECRYPT\0"
     "BAD_PAD_BYTE_COUNT\0"
     "BAD_RSA_PARAMETERS\0"
-    "BAD_VERSION\0"
     "BLOCK_TYPE_IS_NOT_01\0"
     "BN_NOT_INITIALIZED\0"
     "CANNOT_RECOVER_MULTI_PRIME_KEY\0"
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index de25edbeb5..94e1807c6b 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -311,6 +311,7 @@ CORE_SOURCE_FILES = [
   'third_party/boringssl/crypto/bn/shift.c',
   'third_party/boringssl/crypto/bn/sqrt.c',
   'third_party/boringssl/crypto/buf/buf.c',
+  'third_party/boringssl/crypto/bytestring/asn1_compat.c',
   'third_party/boringssl/crypto/bytestring/ber.c',
   'third_party/boringssl/crypto/bytestring/cbb.c',
   'third_party/boringssl/crypto/bytestring/cbs.c',
@@ -334,6 +335,7 @@ CORE_SOURCE_FILES = [
   'third_party/boringssl/crypto/cpu-intel.c',
   'third_party/boringssl/crypto/crypto.c',
   'third_party/boringssl/crypto/curve25519/curve25519.c',
+  'third_party/boringssl/crypto/curve25519/x25519-x86_64.c',
   'third_party/boringssl/crypto/des/des.c',
   'third_party/boringssl/crypto/dh/check.c',
   'third_party/boringssl/crypto/dh/dh.c',
@@ -525,6 +527,7 @@ CORE_SOURCE_FILES = [
   'third_party/boringssl/ssl/ssl_buffer.c',
   'third_party/boringssl/ssl/ssl_cert.c',
   'third_party/boringssl/ssl/ssl_cipher.c',
+  'third_party/boringssl/ssl/ssl_ecdh.c',
   'third_party/boringssl/ssl/ssl_file.c',
   'third_party/boringssl/ssl/ssl_lib.c',
   'third_party/boringssl/ssl/ssl_rsa.c',
diff --git a/third_party/boringssl b/third_party/boringssl
index 907ae62b9d..c880e42ba1 160000
--- a/third_party/boringssl
+++ b/third_party/boringssl
@@ -1 +1 @@
-Subproject commit 907ae62b9d81121cb86b604f83e6b811a43f7a87
+Subproject commit c880e42ba1c8032d4cdde2aba0541d8a9d9fa2e9
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index cfbdbbfbc2..475dfbc67b 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -3202,6 +3202,19 @@
     "third_party": true, 
     "type": "target"
   }, 
+  {
+    "deps": [
+      "boringssl", 
+      "boringssl_test_util", 
+      "boringssl_x509_test_lib"
+    ], 
+    "headers": [], 
+    "language": "c++", 
+    "name": "boringssl_x509_test", 
+    "src": [], 
+    "third_party": true, 
+    "type": "target"
+  }, 
   {
     "deps": [
       "boringssl", 
@@ -4575,12 +4588,12 @@
       "third_party/boringssl/crypto/cipher/internal.h", 
       "third_party/boringssl/crypto/conf/conf_def.h", 
       "third_party/boringssl/crypto/conf/internal.h", 
+      "third_party/boringssl/crypto/curve25519/internal.h", 
       "third_party/boringssl/crypto/des/internal.h", 
       "third_party/boringssl/crypto/dh/internal.h", 
       "third_party/boringssl/crypto/digest/internal.h", 
       "third_party/boringssl/crypto/digest/md32_common.h", 
       "third_party/boringssl/crypto/directory.h", 
-      "third_party/boringssl/crypto/dsa/internal.h", 
       "third_party/boringssl/crypto/ec/internal.h", 
       "third_party/boringssl/crypto/ec/p256-x86_64-table.h", 
       "third_party/boringssl/crypto/evp/internal.h", 
@@ -5087,6 +5100,18 @@
     "third_party": true, 
     "type": "lib"
   }, 
+  {
+    "deps": [
+      "boringssl", 
+      "boringssl_test_util"
+    ], 
+    "headers": [], 
+    "language": "c++", 
+    "name": "boringssl_x509_test_lib", 
+    "src": [], 
+    "third_party": true, 
+    "type": "lib"
+  }, 
   {
     "deps": [
       "boringssl", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index ab7dca699a..973921faec 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -4240,6 +4240,30 @@
       "windows"
     ]
   }, 
+  {
+    "args": [], 
+    "boringssl": true, 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "defaults": "boringssl", 
+    "exclude_configs": [
+      "asan"
+    ], 
+    "flaky": false, 
+    "language": "c++", 
+    "name": "boringssl_x509_test", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ]
+  }, 
   {
     "args": [], 
     "boringssl": true, 
diff --git a/vsprojects/vcxproj/boringssl/boringssl.vcxproj b/vsprojects/vcxproj/boringssl/boringssl.vcxproj
index 27125c42dc..59db775d79 100644
--- a/vsprojects/vcxproj/boringssl/boringssl.vcxproj
+++ b/vsprojects/vcxproj/boringssl/boringssl.vcxproj
@@ -156,12 +156,12 @@
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\cipher\internal.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\conf\conf_def.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\conf\internal.h" />
+    <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\curve25519\internal.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\des\internal.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\dh\internal.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\digest\internal.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\digest\md32_common.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\directory.h" />
-    <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\dsa\internal.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\ec\internal.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\ec\p256-x86_64-table.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\evp\internal.h" />
@@ -400,6 +400,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\buf\buf.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\bytestring\asn1_compat.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\bytestring\ber.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\bytestring\cbb.c">
@@ -446,6 +448,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\curve25519\curve25519.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\curve25519\x25519-x86_64.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\des\des.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\dh\check.c">
@@ -828,6 +832,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\ssl\ssl_cipher.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\ssl\ssl_ecdh.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\ssl\ssl_file.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\ssl\ssl_lib.c">
diff --git a/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters b/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters
index 8cee094270..bd996bdc44 100644
--- a/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters
+++ b/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters
@@ -217,6 +217,9 @@
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\buf\buf.c">
       <Filter>third_party\boringssl\crypto\buf</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\bytestring\asn1_compat.c">
+      <Filter>third_party\boringssl\crypto\bytestring</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\bytestring\ber.c">
       <Filter>third_party\boringssl\crypto\bytestring</Filter>
     </ClCompile>
@@ -286,6 +289,9 @@
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\curve25519\curve25519.c">
       <Filter>third_party\boringssl\crypto\curve25519</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\curve25519\x25519-x86_64.c">
+      <Filter>third_party\boringssl\crypto\curve25519</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\des\des.c">
       <Filter>third_party\boringssl\crypto\des</Filter>
     </ClCompile>
@@ -859,6 +865,9 @@
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\ssl\ssl_cipher.c">
       <Filter>third_party\boringssl\ssl</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\ssl\ssl_ecdh.c">
+      <Filter>third_party\boringssl\ssl</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\ssl\ssl_file.c">
       <Filter>third_party\boringssl\ssl</Filter>
     </ClCompile>
@@ -912,6 +921,9 @@
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\conf\internal.h">
       <Filter>third_party\boringssl\crypto\conf</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\curve25519\internal.h">
+      <Filter>third_party\boringssl\crypto\curve25519</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\des\internal.h">
       <Filter>third_party\boringssl\crypto\des</Filter>
     </ClInclude>
@@ -927,9 +939,6 @@
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\directory.h">
       <Filter>third_party\boringssl\crypto</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\dsa\internal.h">
-      <Filter>third_party\boringssl\crypto\dsa</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\third_party\boringssl\crypto\ec\internal.h">
       <Filter>third_party\boringssl\crypto\ec</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj
new file mode 100644
index 0000000000..2bf7f71531
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{0E1472A5-A857-7680-45C6-7C4DD2F6BE48}</ProjectGuid>
+    <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+    <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+    <PlatformToolset>v100</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(SolutionDir)\..\vsprojects\cpptest.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\openssl.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\protobuf.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\zlib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <TargetName>boringssl_x509_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <TargetName>boringssl_x509_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Release</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Release</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\vsprojects\dummy.c">
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\test/boringssl\boringssl_x509_test_lib\boringssl_x509_test_lib.vcxproj">
+      <Project>{62DBB3BA-05D6-D2CF-7EC5-253F2AC25892}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
+      <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  </ImportGroup>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
+  </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj.filters
new file mode 100644
index 0000000000..00e4276f1d
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test/boringssl_x509_test.vcxproj.filters
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+  <ItemGroup>
+  </ItemGroup>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj
new file mode 100644
index 0000000000..f8b0e7a701
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{62DBB3BA-05D6-D2CF-7EC5-253F2AC25892}</ProjectGuid>
+    <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+    <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+    <PlatformToolset>v100</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <TargetName>boringssl_x509_test_lib</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <TargetName>boringssl_x509_test_lib</TargetName>
+  </PropertyGroup>
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>false</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\x509\x509_test.cc">
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
+      <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+  </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj.filters
new file mode 100644
index 0000000000..216a56fae3
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_x509_test_lib/boringssl_x509_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\third_party\boringssl\crypto\x509\x509_test.cc">
+      <Filter>third_party\boringssl\crypto\x509</Filter>
+    </ClCompile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Filter Include="third_party">
+      <UniqueIdentifier>{0a04403f-6935-8e9c-c271-cfcb728d6dd3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="third_party\boringssl">
+      <UniqueIdentifier>{8ffac2f8-0d1d-00df-018c-56100e9842f7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="third_party\boringssl\crypto">
+      <UniqueIdentifier>{2d1857b4-2355-6af6-b6c8-b33f3ec27013}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="third_party\boringssl\crypto\x509">
+      <UniqueIdentifier>{615f50f9-1415-e8e4-49ec-987a5772c7ee}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
+
-- 
GitLab


From a5b7df924276744f900850014e0ae63fac29a9a4 Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Thu, 21 Apr 2016 16:49:25 -0700
Subject: [PATCH 119/525] fix buildgen plugin file comment

---
 tools/buildgen/plugins/expand_version.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/buildgen/plugins/expand_version.py b/tools/buildgen/plugins/expand_version.py
index dd77f7af12..c6cc5621c9 100755
--- a/tools/buildgen/plugins/expand_version.py
+++ b/tools/buildgen/plugins/expand_version.py
@@ -27,10 +27,10 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-"""Buildgen .proto files list plugin.
+"""Buildgen package version plugin
 
 This parses the list of targets from the yaml build file, and creates
-a list called "protos" that contains all of the proto file names.
+a custom version string for each language's package.
 
 """
 
-- 
GitLab


From 445a82bfae3a3b221d5c55183edfca7802c8476c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 21 Apr 2016 13:18:26 -0700
Subject: [PATCH 120/525] Add C# stress test client

---
 .../.gitignore                                |   3 +
 ...rpc.IntegrationTesting.StressClient.csproj |  60 ++++
 .../Program.cs                                |  12 +
 .../Properties/AssemblyInfo.cs                |  11 +
 .../Grpc.IntegrationTesting.csproj            |   1 +
 .../StressTestClient.cs                       | 296 ++++++++++++++++++
 src/csharp/Grpc.sln                           |   8 +
 src/csharp/generate_proto_csharp.sh           |   2 +-
 8 files changed, 392 insertions(+), 1 deletion(-)
 create mode 100644 src/csharp/Grpc.IntegrationTesting.StressClient/.gitignore
 create mode 100644 src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj
 create mode 100644 src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs
 create mode 100644 src/csharp/Grpc.IntegrationTesting.StressClient/Properties/AssemblyInfo.cs
 create mode 100644 src/csharp/Grpc.IntegrationTesting/StressTestClient.cs

diff --git a/src/csharp/Grpc.IntegrationTesting.StressClient/.gitignore b/src/csharp/Grpc.IntegrationTesting.StressClient/.gitignore
new file mode 100644
index 0000000000..a382af2294
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.StressClient/.gitignore
@@ -0,0 +1,3 @@
+bin
+obj
+
diff --git a/src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj b/src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj
new file mode 100644
index 0000000000..d6eba74289
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{ADEBA147-80AE-4710-82E9-5B7F93690266}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Grpc.IntegrationTesting.StressClient</RootNamespace>
+    <AssemblyName>Grpc.IntegrationTesting.StressClient</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseSigned|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\ReleaseSigned</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <SignAssembly>True</SignAssembly>
+    <AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\Grpc.Core\Version.cs">
+      <Link>Version.cs</Link>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <ProjectReference Include="..\Grpc.Core\Grpc.Core.csproj">
+      <Project>{CCC4440E-49F7-4790-B0AF-FEABB0837AE7}</Project>
+      <Name>Grpc.Core</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Grpc.IntegrationTesting\Grpc.IntegrationTesting.csproj">
+      <Project>{C61154BA-DD4A-4838-8420-0162A28925E0}</Project>
+      <Name>Grpc.IntegrationTesting</Name>
+    </ProjectReference>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs b/src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs
new file mode 100644
index 0000000000..4285146756
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace Grpc.IntegrationTesting.StressClient
+{
+    class MainClass
+    {
+        public static void Main(string[] args)
+        {
+            StressTestClient.Run(args);
+        }
+    }
+}
diff --git a/src/csharp/Grpc.IntegrationTesting.StressClient/Properties/AssemblyInfo.cs b/src/csharp/Grpc.IntegrationTesting.StressClient/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..e845bbfb9e
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.StressClient/Properties/AssemblyInfo.cs
@@ -0,0 +1,11 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle("Grpc.IntegrationTesting.StressClient")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("Google Inc.  All rights reserved.")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
diff --git a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
index c16d0e5c5d..176e005d02 100644
--- a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
+++ b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
@@ -113,6 +113,7 @@
     <Compile Include="GeneratedClientTest.cs" />
     <Compile Include="InterarrivalTimers.cs" />
     <Compile Include="NUnitMain.cs" />
+    <Compile Include="StressTestClient.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ItemGroup>
diff --git a/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs b/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
new file mode 100644
index 0000000000..b12b28b9a3
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
@@ -0,0 +1,296 @@
+#region Copyright notice and license
+
+// Copyright 2015-2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+using CommandLine;
+using CommandLine.Text;
+using Grpc.Core;
+using Grpc.Core.Logging;
+using Grpc.Core.Utils;
+using Grpc.Testing;
+
+namespace Grpc.IntegrationTesting
+{
+    public class StressTestClient
+    {
+        static readonly ILogger Logger = GrpcEnvironment.Logger.ForType<StressTestClient>();
+        const double SecondsToNanos = 1e9;
+
+        private class ClientOptions
+        {
+            [Option("server_addresses", DefaultValue = "localhost:8080")]
+            public string ServerAddresses { get; set; }
+
+            [Option("test_cases", DefaultValue = "large_unary:100")]
+            public string TestCases { get; set; }
+
+            [Option("test_duration_secs", DefaultValue = -1)]
+            public int TestDurationSecs { get; set; }
+
+            [Option("num_channels_per_server", DefaultValue = 1)]
+            public int NumChannelsPerServer { get; set; }
+
+            [Option("num_stubs_per_channel", DefaultValue = 1)]
+            public int NumStubsPerChannel { get; set; }
+
+            [Option("metrics_port", DefaultValue = 8081)]
+            public int MetricsPort { get; set; }
+
+            [HelpOption]
+            public string GetUsage()
+            {
+                var help = new HelpText
+                {
+                    Heading = "gRPC C# stress test client",
+                    AddDashesToOption = true
+                };
+                help.AddPreOptionsLine("Usage:");
+                help.AddOptions(this);
+                return help;
+            }
+        }
+
+        ClientOptions options;
+        List<string> serverAddresses;
+        Dictionary<string, int> weightedTestCases;
+        WeightedRandomGenerator testCaseGenerator;
+
+        // cancellation will be emitted once test_duration_secs has elapsed.
+        CancellationTokenSource finishedTokenSource = new CancellationTokenSource();
+        Histogram histogram = new Histogram(0.01, 60 * SecondsToNanos);
+
+        private StressTestClient(ClientOptions options, List<string> serverAddresses, Dictionary<string, int> weightedTestCases)
+        {
+            this.options = options;
+            this.serverAddresses = serverAddresses;
+            this.weightedTestCases = weightedTestCases;
+            this.testCaseGenerator = new WeightedRandomGenerator(this.weightedTestCases);
+        }
+
+        public static void Run(string[] args)
+        {
+            var options = new ClientOptions();
+            if (!Parser.Default.ParseArguments(args, options))
+            {
+                Environment.Exit(1);
+            }
+
+            GrpcPreconditions.CheckArgument(options.NumChannelsPerServer > 0);
+            GrpcPreconditions.CheckArgument(options.NumStubsPerChannel > 0);
+
+            var serverAddresses = options.ServerAddresses.Split(',');
+            GrpcPreconditions.CheckArgument(serverAddresses.Length > 0, "You need to provide at least one server address");
+
+            var testCases = ParseWeightedTestCases(options.TestCases);
+            GrpcPreconditions.CheckArgument(testCases.Count > 0, "You need to provide at least one test case");
+
+            var interopClient = new StressTestClient(options, serverAddresses.ToList(), testCases);
+            interopClient.Run().Wait();
+        }
+
+        async Task Run()
+        {
+            var metricsServer = new Server()
+            {
+                Services = { MetricsService.BindService(new MetricsServiceImpl(histogram)) },
+                Ports = { { "[::]", options.MetricsPort, ServerCredentials.Insecure } }
+            };
+            metricsServer.Start();
+
+            if (options.TestDurationSecs >= 0)
+            {
+                finishedTokenSource.CancelAfter(TimeSpan.FromSeconds(options.TestDurationSecs));
+            }
+
+            var tasks = new List<Task>();
+            var channels = new List<Channel>();
+            foreach (var serverAddress in serverAddresses)
+            {
+                for (int i = 0; i < options.NumChannelsPerServer; i++)
+                {
+                    var channel = new Channel(serverAddress, ChannelCredentials.Insecure);
+                    channels.Add(channel);
+                    for (int j = 0; j < options.NumStubsPerChannel; j++)
+                    {
+                        var client = TestService.NewClient(channel);
+                        var task = Task.Factory.StartNew(() => RunBodyAsync(client).GetAwaiter().GetResult(),
+                            TaskCreationOptions.LongRunning);
+                        tasks.Add(task);  
+                    }
+                }
+            }
+            await Task.WhenAll(tasks);
+
+            foreach (var channel in channels)
+            {
+                await channel.ShutdownAsync();
+            }
+
+            await metricsServer.ShutdownAsync();
+        }
+
+        async Task RunBodyAsync(TestService.TestServiceClient client)
+        {
+            Logger.Info("Starting stress test client thread.");
+            while (!finishedTokenSource.Token.IsCancellationRequested)
+            {
+                var testCase = testCaseGenerator.GetNext();
+
+                var stopwatch = Stopwatch.StartNew();
+
+                await RunTestCaseAsync(client, testCase);
+
+                stopwatch.Stop();
+                histogram.AddObservation(stopwatch.Elapsed.TotalSeconds * SecondsToNanos);
+            }
+            Logger.Info("Stress test client thread finished.");
+        }
+
+        async Task RunTestCaseAsync(TestService.TestServiceClient client, string testCase)
+        {
+            switch (testCase)
+            {
+                case "empty_unary":
+                    InteropClient.RunEmptyUnary(client);
+                    break;
+                case "large_unary":
+                    InteropClient.RunLargeUnary(client);
+                    break;
+                case "client_streaming":
+                    await InteropClient.RunClientStreamingAsync(client);
+                    break;
+                case "server_streaming":
+                    await InteropClient.RunServerStreamingAsync(client);
+                    break;
+                case "ping_pong":
+                    await InteropClient.RunPingPongAsync(client);
+                    break;
+                case "empty_stream":
+                    await InteropClient.RunEmptyStreamAsync(client);
+                    break;
+                case "cancel_after_begin":
+                    await InteropClient.RunCancelAfterBeginAsync(client);
+                    break;
+                case "cancel_after_first_response":
+                    await InteropClient.RunCancelAfterFirstResponseAsync(client);
+                    break;
+                case "timeout_on_sleeping_server":
+                    await InteropClient.RunTimeoutOnSleepingServerAsync(client);
+                    break;
+                case "custom_metadata":
+                    await InteropClient.RunCustomMetadataAsync(client);
+                    break;
+                case "status_code_and_message":
+                    await InteropClient.RunStatusCodeAndMessageAsync(client);
+                    break;
+                default:
+                    throw new ArgumentException("Unsupported test case  " + testCase);
+            }
+        }
+
+        static Dictionary<string, int> ParseWeightedTestCases(string weightedTestCases)
+        {
+            var result = new Dictionary<string, int>();
+            foreach (var weightedTestCase in weightedTestCases.Split(','))
+            {
+                var parts = weightedTestCase.Split(new char[] {':'}, 2);
+                GrpcPreconditions.CheckArgument(parts.Length == 2, "Malformed test_cases option.");
+                result.Add(parts[0], int.Parse(parts[1]));
+            }
+            return result;
+        }
+
+        class WeightedRandomGenerator
+        {
+            readonly Random random = new Random();
+            readonly List<Tuple<int, string>> cumulativeSums;
+            readonly int weightSum;
+
+            public WeightedRandomGenerator(Dictionary<string, int> weightedItems)
+            {
+                cumulativeSums = new List<Tuple<int, string>>();
+                weightSum = 0;
+                foreach (var entry in weightedItems)
+                {
+                    weightSum += entry.Value;
+                    cumulativeSums.Add(Tuple.Create(weightSum, entry.Key));
+                }
+            }
+
+            public string GetNext()
+            {
+                int rand = random.Next(weightSum);
+                foreach (var entry in cumulativeSums)
+                {
+                    if (rand < entry.Item1)
+                    {
+                        return entry.Item2;
+                    }
+                }
+                throw new InvalidOperationException("GetNext() failed.");
+            }
+        }
+
+        class MetricsServiceImpl : MetricsService.MetricsServiceBase 
+        {
+            readonly Histogram histogram;
+            readonly WallClockStopwatch wallClockStopwatch = new WallClockStopwatch();
+
+            public MetricsServiceImpl(Histogram histogram)
+            {
+                this.histogram = histogram;
+            }
+
+            public override async Task GetAllGauges(EmptyMessage request, IServerStreamWriter<GaugeResponse> responseStream, ServerCallContext context)
+            {
+                var snapshot = histogram.GetSnapshot(true);
+                var elapsedSnapshot = wallClockStopwatch.GetElapsedSnapshot(true);
+
+                double qps = snapshot.Count / elapsedSnapshot.Seconds;
+
+                var response = new GaugeResponse
+                {
+                    Name = "csharp_overall_qps",
+                    DoubleValue = qps
+                };
+                await responseStream.WriteAsync(response);
+            }
+        }
+    }
+}
diff --git a/src/csharp/Grpc.sln b/src/csharp/Grpc.sln
index 8ff35e8c0d..9be36c0caa 100644
--- a/src/csharp/Grpc.sln
+++ b/src/csharp/Grpc.sln
@@ -34,6 +34,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.HealthCheck.Tests", "G
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.IntegrationTesting.QpsWorker", "Grpc.IntegrationTesting.QpsWorker\Grpc.IntegrationTesting.QpsWorker.csproj", "{B82B7DFE-7F7B-40EF-B3D6-064FF2B01294}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.IntegrationTesting.StressClient", "Grpc.IntegrationTesting.StressClient\Grpc.IntegrationTesting.StressClient.csproj", "{ADEBA147-80AE-4710-82E9-5B7F93690266}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -83,6 +85,12 @@ Global
 		{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.Release|Any CPU.Build.0 = Release|Any CPU
 		{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.ReleaseSigned|Any CPU.ActiveCfg = ReleaseSigned|Any CPU
 		{AA5E328A-8835-49D7-98ED-C29F2B3049F0}.ReleaseSigned|Any CPU.Build.0 = ReleaseSigned|Any CPU
+		{ADEBA147-80AE-4710-82E9-5B7F93690266}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{ADEBA147-80AE-4710-82E9-5B7F93690266}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{ADEBA147-80AE-4710-82E9-5B7F93690266}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{ADEBA147-80AE-4710-82E9-5B7F93690266}.Release|Any CPU.Build.0 = Release|Any CPU
+		{ADEBA147-80AE-4710-82E9-5B7F93690266}.ReleaseSigned|Any CPU.ActiveCfg = Release|Any CPU
+		{ADEBA147-80AE-4710-82E9-5B7F93690266}.ReleaseSigned|Any CPU.Build.0 = Release|Any CPU
 		{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{AE21D0EE-9A2C-4C15-AB7F-5224EED5B0EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/src/csharp/generate_proto_csharp.sh b/src/csharp/generate_proto_csharp.sh
index 9ac770b79d..79488e02a5 100755
--- a/src/csharp/generate_proto_csharp.sh
+++ b/src/csharp/generate_proto_csharp.sh
@@ -45,4 +45,4 @@ $PROTOC --plugin=$PLUGIN --csharp_out=$HEALTHCHECK_DIR --grpc_out=$HEALTHCHECK_D
     -I src/proto/grpc/health/v1 src/proto/grpc/health/v1/health.proto
 
 $PROTOC --plugin=$PLUGIN --csharp_out=$TESTING_DIR --grpc_out=$TESTING_DIR \
-    -I . src/proto/grpc/testing/{control,empty,messages,payloads,services,stats,test}.proto 
+    -I . src/proto/grpc/testing/{control,empty,messages,metrics,payloads,services,stats,test}.proto 
-- 
GitLab


From 987e978e4136d7ab47412a9a6aaab9275ac152c9 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 21 Apr 2016 13:53:39 -0700
Subject: [PATCH 121/525] add metrics.proto generated files to C# project

---
 .../Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj      | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
index 176e005d02..9685cf1837 100644
--- a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
+++ b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
@@ -114,6 +114,8 @@
     <Compile Include="InterarrivalTimers.cs" />
     <Compile Include="NUnitMain.cs" />
     <Compile Include="StressTestClient.cs" />
+    <Compile Include="Metrics.cs" />
+    <Compile Include="MetricsGrpc.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ItemGroup>
-- 
GitLab


From 44aa843b1b1cb2467efec434c4ef002ca86dd2bf Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 21 Apr 2016 13:54:44 -0700
Subject: [PATCH 122/525] add generated proto files

---
 src/csharp/Grpc.IntegrationTesting/Metrics.cs | 452 ++++++++++++++++++
 .../Grpc.IntegrationTesting/MetricsGrpc.cs    | 146 ++++++
 2 files changed, 598 insertions(+)
 create mode 100644 src/csharp/Grpc.IntegrationTesting/Metrics.cs
 create mode 100644 src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs

diff --git a/src/csharp/Grpc.IntegrationTesting/Metrics.cs b/src/csharp/Grpc.IntegrationTesting/Metrics.cs
new file mode 100644
index 0000000000..3163949d32
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting/Metrics.cs
@@ -0,0 +1,452 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: src/proto/grpc/testing/metrics.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Grpc.Testing {
+
+  /// <summary>Holder for reflection information generated from src/proto/grpc/testing/metrics.proto</summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public static partial class MetricsReflection {
+
+    #region Descriptor
+    /// <summary>File descriptor for src/proto/grpc/testing/metrics.proto</summary>
+    public static pbr::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbr::FileDescriptor descriptor;
+
+    static MetricsReflection() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          string.Concat(
+            "CiRzcmMvcHJvdG8vZ3JwYy90ZXN0aW5nL21ldHJpY3MucHJvdG8SDGdycGMu",
+            "dGVzdGluZyJsCg1HYXVnZVJlc3BvbnNlEgwKBG5hbWUYASABKAkSFAoKbG9u",
+            "Z192YWx1ZRgCIAEoA0gAEhYKDGRvdWJsZV92YWx1ZRgDIAEoAUgAEhYKDHN0",
+            "cmluZ192YWx1ZRgEIAEoCUgAQgcKBXZhbHVlIhwKDEdhdWdlUmVxdWVzdBIM",
+            "CgRuYW1lGAEgASgJIg4KDEVtcHR5TWVzc2FnZTKgAQoOTWV0cmljc1NlcnZp",
+            "Y2USSQoMR2V0QWxsR2F1Z2VzEhouZ3JwYy50ZXN0aW5nLkVtcHR5TWVzc2Fn",
+            "ZRobLmdycGMudGVzdGluZy5HYXVnZVJlc3BvbnNlMAESQwoIR2V0R2F1Z2US",
+            "Gi5ncnBjLnRlc3RpbmcuR2F1Z2VSZXF1ZXN0GhsuZ3JwYy50ZXN0aW5nLkdh",
+            "dWdlUmVzcG9uc2ViBnByb3RvMw=="));
+      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+          new pbr::FileDescriptor[] { },
+          new pbr::GeneratedCodeInfo(null, new pbr::GeneratedCodeInfo[] {
+            new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.GaugeResponse), global::Grpc.Testing.GaugeResponse.Parser, new[]{ "Name", "LongValue", "DoubleValue", "StringValue" }, new[]{ "Value" }, null, null),
+            new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.GaugeRequest), global::Grpc.Testing.GaugeRequest.Parser, new[]{ "Name" }, null, null, null),
+            new pbr::GeneratedCodeInfo(typeof(global::Grpc.Testing.EmptyMessage), global::Grpc.Testing.EmptyMessage.Parser, null, null, null, null)
+          }));
+    }
+    #endregion
+
+  }
+  #region Messages
+  /// <summary>
+  ///  Reponse message containing the gauge name and value
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GaugeResponse : pb::IMessage<GaugeResponse> {
+    private static readonly pb::MessageParser<GaugeResponse> _parser = new pb::MessageParser<GaugeResponse>(() => new GaugeResponse());
+    public static pb::MessageParser<GaugeResponse> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Grpc.Testing.MetricsReflection.Descriptor.MessageTypes[0]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GaugeResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GaugeResponse(GaugeResponse other) : this() {
+      name_ = other.name_;
+      switch (other.ValueCase) {
+        case ValueOneofCase.LongValue:
+          LongValue = other.LongValue;
+          break;
+        case ValueOneofCase.DoubleValue:
+          DoubleValue = other.DoubleValue;
+          break;
+        case ValueOneofCase.StringValue:
+          StringValue = other.StringValue;
+          break;
+      }
+
+    }
+
+    public GaugeResponse Clone() {
+      return new GaugeResponse(this);
+    }
+
+    /// <summary>Field number for the "name" field.</summary>
+    public const int NameFieldNumber = 1;
+    private string name_ = "";
+    public string Name {
+      get { return name_; }
+      set {
+        name_ = pb::Preconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "long_value" field.</summary>
+    public const int LongValueFieldNumber = 2;
+    public long LongValue {
+      get { return valueCase_ == ValueOneofCase.LongValue ? (long) value_ : 0L; }
+      set {
+        value_ = value;
+        valueCase_ = ValueOneofCase.LongValue;
+      }
+    }
+
+    /// <summary>Field number for the "double_value" field.</summary>
+    public const int DoubleValueFieldNumber = 3;
+    public double DoubleValue {
+      get { return valueCase_ == ValueOneofCase.DoubleValue ? (double) value_ : 0D; }
+      set {
+        value_ = value;
+        valueCase_ = ValueOneofCase.DoubleValue;
+      }
+    }
+
+    /// <summary>Field number for the "string_value" field.</summary>
+    public const int StringValueFieldNumber = 4;
+    public string StringValue {
+      get { return valueCase_ == ValueOneofCase.StringValue ? (string) value_ : ""; }
+      set {
+        value_ = pb::Preconditions.CheckNotNull(value, "value");
+        valueCase_ = ValueOneofCase.StringValue;
+      }
+    }
+
+    private object value_;
+    /// <summary>Enum of possible cases for the "value" oneof.</summary>
+    public enum ValueOneofCase {
+      None = 0,
+      LongValue = 2,
+      DoubleValue = 3,
+      StringValue = 4,
+    }
+    private ValueOneofCase valueCase_ = ValueOneofCase.None;
+    public ValueOneofCase ValueCase {
+      get { return valueCase_; }
+    }
+
+    public void ClearValue() {
+      valueCase_ = ValueOneofCase.None;
+      value_ = null;
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GaugeResponse);
+    }
+
+    public bool Equals(GaugeResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Name != other.Name) return false;
+      if (LongValue != other.LongValue) return false;
+      if (DoubleValue != other.DoubleValue) return false;
+      if (StringValue != other.StringValue) return false;
+      if (ValueCase != other.ValueCase) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Name.Length != 0) hash ^= Name.GetHashCode();
+      if (valueCase_ == ValueOneofCase.LongValue) hash ^= LongValue.GetHashCode();
+      if (valueCase_ == ValueOneofCase.DoubleValue) hash ^= DoubleValue.GetHashCode();
+      if (valueCase_ == ValueOneofCase.StringValue) hash ^= StringValue.GetHashCode();
+      hash ^= (int) valueCase_;
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Name.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(Name);
+      }
+      if (valueCase_ == ValueOneofCase.LongValue) {
+        output.WriteRawTag(16);
+        output.WriteInt64(LongValue);
+      }
+      if (valueCase_ == ValueOneofCase.DoubleValue) {
+        output.WriteRawTag(25);
+        output.WriteDouble(DoubleValue);
+      }
+      if (valueCase_ == ValueOneofCase.StringValue) {
+        output.WriteRawTag(34);
+        output.WriteString(StringValue);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Name.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+      }
+      if (valueCase_ == ValueOneofCase.LongValue) {
+        size += 1 + pb::CodedOutputStream.ComputeInt64Size(LongValue);
+      }
+      if (valueCase_ == ValueOneofCase.DoubleValue) {
+        size += 1 + 8;
+      }
+      if (valueCase_ == ValueOneofCase.StringValue) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(StringValue);
+      }
+      return size;
+    }
+
+    public void MergeFrom(GaugeResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Name.Length != 0) {
+        Name = other.Name;
+      }
+      switch (other.ValueCase) {
+        case ValueOneofCase.LongValue:
+          LongValue = other.LongValue;
+          break;
+        case ValueOneofCase.DoubleValue:
+          DoubleValue = other.DoubleValue;
+          break;
+        case ValueOneofCase.StringValue:
+          StringValue = other.StringValue;
+          break;
+      }
+
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            Name = input.ReadString();
+            break;
+          }
+          case 16: {
+            LongValue = input.ReadInt64();
+            break;
+          }
+          case 25: {
+            DoubleValue = input.ReadDouble();
+            break;
+          }
+          case 34: {
+            StringValue = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  ///  Request message containing the gauge name
+  /// </summary>
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class GaugeRequest : pb::IMessage<GaugeRequest> {
+    private static readonly pb::MessageParser<GaugeRequest> _parser = new pb::MessageParser<GaugeRequest>(() => new GaugeRequest());
+    public static pb::MessageParser<GaugeRequest> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Grpc.Testing.MetricsReflection.Descriptor.MessageTypes[1]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public GaugeRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public GaugeRequest(GaugeRequest other) : this() {
+      name_ = other.name_;
+    }
+
+    public GaugeRequest Clone() {
+      return new GaugeRequest(this);
+    }
+
+    /// <summary>Field number for the "name" field.</summary>
+    public const int NameFieldNumber = 1;
+    private string name_ = "";
+    public string Name {
+      get { return name_; }
+      set {
+        name_ = pb::Preconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as GaugeRequest);
+    }
+
+    public bool Equals(GaugeRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Name != other.Name) return false;
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Name.Length != 0) hash ^= Name.GetHashCode();
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Name.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(Name);
+      }
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      if (Name.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+      }
+      return size;
+    }
+
+    public void MergeFrom(GaugeRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Name.Length != 0) {
+        Name = other.Name;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            Name = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+  public sealed partial class EmptyMessage : pb::IMessage<EmptyMessage> {
+    private static readonly pb::MessageParser<EmptyMessage> _parser = new pb::MessageParser<EmptyMessage>(() => new EmptyMessage());
+    public static pb::MessageParser<EmptyMessage> Parser { get { return _parser; } }
+
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Grpc.Testing.MetricsReflection.Descriptor.MessageTypes[2]; }
+    }
+
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    public EmptyMessage() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    public EmptyMessage(EmptyMessage other) : this() {
+    }
+
+    public EmptyMessage Clone() {
+      return new EmptyMessage(this);
+    }
+
+    public override bool Equals(object other) {
+      return Equals(other as EmptyMessage);
+    }
+
+    public bool Equals(EmptyMessage other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      return true;
+    }
+
+    public override int GetHashCode() {
+      int hash = 1;
+      return hash;
+    }
+
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    public void WriteTo(pb::CodedOutputStream output) {
+    }
+
+    public int CalculateSize() {
+      int size = 0;
+      return size;
+    }
+
+    public void MergeFrom(EmptyMessage other) {
+      if (other == null) {
+        return;
+      }
+    }
+
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+        }
+      }
+    }
+
+  }
+
+  #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
new file mode 100644
index 0000000000..cc01ae91a1
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -0,0 +1,146 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: src/proto/grpc/testing/metrics.proto
+#region Designer generated code
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using Grpc.Core;
+
+namespace Grpc.Testing {
+  public static class MetricsService
+  {
+    static readonly string __ServiceName = "grpc.testing.MetricsService";
+
+    static readonly Marshaller<global::Grpc.Testing.EmptyMessage> __Marshaller_EmptyMessage = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.EmptyMessage.Parser.ParseFrom);
+    static readonly Marshaller<global::Grpc.Testing.GaugeResponse> __Marshaller_GaugeResponse = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.GaugeResponse.Parser.ParseFrom);
+    static readonly Marshaller<global::Grpc.Testing.GaugeRequest> __Marshaller_GaugeRequest = Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::Grpc.Testing.GaugeRequest.Parser.ParseFrom);
+
+    static readonly Method<global::Grpc.Testing.EmptyMessage, global::Grpc.Testing.GaugeResponse> __Method_GetAllGauges = new Method<global::Grpc.Testing.EmptyMessage, global::Grpc.Testing.GaugeResponse>(
+        MethodType.ServerStreaming,
+        __ServiceName,
+        "GetAllGauges",
+        __Marshaller_EmptyMessage,
+        __Marshaller_GaugeResponse);
+
+    static readonly Method<global::Grpc.Testing.GaugeRequest, global::Grpc.Testing.GaugeResponse> __Method_GetGauge = new Method<global::Grpc.Testing.GaugeRequest, global::Grpc.Testing.GaugeResponse>(
+        MethodType.Unary,
+        __ServiceName,
+        "GetGauge",
+        __Marshaller_GaugeRequest,
+        __Marshaller_GaugeResponse);
+
+    // service descriptor
+    public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
+    {
+      get { return global::Grpc.Testing.MetricsReflection.Descriptor.Services[0]; }
+    }
+
+    // client interface
+    [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
+    public interface IMetricsServiceClient
+    {
+      AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, CallOptions options);
+      global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, CallOptions options);
+      AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, CallOptions options);
+    }
+
+    // server-side interface
+    [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
+    public interface IMetricsService
+    {
+      Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context);
+      Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context);
+    }
+
+    // server-side abstract class
+    public abstract class MetricsServiceBase
+    {
+      public virtual Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context)
+      {
+        throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+      }
+
+      public virtual Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context)
+      {
+        throw new RpcException(new Status(StatusCode.Unimplemented, ""));
+      }
+
+    }
+
+    // client stub
+    public class MetricsServiceClient : ClientBase<MetricsServiceClient>, IMetricsServiceClient
+    {
+      public MetricsServiceClient(Channel channel) : base(channel)
+      {
+      }
+      public MetricsServiceClient(CallInvoker callInvoker) : base(callInvoker)
+      {
+      }
+      ///<summary>Protected parameterless constructor to allow creation of test doubles.</summary>
+      protected MetricsServiceClient() : base()
+      {
+      }
+      ///<summary>Protected constructor to allow creation of configured clients.</summary>
+      protected MetricsServiceClient(ClientBaseConfiguration configuration) : base(configuration)
+      {
+      }
+
+      public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return GetAllGauges(request, new CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, CallOptions options)
+      {
+        return CallInvoker.AsyncServerStreamingCall(__Method_GetAllGauges, null, options, request);
+      }
+      public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return GetGauge(request, new CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, CallOptions options)
+      {
+        return CallInvoker.BlockingUnaryCall(__Method_GetGauge, null, options, request);
+      }
+      public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return GetGaugeAsync(request, new CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, CallOptions options)
+      {
+        return CallInvoker.AsyncUnaryCall(__Method_GetGauge, null, options, request);
+      }
+      protected override MetricsServiceClient NewInstance(ClientBaseConfiguration configuration)
+      {
+        return new MetricsServiceClient(configuration);
+      }
+    }
+
+    // creates service definition that can be registered with a server
+    public static ServerServiceDefinition BindService(IMetricsService serviceImpl)
+    {
+      return ServerServiceDefinition.CreateBuilder(__ServiceName)
+          .AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
+          .AddMethod(__Method_GetGauge, serviceImpl.GetGauge).Build();
+    }
+
+    // creates service definition that can be registered with a server
+    public static ServerServiceDefinition BindService(MetricsServiceBase serviceImpl)
+    {
+      return ServerServiceDefinition.CreateBuilder(__ServiceName)
+          .AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
+          .AddMethod(__Method_GetGauge, serviceImpl.GetGauge).Build();
+    }
+
+    // creates a new client
+    public static MetricsServiceClient NewClient(Channel channel)
+    {
+      return new MetricsServiceClient(channel);
+    }
+
+  }
+}
+#endregion
-- 
GitLab


From e06a81f877080becddcb07923ee680188d4988f3 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 22:58:58 -0700
Subject: [PATCH 123/525] Fixup API changes

---
 .../resolver/zookeeper/zookeeper_resolver.c   |  2 ++
 test/core/iomgr/resolve_address_test.c        | 28 ++++++++++++++-----
 2 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
index aa0b4bcede..deb4b9b1ef 100644
--- a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
+++ b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
@@ -375,8 +375,10 @@ static void zookeeper_get_node_completion(int rc, const char *value,
     r->resolved_addrs->naddrs = 0;
     r->resolved_total = 1;
     /** Further resolves address by DNS */
+    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
     grpc_resolve_address(&exec_ctx, address, NULL, zookeeper_dns_resolved, r);
     gpr_free(address);
+    grpc_exec_ctx_finish(&exec_ctx);
     return;
   }
 
diff --git a/test/core/iomgr/resolve_address_test.c b/test/core/iomgr/resolve_address_test.c
index a66edc9df2..c3ede1801d 100644
--- a/test/core/iomgr/resolve_address_test.c
+++ b/test/core/iomgr/resolve_address_test.c
@@ -59,28 +59,36 @@ static void must_fail(grpc_exec_ctx *exec_ctx, void *evp,
 static void test_localhost(void) {
   gpr_event ev;
   gpr_event_init(&ev);
-  grpc_resolve_address("localhost:1", NULL, must_succeed, &ev);
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  grpc_resolve_address(&exec_ctx, "localhost:1", NULL, must_succeed, &ev);
+  grpc_exec_ctx_finish(&exec_ctx);
   GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
 }
 
 static void test_default_port(void) {
   gpr_event ev;
   gpr_event_init(&ev);
-  grpc_resolve_address("localhost", "1", must_succeed, &ev);
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  grpc_resolve_address(&exec_ctx, "localhost", "1", must_succeed, &ev);
+  grpc_exec_ctx_finish(&exec_ctx);
   GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
 }
 
 static void test_missing_default_port(void) {
   gpr_event ev;
   gpr_event_init(&ev);
-  grpc_resolve_address("localhost", NULL, must_fail, &ev);
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  grpc_resolve_address(&exec_ctx, "localhost", NULL, must_fail, &ev);
+  grpc_exec_ctx_finish(&exec_ctx);
   GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
 }
 
 static void test_ipv6_with_port(void) {
   gpr_event ev;
   gpr_event_init(&ev);
-  grpc_resolve_address("[2001:db8::1]:1", NULL, must_succeed, &ev);
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  grpc_resolve_address(&exec_ctx, "[2001:db8::1]:1", NULL, must_succeed, &ev);
+  grpc_exec_ctx_finish(&exec_ctx);
   GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
 }
 
@@ -92,7 +100,9 @@ static void test_ipv6_without_port(void) {
   for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
     gpr_event ev;
     gpr_event_init(&ev);
-    grpc_resolve_address(kCases[i], "80", must_succeed, &ev);
+    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+    grpc_resolve_address(&exec_ctx, kCases[i], "80", must_succeed, &ev);
+    grpc_exec_ctx_finish(&exec_ctx);
     GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
   }
 }
@@ -105,7 +115,9 @@ static void test_invalid_ip_addresses(void) {
   for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
     gpr_event ev;
     gpr_event_init(&ev);
-    grpc_resolve_address(kCases[i], NULL, must_fail, &ev);
+    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+    grpc_resolve_address(&exec_ctx, kCases[i], NULL, must_fail, &ev);
+    grpc_exec_ctx_finish(&exec_ctx);
     GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
   }
 }
@@ -118,7 +130,9 @@ static void test_unparseable_hostports(void) {
   for (i = 0; i < sizeof(kCases) / sizeof(*kCases); i++) {
     gpr_event ev;
     gpr_event_init(&ev);
-    grpc_resolve_address(kCases[i], "1", must_fail, &ev);
+    grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+    grpc_resolve_address(&exec_ctx, kCases[i], "1", must_fail, &ev);
+    grpc_exec_ctx_finish(&exec_ctx);
     GPR_ASSERT(gpr_event_wait(&ev, test_deadline()));
   }
 }
-- 
GitLab


From 79a75e25c450d0f86c268578d81014dafd173ed2 Mon Sep 17 00:00:00 2001
From: Dmitry Kovalev <dkovalev@google.com>
Date: Thu, 21 Apr 2016 23:32:30 -0700
Subject: [PATCH 124/525] Fixing invalid usage of getProtobufServiceAttrs()
 function.

getProtobufServiceAttrs(service, options) must be called with 2 arguments.
---
 src/node/src/client.js | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/node/src/client.js b/src/node/src/client.js
index 5e07046fc6..f75f951eb8 100644
--- a/src/node/src/client.js
+++ b/src/node/src/client.js
@@ -815,8 +815,7 @@ exports.waitForClientReady = function(client, deadline, callback) {
  * @return {function(string, Object)} New client constructor
  */
 exports.makeProtobufClientConstructor =  function(service, options) {
-  var method_attrs = common.getProtobufServiceAttrs(service, service.name,
-                                                    options);
+  var method_attrs = common.getProtobufServiceAttrs(service, options);
   var deprecatedArgumentOrder = false;
   if (options) {
     deprecatedArgumentOrder = options.deprecatedArgumentOrder;
-- 
GitLab


From 4f92a2abb8d1c2fddce0a195a4401eb6a10b2bfc Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 23:32:33 -0700
Subject: [PATCH 125/525] Expand corpus

---
 .../0a7aad5682c304b0cbda31445b221238e0293a9f  | Bin 0 -> 212 bytes
 .../0fa216ec645b3973b5e6d28baedd5acc1542e69e  | Bin 0 -> 151 bytes
 .../10302aa7598eb36d0ac22d0478eb0f2a6b010ea6  | Bin 0 -> 145 bytes
 .../1887558eb48d6a4341610fd0395cef8e87744044  | Bin 0 -> 211 bytes
 .../1c98433d827ea4aae2ba8a68c4d11bc2527cb15d  | Bin 0 -> 181 bytes
 .../1d8b40b4798e652184df3bcffe1b1d7e32648f79  | Bin 0 -> 418 bytes
 .../2fa6a874e625ca4d71941408d94698f898be4ea1  | Bin 0 -> 172 bytes
 .../3dedcaf501bc9718e5d372862b081fc9fdfb3959  | Bin 0 -> 133 bytes
 .../42a8e7c267f66a0747f30b4053ec79325074dc97  | Bin 0 -> 245 bytes
 .../57dea4528141649208fa2af10c18e98e80c1758b  | Bin 0 -> 152 bytes
 .../74cc62178f9c631dc49cf09b0ff5884322d33969  | Bin 0 -> 212 bytes
 .../893ea11ec0c4425940d18a32acf23d5967d98dd9  | Bin 0 -> 488 bytes
 .../a074a30fc5c627e8093a8f860d67661df22f8148  | Bin 0 -> 41 bytes
 .../a25eb9c166a097ea3afa590e3584eb9986bd9445  | Bin 0 -> 489 bytes
 .../a96e54f84588c424c5ff2615fb0745684a11de39  | Bin 0 -> 163 bytes
 .../b436d6ea729dd071f87b21819cf1f32979216aee  | Bin 0 -> 49 bytes
 .../b821e8d3e12441e1120723cf4eda4d939794b17f  | Bin 0 -> 115 bytes
 .../d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e  | Bin 0 -> 491 bytes
 .../d1b53c2a386259ce958c34e2cb281514e14e0d03  | Bin 0 -> 151 bytes
 .../dfefc5d84c18606a3aefd5bb721a06e192b4420e  | Bin 0 -> 174 bytes
 .../e140f7efd72850d181a0145bb9ea7d92e61dec95  | Bin 0 -> 129 bytes
 .../e73a05b1cf7dfeeada6356bb18ec4381485bb3d0  | Bin 0 -> 43 bytes
 .../edfcf299569efc4788937d2cd4ca0e625fb9e527  | Bin 0 -> 39 bytes
 .../f238d0b5973d8d4081ba7036711d8c3091554e28  | Bin 0 -> 20 bytes
 .../f788d2b893fe39fe24582acffa6a70f1ca4e3037  | Bin 0 -> 491 bytes
 .../fc9879794ab7f7cdc4959c204788fce6146c0579  | Bin 0 -> 20 bytes
 .../ff6138cc4a36bad9a76401072dbd41fd2ad437cc  | Bin 0 -> 111 bytes
 tools/run_tests/tests.json                    | 774 ++++++++++++++++--
 28 files changed, 684 insertions(+), 90 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f
new file mode 100644
index 0000000000000000000000000000000000000000..706aab1332abb1da8c21d84e8bf44a910fa4eb6c
GIT binary patch
literal 212
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+ObiShj71y@43Ap&|7T>V
kVklx@U|j0~7G!wT!pXqE$na<_$X#n07&sU>7$!3S055erP5=M^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e b/test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e
new file mode 100644
index 0000000000000000000000000000000000000000..3f97dd4d04ae5c8bfeb3a9778d286b425a2ad734
GIT binary patch
literal 151
zcmZQ#<0?;8FDhf=Q($0Y_@ByARK~=>Sj51@_Oz%hwMavgf$`B=26e`wmUf2!91M(y
zm^gy<nAnO_i^@1snb^v~8u-{+9(9%fPvx*KV_;xl;7SD<z{FP0u$F<5fiaGOftxS&
zKVuOCW6N3wPR1e*hDR-o43E|_a4;}1aLi)hC@QnJ{?EX`z}O<f|7b0PCI<rm8^I*5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6
new file mode 100644
index 0000000000000000000000000000000000000000..239e86c4b5c17bfd4d23a475aea70f31c0290973
GIT binary patch
literal 145
zcmZQ#E9Xn)C@Ry?Vqz;#wJIuO;$tiSpUP3h#1X8=RGeB=#*qq=;Rr=Ym8Je?EMfrb
zR0nJQ&%nUg@`#Dy5mQ;}|FtX(oJAar42&)R{zD`{A{<N%3>=I_910ANTK4~EWT;{&
YVqjog3l?K|)WXTY$na<_0|x^G0DFcfj{pDw

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044
new file mode 100644
index 0000000000000000000000000000000000000000..32ed9289fd72d845d83f81f4e1400ade29298b03
GIT binary patch
literal 211
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+ObiShj71y@43Aov7#JC<
i7>XDe7}t7$1sNW-a56A3GCW!fa@Sf01`ZB}$qWE^s5vzN

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d
new file mode 100644
index 0000000000000000000000000000000000000000..2bc525e5ac299d31b912108ad40c3266c82b67f6
GIT binary patch
literal 181
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~b#p2cTX`x+Sr-EX1H&x_1_rLR42-Nyd~D_aQ#p#tN*Nd#w7C9*
zOk;SYz`)JJ#Kgo_&X>x;QB<a(Rh$a4fq~;cNbElYLn>p-qqSfeCVe)B|EbFM2ElqA
YEDW4QOl;@)QbAfcICn4<{V!t#0K-W!xBvhE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79
new file mode 100644
index 0000000000000000000000000000000000000000..e7456f0758ab3864738ee2da58f7654cbe4646d1
GIT binary patch
literal 418
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~b#p2cTX`x+Sr-EoaIIxvWM$%GEB~L$QB+pSz{sG*^&ey!!y^R-
zZXPD4;#82a3>^QN*vk1pYBaQ%^w}8xrz+bU1nYGaF|nQFOD!tX&|)b1U&hG9#-z-U
zs*qk(kgS)Snpa#}%)r3V@`!<vk>L>&TlrcBP7a2(45?Ni=R@pd0=W!i2}dduTT?1W
zC_<_%73>m_z3LnwEB-SuGB7Z<JYr&a#8j60f9-t+&LR#*2F8|u|Nny}*0L~gaxgJ4
za4;5eC@?%~VParpsA4E$U|{1aPuD6cvj&G5*sIVm1N%+`WGLra26e_F#<d<`-3*WT
zS~wXvipuQ&GZrZ@g1o@+Xe~(HS_TFVj<pON(C~fK@@OqX7Xuf=e}>5n{~0)DF)#oC
D-Xn5x

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1
new file mode 100644
index 0000000000000000000000000000000000000000..c336404ea760b222d517440e8d471e39cfc5ab2f
GIT binary patch
literal 172
zcmZQ#E9Xn)C`!}N`p?A1Ri0{JRK~=oz`(|k`u}cG8509z5d#xjQCVt{1_R@xD{Ix&
z8H-xl8UAxHFdk}o#Pt6^N3b3fTXAa9=2RxO@>GtZvMvTF;9AST$i&B1{vRZo%D~9L
z!1W(w8p9(625ue(2F8|0|NpOLVPIw8l;YqN;Ri`Fwyb5~WGrH0V^U1rq0GVXsD+W?
O(b@<_9R>z14kiEvVl5W{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959
new file mode 100644
index 0000000000000000000000000000000000000000..25dbe2823f9a040c7dc78f2d6837d97b407e54cb
GIT binary patch
literal 133
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(=
zJYxF)pCee0iLE%bXmctPTX`x+QCSxQ6mYF&U}WNBEB_A?O=VzYVBq=>GL7Mp0s}XX
a2tSC!*s_*^ld*_{;ZX}C!=tqf983VQG9zmM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97 b/test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97
new file mode 100644
index 0000000000000000000000000000000000000000..2b343fe99f84c887ce6e5cf87b7a91c2813e7b9e
GIT binary patch
literal 245
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}=zkd_6C0B<
zL#jf0Q9-g^a%x_2X)yx>L(3xuMn;B5Ol;+A88|r@)-t486_qjZv6cT%<tSp}2-X8z
z!ja0v)|AQ-ijXQx{m)p$0Jc{hZ1H~vMg|7PmPbqskC@6*|F6Bzz*)q>$iUe0@Be?W
z#99^xP7Wpp1`fs|4h4osEldoI3{?z83=E8GJ-~ttkN8?R890i{?Ef<sDKLUu#_(t@
T$jr423>+M588{dwGcW)E>*PZr

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b b/test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b
new file mode 100644
index 0000000000000000000000000000000000000000..73bb47417256b93c0dfa33586c5f820ec999e078
GIT binary patch
literal 152
zcmZQ#<0?<JFDhf=Q($0Y_@ByARK~=>Sj51@_Oz%hwMavgf$`B=26e`wmUf2!91M(y
zm^gy<nAnO_i^@1snb^v~8u-{+9(9$2H8U_UFmR>*2bsXcR?e`Nfsujn5fcM9A6SgB
uWi10IV-W|#qZUSnM{5~47#J8hW-)LSmDy|kXJBApY!Tsqw3b1Wg8=}m`X+Gz

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969 b/test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969
new file mode 100644
index 0000000000000000000000000000000000000000..2abdc9594b9fed5394481d8cc34766104c76eef1
GIT binary patch
literal 212
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+ObiShj71y@43Aov7#JC<
j7>XDe7}t7$1sNW-a56A3GCW!fa@Sf01`Y-ehRF;7u|hdD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9
new file mode 100644
index 0000000000000000000000000000000000000000..9a4f343c115bf397d49b2e4bdcb4a51443c93e66
GIT binary patch
literal 488
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~b#p2cTX`x+Sr-EoaIIxvWM$%GEB~L$QB+pSz{sG*^&ey!!y^R-
zZXTwhGKSRD;vy!F|4eM<d>}O%T1@(E4F6M=?G1wUI*ORs&he!dm1$@(6#Xw_WMX4d
zW=K_FVgnhE>`t)pV0W@TWlAk7Dg!xmEd!D}TONTO1#%FB1_J{}dQm~LUUF()acMCF
z14GLr21Z7PM@($xYZ*8>7}heRT7iN9;%+98?}}54$~aP)*qTx~LT4f5%2L7J0Xbfs
z1LV&C42%p6j4h8i86Gi}rT$-gpMkT8gOP!;<=_ARV2QOX44fQH3=ABMMH~tYk6M@*
z7#XS<iWnH!xXRPDips3P0gvzy6I&`Y<Xawbu4MrEiE*t5SUbZbz7|dfj-oRA|BOWn
rj37@iJX#B~eJuk62gh0l4rnYrYI(Glp^Jfw;XlJ<hW`v4vltivNzQ`N

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148
new file mode 100644
index 0000000000000000000000000000000000000000..8841eb0d146fed1986751fc8308168170d9c8a0e
GIT binary patch
literal 41
xcmZQ#E9Xn);3!Jd(E887z}WKW|Npft4D1XXcAQLXOp2*Hlp_>%7@Gh82LR{33@HEr

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445
new file mode 100644
index 0000000000000000000000000000000000000000..122a725a359b732eae7c69ddaa447628995407f7
GIT binary patch
literal 489
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrA|>gtR|E$s~dIT#oZ
zg|<9m`v0FJSdWRVICXO>6I*#IM_CsG6mYF&U}R<DV=Mok%28BS%D~8=#q}R#9K$08
z25ufEW(J1T)Z!v0j{i(-<$NGD8d^;HYz+TXmF*3J^*V}}*v|2#7L{peF%<nTV`O4u
zQf5e1U}6IqkL*ye@nDCtJ!MKQDk=lHbS(ptJ6j%s9R+d_g9ZZwM|x2~vR-m(UU6wL
z0|P_LBL+rBhDS_n<!c!@IT+S5q*{T(0OD>Yknf69i^@1snb?|AIYMV4<jPXP-T^sY
zode{~{|t-_42&(0I2j%>m8Je)d!K=`h=Y-VvE|?Y|6qx=EDW3+ObiShj71y@43Aov
z7#JC<7>XDe*tp8mwTjBD!6A?E5EEM}H0WC%ajs<m`H69@2Ut79Bfb_+29BaK`~QqZ
s3XC96Fg#idvVAQB0|&=i1`cQ}J!*NhmZ6J*i{U@RWQP9?9J3f006evV4FCWD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39
new file mode 100644
index 0000000000000000000000000000000000000000..c05b8bf73edac13845be99110ee27261813b4ddc
GIT binary patch
literal 163
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~eR-S5ARK~=|R{lSgqlk$kSP!g>BNZgW5sHv1
zOa0GS!~oW*4%Yggfq}8*5fj5Brn1!kYgrgLi#Qk=7+e1Rhe&`#IG7k1I2emK6c`@0
l?ElZmP{mNhz`(c`EXMGtg_D7i;n7-<DQg)RI2bq>7yt)SElU6Z

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee b/test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee
new file mode 100644
index 0000000000000000000000000000000000000000..ba84b6d1d73acbbc60278cb9020e36694e3151cc
GIT binary patch
literal 49
pcmZQ#E9cWp<tPe+GB}FDG_?L}X#Hnk;B0xcmW6?ngOdT74FDUE3iSX0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f b/test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f
new file mode 100644
index 0000000000000000000000000000000000000000..d8830f0fef161b857c071a34e66e2c001f5fb224
GIT binary patch
literal 115
zcmZQ#WBQ+}Y;O>(-%-TGz{FP0m&#F8rlG}9#>m9Lz{1$V#Ku*gs#R2G&8NV?#_}H|
z%f!G~#PEpW|9{37Mutag88|r@)-rf7FtMc;m8BMGFfg_};#|w1&REpa&hVduf$>qx
RqqPiO3|tJ13=ABz7yv~{9X0>}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e b/test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e
new file mode 100644
index 0000000000000000000000000000000000000000..fe40b79c6dd35fed13597e97ca0401ee52048561
GIT binary patch
literal 491
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$k%57Ut*9)uNP~g#(UrA|>gtR|E$s~dIT#oZ
zg|<9m`v0FJSdWRVICXO>6I*#IM_CsG6mYF&U}R<DV=Mok%28BS%D~8=#r2=Dh=GaW
zkpcrZ4-+#3LuzVq5fjI6Cbn`ukQxmwCVe&rCWim1%Jv4qdL2bfZ0Gn=i^?>#7>fRv
zF*30+DKn%hFtLFwKz1tF0wxB=A_lgnOsPdhWgxe%Wk7Oi%OkL}Ku%)NU|`@#FDgjZ
zOHR!zE-hwYU}$;7z{tq(h>5LyEdwV9!&-(^D^MsvT+RgYUvX+t8AmD;TT?1W=q!X>
zSt{5=Am^)dfZX{X6kd!ik2o0~F_oqMUwfZ{vxtL{fwAS^|NjgOj4hAWvM?|(FflN2
zFcxtrFg$7j1#lHZ5d#AoS9!WtQJFP3>=7PfVoQYve#;}ywG1FXF|PFhYiD@G*TTub
zQB-FCpRq`R5#$MmM{5}v7}qj9YT@8m%fJDRr$;T1)-rT4a54O6n9T5>fnyc}0|22G
BfrtPA

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03
new file mode 100644
index 0000000000000000000000000000000000000000..478c05f1776db045643997ee57ece835e91e51ad
GIT binary patch
literal 151
zcmZQ#<0?;8FDhf=Q($0Y_@ByARK~=>Sj51@_Oz%hwMavgf$`B=26e`wmUf2!91M(y
zm^gy<nAnO_i^@1snb^v~8u-{+9(9%fPvx*KV_;xl;7SD<z{FP0u$F<5f$<R&12<pl
zf5svP#+J1VoQy>r43AnE86K@=;9y{2;F!h0QB-Dc{hxt>fw4t||Iu0oO%4VCHuoho

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e b/test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e
new file mode 100644
index 0000000000000000000000000000000000000000..5ad30f2d18b39ce5df4c4e0b10635ce8555c8cbe
GIT binary patch
literal 174
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~wP<rH6I*#IM_CsG6mYF&U}R<DV=Mok%28C7%D~8=#q}R#9K$08
v25ugZZRuJ?W!7NZz-pkjr9!Q1dBnMv0b$>xmPczDx)`_^{{Ls-n8g499Mvzg

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95
new file mode 100644
index 0000000000000000000000000000000000000000..fb2d9606057f9cd92847bb6c2e2526afd22baa67
GIT binary patch
literal 129
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(OPwN#-f&XhW{K4jE7nt
zF>wUzF|ie=7L}zkv6ZKC6qR)`KmpfU21X`6w(|cV(NqRT1_rMGAfp%_DKK!0@PpWl
WEo&J#8H+d=9<?wsJX*`Z!2|$m=O9o3

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0
new file mode 100644
index 0000000000000000000000000000000000000000..c32657f1c5d191f222c29fe8d770823808eef4dc
GIT binary patch
literal 43
zcmZQ#E9Xn);3!Jd(E887z}WKW|Npft3=9nH3><cxOl(YwsXLS-6m=My|NjR7_CgFP

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527 b/test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527
new file mode 100644
index 0000000000000000000000000000000000000000..cd303bac8e3a8358b8b0c1785b730840b598d00d
GIT binary patch
literal 39
ucmZQ#E9Xn);3!Jd(E887z}WKW|Npft46F>C9GpySOp2*Hlp_>%7@7giWC`>D

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28
new file mode 100644
index 0000000000000000000000000000000000000000..eb0328909f0bd12dfb92b5282f37e0e1420b7846
GIT binary patch
literal 20
bcmZQ#E9c`#wKub6VEA9e*z#yC0|x^DFhvDA

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037
new file mode 100644
index 0000000000000000000000000000000000000000..53e016196839b4bbf1061c755e25681d7faafe8c
GIT binary patch
literal 491
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrA|>gtR|E$s~dIT#oZ
zg|<9m`v0FJSdWRVICXO>6I*#IM_CsG6mYF&U}R<DV=Mok%28BS%D~8=#q}R#9K$08
z25ufEW(J1T)Z!v0j{i(-<$NGD8d^;HYzzzx|5KIi4TAMLikR5W@ue1(X=pJN{V!u=
zVq;QfNL640DPcf%D%b+BQ`w#}r4|*Hf!w;50m-E;kHF3XIf+4ofq^5vs32J{IW@1i
zw3vZ`q2&<+BO}8jCbsgm44fPcYZ+3lK%oF}ITOf##i>PQ9H~rfO{pBAvk-D+sbCL*
zoUhISa_4^rMg|7PmPecnkC@6*|F6Bzz*)q>$iUe0@Be?W#99^xP7Wpp1`fs|4h4os
zEldoI3{?z83=C{s<>^{QW!B)ZM|g;dEfpI0Esr?YGJyQVxYh%#o#7E*3nv3dQJMXJ
u#v%nqkS7=(tp(Y>mVtqTV=V&*G@c%{JX*`p#lXezpJ6h?e+G_O3=9B(=YkCY

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579
new file mode 100644
index 0000000000000000000000000000000000000000..ff74700ab2a11ac9bd8765ad9f46bcb5ef05a5e6
GIT binary patch
literal 20
bcmZQ#E9c`#wO6xcVBBBC_^4$q0|x^DEu94G

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc b/test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc
new file mode 100644
index 0000000000000000000000000000000000000000..2bd5e0203755555ab6880eb81bcfc7dcbbffca1b
GIT binary patch
literal 111
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~wP<rH6I*#IM^RZ90~BzrWng4w;$tiS4-!sgU}Rw6`VTUX;gJFZ
GHxB^eLLGVl

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 973921faec..cdf00d92e1 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23594,6 +23594,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin"
@@ -23726,6 +23748,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
@@ -23814,6 +23880,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
@@ -23838,7 +23926,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23860,7 +23948,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23882,7 +23970,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23904,7 +23992,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23926,7 +24014,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23948,7 +24036,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23970,7 +24058,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23992,7 +24080,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24014,7 +24102,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24036,7 +24124,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24058,7 +24146,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24080,7 +24168,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24102,7 +24190,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24124,7 +24212,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24146,7 +24234,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24168,7 +24256,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24190,7 +24278,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24212,7 +24300,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24234,7 +24322,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24256,7 +24344,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24278,7 +24366,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24300,7 +24388,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24322,7 +24410,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24344,7 +24432,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24366,7 +24454,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24388,7 +24476,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24410,7 +24498,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24432,7 +24520,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24454,7 +24542,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24476,7 +24564,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24498,7 +24586,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24520,7 +24608,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24542,7 +24630,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24564,7 +24652,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24586,7 +24674,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24608,7 +24696,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24630,7 +24718,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24652,7 +24740,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24674,7 +24762,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24696,7 +24784,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24718,7 +24806,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24740,7 +24828,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24762,7 +24850,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24784,7 +24872,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24806,7 +24894,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24828,7 +24916,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24850,7 +24938,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24872,7 +24960,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24894,7 +24982,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24916,7 +25004,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24938,7 +25026,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24960,7 +25048,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24982,7 +25070,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25004,7 +25092,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25026,7 +25114,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25048,7 +25136,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25070,7 +25158,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25092,7 +25180,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25114,7 +25202,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25136,7 +25224,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25158,7 +25246,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25180,7 +25268,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25202,7 +25290,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25224,7 +25312,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25246,7 +25334,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25268,7 +25356,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25290,7 +25378,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25312,7 +25400,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25334,7 +25422,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25356,7 +25444,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25378,7 +25466,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25400,7 +25488,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25422,7 +25510,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25444,7 +25532,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25466,7 +25554,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25488,7 +25576,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25510,7 +25598,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25532,7 +25620,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25554,7 +25642,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25576,7 +25664,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25598,7 +25686,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25620,7 +25708,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25642,7 +25730,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25664,7 +25752,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25686,7 +25774,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25708,7 +25796,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25730,7 +25818,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25752,7 +25840,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25774,7 +25862,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25796,7 +25884,513 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc"
     ], 
     "ci_platforms": [
       "linux", 
-- 
GitLab


From 4add20c64f7789d8279f867654d95e0c76cac70c Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 23:44:20 -0700
Subject: [PATCH 126/525] Crash fix

---
 test/core/util/passthru_endpoint.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index cec8865744..156c666044 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -138,8 +138,9 @@ static const grpc_endpoint_vtable vtable = {
     me_shutdown, me_destroy, me_get_peer,
 };
 
-static void half_init(half *m) {
+static void half_init(half *m, passthru_endpoint *parent) {
   m->base.vtable = &vtable;
+  m->parent = parent;
   gpr_slice_buffer_init(&m->read_buffer);
   m->on_read = NULL;
 }
@@ -147,8 +148,8 @@ static void half_init(half *m) {
 void grpc_passthru_endpoint_create(grpc_endpoint **client,
                                    grpc_endpoint **server) {
   passthru_endpoint *m = gpr_malloc(sizeof(*m));
-  half_init(&m->client);
-  half_init(&m->server);
+  half_init(&m->client, m);
+  half_init(&m->server, m);
   gpr_mu_init(&m->mu);
   *client = &m->client.base;
   *server = &m->server.base;
-- 
GitLab


From 4c79cb206d68959f7c1f8701c2076abd90f3f8ad Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 23:44:55 -0700
Subject: [PATCH 127/525] Expand corpus

---
 .../02434dcdaca96b9eacee76eb351e99f015eaa05e  | Bin 0 -> 168 bytes
 .../1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd  | Bin 0 -> 174 bytes
 .../2af392765963966f2d1ddd5d5af4fcadd93c3b06  | Bin 0 -> 212 bytes
 .../2b933a0ede25a06e32c7d9cc5a3eda78086f3060  | Bin 0 -> 167 bytes
 .../3230d9876d770657d86dfb768b80494cda52abc8  | Bin 0 -> 212 bytes
 .../368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42  | Bin 0 -> 293 bytes
 .../7cdff0948ef64e551ad02f857acd5956d91530c9  | Bin 0 -> 167 bytes
 .../856fb7cd57f36cfcc8a2cad0cf61f9fff9696776  | Bin 0 -> 213 bytes
 .../bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4  | Bin 0 -> 176 bytes
 ...h-89e1b03278bad9790ae0f8614a8389414d1eab37 | Bin 0 -> 327 bytes
 .../d65f32b4af92080a496fb0965075c060c70ee444  | Bin 0 -> 188 bytes
 .../eca1d41de5486c09c6aa7767289daa7185379220  | Bin 0 -> 188 bytes
 tools/run_tests/tests.json                    | 264 ++++++++++++++++++
 13 files changed, 264 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e b/test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e
new file mode 100644
index 0000000000000000000000000000000000000000..9ba80bd1dc5f1ca90e1fa82043168235d4456588
GIT binary patch
literal 168
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziEUq5YLNy5<D)BU71h-l
zn~Pf78UAxHFdhnRdBpVpKS!`06I*fW=2RxO@>GtpE(R#zTFb!5%EZT3{y&wYsH~KM
zkwJ^=Kgc|WM+ywwJWT8i45_KbMNCH$85kJ%7co9+;rP$QR?Y`ft;M9T!N$PA@IO`A
Meyu^UUPloF0Ks`IWB>pF

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd
new file mode 100644
index 0000000000000000000000000000000000000000..8cf36c2c8ec8b98b790297c21ca0d646e0a8f738
GIT binary patch
literal 174
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~wP<rH6I*#IM_CsG6mYF&U}R<DV=Mok%28C7%D~8=#q}R#9K$08
x25v4MCbsf)t)en(ux(&9P}@?W*0nt1T+4v4?@`O6wG3ShTnzvJGjPmm0013dFf#xE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06
new file mode 100644
index 0000000000000000000000000000000000000000..121947f299e568aedb918186f1673d56169ed99f
GIT binary patch
literal 212
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziLIzCwMc`3@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWLGEsj0<9Oh-TtNaf%tD$~&V&%nUg@+gskfe|8DRA#UB|2M<_
vBF0B89RFcr8d^;HYzzzx|5KIMvM_LRaPF{QYZ9#2!PxR>Edyr}2Ll5Dt3o*_

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060
new file mode 100644
index 0000000000000000000000000000000000000000..fb5a647a4189375d00be3022c87dff694bb7ea8e
GIT binary patch
literal 167
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziLIzCwMc`3@zIsFit6f&
zMJ??N|2Y^K4~4coV*3A|BUq1#tvJ;>buU|aDo0rt0~BzrWng4w;$tiSpUP2GR?5K0
zpvCncWE{gI1qN;&CT0hQ)YRf4rXz_A42=7W7$3E8{0F%Oq*_CZNuP~@f#H9uvi(|v
JV7-na1^{wuEEE6$

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8
new file mode 100644
index 0000000000000000000000000000000000000000..cdfd2933180e743efab3687b2cb6a2b29b3eb3f0
GIT binary patch
literal 212
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+ObiYjj71y@43Ap&|7T>V
lVklx@U|j3L01{+))WXTYz{v1uEy!JK85lSiI2a}~0029+JB|PV

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42 b/test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42
new file mode 100644
index 0000000000000000000000000000000000000000..3e2cf5e8bad2f2fd7b0c6015961e3a2405430341
GIT binary patch
literal 293
zcmZQ#E9YZk<0?<JFDhf=Q($0YNd14esEmn$k%57Ut*9)uNP~g#(UrA|>gtR|E$s~d
zIT#oZg|<9m`v0FJSdWRVICXO>6I*#IM_CsG6mYF&U}R<DV=Mok%28BS%D~8=#r2=D
zh=GaWkpcrZ4-+#3LuzVq5fjI6CN_`?4XytS42&(0%K0EXCVe&rCWim1%Jv4qdL2bf
zZ0Gn=i^?>#7>fRvF*30+DKn%hFtLFwLv}XUGA0JbA_lgnOsPd{RsKtIFcg)6T)&n9
z$?YwVzzzjDl0k!kfg`=BAXzUtHLtj|n1O+z<q-oTBf}#mw(_+MoE!{m8B(o^%9sG`
C)=H%S

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9
new file mode 100644
index 0000000000000000000000000000000000000000..250f095f998d90366895dc076c15485d329928a7
GIT binary patch
literal 167
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziLIzCwMc`3@zIsFit6f&
zMJ??N|2Y^K4~4coV*3A|BUq1#tvGdaDid3IDo0rt0~BzrWng4w;$tiSpUP2GR?5K0
zpvCncWE{gI1qN;&CT0eP)YRf4rXz_A42=7W7$3E8{0F%Oq*_CZNuP~@f#H9uvi(|v
JV7-na1^`b$E0F*I

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776 b/test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776
new file mode 100644
index 0000000000000000000000000000000000000000..33c1ae60b5a7e2ffe6ebc7050e78667904556969
GIT binary patch
literal 213
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVS~#SsdXO6Mp_Oa0GS
z!~nKM9c;~i21c-XObl9&n95TBuf5N}S;WD}z}WKdKg6cBEDW3+ObiShj71y@43Ap&
o|7T>VVklx@U|j0~7G!wT!pXqE$na<_$YE<47&sU>7$!3S07r^DKL7v#

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4
new file mode 100644
index 0000000000000000000000000000000000000000..295f781d594500f22447391bb3facd3a88ca9f84
GIT binary patch
literal 176
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~wP<rH6I*#IM_CsG6mYF&U}R<DV=Mok%28C7%D~8=#q}R#9K$08
z25ufEHYNtH@^r1DGHbAXU{z52QlS>MJmOr-fUxmV%cHdnT?||d|Nk>^%whllSIIB6

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37
new file mode 100644
index 0000000000000000000000000000000000000000..b5adace96a41a342aef52ee217e0c8d282cf96a3
GIT binary patch
literal 327
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;fJ~z}WKdKg1$k7A7_(h(q){ikKjJ!CD#07?~It
zSQuNF*tp75wTjBD`4kw~SU@f)V`5+|VtB;x|3BE7P&axoFtMc;F>rD)F)(m27I7#r
zJZjnhpOK-8p@@Njajgefkl|4aCj$c`!=tqzZ?0uv;9%fjn9NX?TBHFI;9Sd~&REpa
Y&hVduf$>qxqqPiO3|t^TaLi%=01xC?3jhEB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444
new file mode 100644
index 0000000000000000000000000000000000000000..6817649041111e93260583ace2820c885420e4e6
GIT binary patch
literal 188
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziLIzCwMc`3@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3JlylOw0@nsj0<9Oh*zK7#Km004cNA`p>Yxi1ASi$A6fRh8B}P8v_Hw
Z|5RoBwWh&(9Sn>ukJd797I82z004p1G06Y`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220
new file mode 100644
index 0000000000000000000000000000000000000000..dc9c48305a52c2835857a77b4a433498ee7bb6da
GIT binary patch
literal 188
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziLIzCwMc`3@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWLGEsj0<9Oh*zK7#Km004cNA`p>Yxi1ASi$A6fRh8B}P8v_Hw
Z|5RoBwI;!O9Sn>ukJd797I82z005FPG6(<w

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index cdf00d92e1..76aa1a6d2c 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23374,6 +23374,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin"
@@ -23924,6 +23946,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
@@ -24078,6 +24122,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
@@ -24144,6 +24232,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
@@ -24166,6 +24276,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
@@ -24914,6 +25046,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
@@ -25002,6 +25156,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
@@ -25552,6 +25728,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
@@ -25706,6 +25904,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
@@ -25860,6 +26080,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
@@ -26146,6 +26388,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
-- 
GitLab


From bdc2410da727500f62d0be3d30bf8eee02f677f4 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 23:57:05 -0700
Subject: [PATCH 128/525] Expand corpus, fix crash

---
 src/core/lib/surface/validate_metadata.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/lib/surface/validate_metadata.c b/src/core/lib/surface/validate_metadata.c
index bf4126867f..84f0a083bc 100644
--- a/src/core/lib/surface/validate_metadata.c
+++ b/src/core/lib/surface/validate_metadata.c
@@ -40,7 +40,7 @@ static int conforms_to(const char *s, size_t len, const uint8_t *legal_bits) {
   const char *p = s;
   const char *e = s + len;
   for (; p != e; p++) {
-    int idx = *p;
+    int idx = (uint8_t)*p;
     int byte = idx / 8;
     int bit = idx % 8;
     if ((legal_bits[byte] & (1 << bit)) == 0) return 0;
-- 
GitLab


From b907fd425b49dedcba7c7e207fb6e53c7d3da2fd Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 21 Apr 2016 23:58:41 -0700
Subject: [PATCH 129/525] Expand corpus

---
 .../12083209096187575021a775826b08b70b39ed4c  | Bin 0 -> 212 bytes
 .../240afe42d3e2834c46a79d9df0dd6ca018831398  | Bin 0 -> 222 bytes
 .../28f8c7af6aab3bbabe028f780e174b27b924a146  | Bin 0 -> 217 bytes
 .../296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e  | Bin 0 -> 217 bytes
 .../3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab  | Bin 0 -> 216 bytes
 .../54a0a2c37ce1830f241f6e2828adc8057cfa385f  | Bin 0 -> 168 bytes
 .../8554d0f8fc68c84fbd8515165a3d98aad0dfab3e  | Bin 0 -> 216 bytes
 .../929980ce480ca47855bdebb8f6ebef7fa447fd5b  | Bin 0 -> 216 bytes
 ...h-14359c8f754c2ecdae21deeeec033ae10360033a | Bin 0 -> 216 bytes
 .../df616ee922cc89908b771e5276e47abcbaff1346  | Bin 0 -> 262 bytes
 .../e401c1abdd1ef0458dd46e35167c4734667ebcc0  | Bin 0 -> 225 bytes
 tools/run_tests/tests.json                    | 242 ++++++++++++++++++
 12 files changed, 242 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c b/test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c
new file mode 100644
index 0000000000000000000000000000000000000000..65728fa9f3e243cf071bc0951fc884b01e31331e
GIT binary patch
literal 212
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|99mmV&Vwa0~^Va%EVTl$`J~c0vVk8pRtGm
zY>PVBn*R)pVDp$59x;`r{$G2afwPE%k%6)0-+zcjYgrgLIhYt6I2emK6c`@0?ElZm
mP{mNhz`(fHg8?MS@Ti58fq{|X(OQtZ)-o_~FmNzTW&i*xwL5MA

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398 b/test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398
new file mode 100644
index 0000000000000000000000000000000000000000..9007ade73c92a32445046eab1d3d7ce2eb1ce242
GIT binary patch
literal 222
zcmZQ#E9c`#wO6xcV&f{ePd!*v#>A(<z{ZgJ|87wk69Z!r0~1?OS!$641LLDBYZYIs
zGZwY9GyLaZU_2Ds@`&mGe~w^1Cbrb#&8bXm<*6KHT?|mbwU&XAm5Gn7{C_G(QCTSi
zBZC&#f5sw)xl9a?6d1S}c$gR&7#QX=IH#r-7cm_Hxg(W>qo_<n>puenW6PsN1_nlm
zU{RU9*8krO`->PKwQ&50iD_st>9a8~F#P=g|NnpGwJZ#r9GpAs*BS=vbuhL(TFby$
I#KFJ-0By`ZqyPW_

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146 b/test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146
new file mode 100644
index 0000000000000000000000000000000000000000..cda8bc569d1b5b9a9747deb53a548e3744d26868
GIT binary patch
literal 217
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziLIzCwMc`3@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5qv^Kgc|WM+yww3_MH>&Z()zMY#+N3`|Eru1MwJC@Ry?`p>|?*zzcmfq@YsSX5@O
z_5U}+{vyUlEgb)0Vj5aZ`fLmg4F6M=*Rn8ha&YdjUuzPq*TLBGXe|S05eEYU0Cg`p
Ang9R*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e b/test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e
new file mode 100644
index 0000000000000000000000000000000000000000..42819bf127c7c4077df65df62cb531bc6e54f59c
GIT binary patch
literal 217
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw8D8m5Hs0p-6*)@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5qv^KVuOC6T>3~25tr(CI;u!)Z(IChC2*QM?kJf<=`kP)6n|Qz`)q@D3O7I5h7Sr
zX0P@CH^crS#z!q2|6yVpT1@(E3=9naQ<c}UFmQ5k?yz5L60Fz3*z#yC17{Hj0|NlU
C<vMl%

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab
new file mode 100644
index 0000000000000000000000000000000000000000..43f3e76e71bae5e6ced71be55e16e892c8361308
GIT binary patch
literal 216
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWOD9&Z()zMNCIPj!5O;C@Ry?`p>|?*zzcmfq@YsSX5@O_5U}+
w{vyUlEgb)0Vj5aZ`D_df4F6M=*Rn8ha&YdjUuzhw*TLBGXe|S05eEYU03`i6RR910

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f b/test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f
new file mode 100644
index 0000000000000000000000000000000000000000..82627f3c265ac3d753bf46b127db74bb0ba43695
GIT binary patch
literal 168
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72zi7mM-wMc`3@zIsFit6f&
z%|$Kk4F5S87!QTEJYxF)pCee0iLE$wb1D;Cc`8R)7XuV<tz}?jW#VHi|DVcHR94Es
z$e_jbA7mcGBLxO-9wv5XhSb#JBBmpW3=E9>ix?lZaQtUtE9V2L)?(7vU}Iol_@An5
Mzt$jFucL?o0Ft~c3;+NC

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e b/test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e
new file mode 100644
index 0000000000000000000000000000000000000000..befef24912569373c7c4136db001e591c61adc18
GIT binary patch
literal 216
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw8D8m5Hs0p-6*)@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5qv^KVuOC6T>3~25tr(CWh41;-XxJI}A)mK#oY|;3z87(E887z}WIAk%55`B3M*r
zul4^o!~P=1M=c!xVPYCuO!{mL3=IEMmDjQ`aB^_&uwQEutk=QV@@OpsXAuVj0|1Ki
BIx_$O

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b b/test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b
new file mode 100644
index 0000000000000000000000000000000000000000..b8f15bd77dfc3db5dcb19a2b761a30c9067b76e0
GIT binary patch
literal 216
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWPxrh0dv|#YId<K#oY|;3z87(E887z}WIAk%55`B3M*rul4^o
x!~P=1M=c!xVPYCuO!{mL3=IEMmDjQ`aB^_&uwQE!tk=QV@@OpsXAuVj0{|VIITio_

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a
new file mode 100644
index 0000000000000000000000000000000000000000..66c443ea9cab23701ce73131af2a4356d0679881
GIT binary patch
literal 216
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw8D8m5Hs0p-6*)@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5qv^KVuOC6T>3~25tr(CWh41;-XxJJ4YCpK#oY|;3z87(E887z}WIAk%55`B3M*r
zul4^o!~P=1M=c!xVPYCuO!{mL3=IEMmDjQ`aB^_&uwQEutk=QV@@OpsXAuVj0|1P9
BIx_$O

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346 b/test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346
new file mode 100644
index 0000000000000000000000000000000000000000..5255ca38bde65ff5a0ad62a5b86d3b8d0cce8c8b
GIT binary patch
literal 262
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw8D8RfCDGh@nV>f$`CmwTiFR
z6^mNh8UAxHFdkxJ3vGGC^#4CcupSdzYVqb&Cbsfaj<PNWDBxPlz{twP$5#G7m7}Pv
zl!1{!i;ML?V-W)r!y^R-ZU!DE2Ith&;-XvzrvItR5sJDD8VqHOMGP$rjB6PfnI17I
zGpKSDm3c7OgETR=JX*`ZafgBF2*}B)92`Yu8e0Du7#Ld~B{DEDLIjJ-?6v;?X4qfE
s_^5?}<3CJLLyJkDje&vTf2#6Y76wiZ&K>q^je_+$KxT3laWF6d04485Y5)KL

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0
new file mode 100644
index 0000000000000000000000000000000000000000..c059a1b6f41784cf177b69c546d00477d32131fd
GIT binary patch
literal 225
zcmZQ#E9c`#wO6xcV&f{ePd!*v#>A(<z{ZgJ|87wk69Z!r0~1?OS!$641LJG;wTh3f
zFc!76GyLaZU_2Ds@`&mGe~w^1Cbrb#&8bXm<*6KHT?|mbwU&XAm5Gn7{C_G(QCTSi
zBZC&#f5sw)xl9a?6d1S}c$gR&7#SECH0Luor=}JcF&zOpC6$Ats7yoaKLZ0}%cDdF
z21bZrQJKBg|KAMzix?lZaQugfX=pL&voSC*{QUp_|9|DREDW3+oIC8-8U*WgFt$8e
L%fMO0!N33j+}J+N

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 76aa1a6d2c..12264ba3b6 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23814,6 +23814,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
@@ -24056,6 +24078,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
@@ -24078,6 +24122,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
@@ -24100,6 +24166,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
@@ -24386,6 +24474,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
@@ -24606,6 +24716,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
@@ -25156,6 +25288,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
@@ -25354,6 +25508,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
@@ -25904,6 +26080,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
@@ -26212,6 +26410,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
@@ -26300,6 +26520,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
-- 
GitLab


From ee6de9365b9d2a79cd7874b4976372c681fb257d Mon Sep 17 00:00:00 2001
From: Benjamin Herzog <pirat267@gmail.com>
Date: Fri, 22 Apr 2016 11:17:43 +0200
Subject: [PATCH 130/525] Move nonnull begin to correct position

---
 src/compiler/objective_c_plugin.cc | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc
index f62faa5261..9522956fde 100644
--- a/src/compiler/objective_c_plugin.cc
+++ b/src/compiler/objective_c_plugin.cc
@@ -64,8 +64,7 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
         ".pbobjc.h\"\n\n"
         "#import <ProtoRPC/ProtoService.h>\n"
         "#import <RxLibrary/GRXWriteable.h>\n"
-        "#import <RxLibrary/GRXWriter.h>\n\n"
-        "NS_ASSUME_NONNULL_BEGIN\n\n";
+        "#import <RxLibrary/GRXWriter.h>\n";
 
       // TODO(jcanizales): Instead forward-declare the input and output types
       // and import the files in the .pbrpc.m
@@ -82,10 +81,12 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
         declarations += grpc_objective_c_generator::GetHeader(service);
       }
 
+      ::grpc::string nonNullBegin = "\nNS_ASSUME_NONNULL_BEGIN\n\n";
       ::grpc::string nonNullEnd = "\nNS_ASSUME_NONNULL_END\n";
 
       Write(context, file_name + ".pbrpc.h",
-          imports + '\n' + proto_imports + '\n' + declarations + nonNullEnd);
+          imports + '\n' + proto_imports + '\n' + nonNullBegin + 
+          declarations + nonNullEnd);
     }
 
     {
-- 
GitLab


From 3714e302c06a907b7af42a478beae3321b07c70a Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Fri, 22 Apr 2016 09:50:46 -0700
Subject: [PATCH 131/525] Simplify QPS Metrics collection

---
 test/cpp/interop/stress_interop_client.cc     | 40 ++++++-----------
 test/cpp/interop/stress_interop_client.h      |  8 ++--
 test/cpp/interop/stress_test.cc               | 13 +++---
 test/cpp/util/metrics_server.cc               | 45 ++++++++++++-------
 test/cpp/util/metrics_server.h                | 39 ++++++++++------
 .../stress_test/STRESS_CLIENT_SPEC.md         |  4 +-
 tools/run_tests/stress_test/configs/asan.json |  3 +-
 .../stress_test/configs/opt-tsan-asan.json    |  3 +-
 tools/run_tests/stress_test/configs/opt.json  |  3 +-
 tools/run_tests/stress_test/configs/tsan.json |  3 +-
 10 files changed, 81 insertions(+), 80 deletions(-)

diff --git a/test/cpp/interop/stress_interop_client.cc b/test/cpp/interop/stress_interop_client.cc
index 04671fb935..f287a5aa3b 100644
--- a/test/cpp/interop/stress_interop_client.cc
+++ b/test/cpp/interop/stress_interop_client.cc
@@ -84,49 +84,37 @@ StressTestInteropClient::StressTestInteropClient(
     int test_id, const grpc::string& server_address,
     std::shared_ptr<Channel> channel,
     const WeightedRandomTestSelector& test_selector, long test_duration_secs,
-    long sleep_duration_ms, long metrics_collection_interval_secs)
+    long sleep_duration_ms)
     : test_id_(test_id),
       server_address_(server_address),
       channel_(channel),
       interop_client_(new InteropClient(channel, false)),
       test_selector_(test_selector),
       test_duration_secs_(test_duration_secs),
-      sleep_duration_ms_(sleep_duration_ms),
-      metrics_collection_interval_secs_(metrics_collection_interval_secs) {}
+      sleep_duration_ms_(sleep_duration_ms) {}
 
-void StressTestInteropClient::MainLoop(std::shared_ptr<Gauge> qps_gauge) {
+void StressTestInteropClient::MainLoop(std::shared_ptr<QpsGauge> qps_gauge) {
   gpr_log(GPR_INFO, "Running test %d. ServerAddr: %s", test_id_,
           server_address_.c_str());
 
-  gpr_timespec test_end_time =
-      gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
-                   gpr_time_from_seconds(test_duration_secs_, GPR_TIMESPAN));
+  gpr_timespec test_end_time;
+  if (test_duration_secs_ < 0) {
+    test_end_time = gpr_inf_future(GPR_CLOCK_REALTIME);
+  } else {
+    test_end_time =
+        gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+                     gpr_time_from_seconds(test_duration_secs_, GPR_TIMESPAN));
+  }
 
-  gpr_timespec current_time = gpr_now(GPR_CLOCK_REALTIME);
-  gpr_timespec next_stat_collection_time = current_time;
-  gpr_timespec collection_interval =
-      gpr_time_from_seconds(metrics_collection_interval_secs_, GPR_TIMESPAN);
-  long num_calls_per_interval = 0;
+  qps_gauge->Reset();
 
-  while (test_duration_secs_ < 0 ||
-         gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), test_end_time) < 0) {
+  while (gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), test_end_time) < 0) {
     // Select the test case to execute based on the weights and execute it
     TestCaseType test_case = test_selector_.GetNextTest();
     gpr_log(GPR_DEBUG, "%d - Executing the test case %d", test_id_, test_case);
     RunTest(test_case);
 
-    num_calls_per_interval++;
-
-    // See if its time to collect stats yet
-    current_time = gpr_now(GPR_CLOCK_REALTIME);
-    if (gpr_time_cmp(next_stat_collection_time, current_time) < 0) {
-      qps_gauge->Set(num_calls_per_interval /
-                     metrics_collection_interval_secs_);
-
-      num_calls_per_interval = 0;
-      next_stat_collection_time =
-          gpr_time_add(current_time, collection_interval);
-    }
+    qps_gauge->Incr();
 
     // Sleep between successive calls if needed
     if (sleep_duration_ms_ > 0) {
diff --git a/test/cpp/interop/stress_interop_client.h b/test/cpp/interop/stress_interop_client.h
index 6fd303d6b7..cb0cd98821 100644
--- a/test/cpp/interop/stress_interop_client.h
+++ b/test/cpp/interop/stress_interop_client.h
@@ -87,12 +87,11 @@ class StressTestInteropClient {
   StressTestInteropClient(int test_id, const grpc::string& server_address,
                           std::shared_ptr<Channel> channel,
                           const WeightedRandomTestSelector& test_selector,
-                          long test_duration_secs, long sleep_duration_ms,
-                          long metrics_collection_interval_secs);
+                          long test_duration_secs, long sleep_duration_ms);
 
   // The main function. Use this as the thread entry point.
-  // qps_gauge is the Gauge to record the requests per second metric
-  void MainLoop(std::shared_ptr<Gauge> qps_gauge);
+  // qps_gauge is the QpsGauge to record the requests per second metric
+  void MainLoop(std::shared_ptr<QpsGauge> qps_gauge);
 
  private:
   void RunTest(TestCaseType test_case);
@@ -104,7 +103,6 @@ class StressTestInteropClient {
   const WeightedRandomTestSelector& test_selector_;
   long test_duration_secs_;
   long sleep_duration_ms_;
-  long metrics_collection_interval_secs_;
 };
 
 }  // namespace testing
diff --git a/test/cpp/interop/stress_test.cc b/test/cpp/interop/stress_test.cc
index 38caf31b76..d9e3fd25c5 100644
--- a/test/cpp/interop/stress_test.cc
+++ b/test/cpp/interop/stress_test.cc
@@ -56,9 +56,6 @@ extern void gpr_default_log(gpr_log_func_args* args);
 
 DEFINE_int32(metrics_port, 8081, "The metrics server port.");
 
-DEFINE_int32(metrics_collection_interval_secs, 5,
-             "How often (in seconds) should metrics be recorded.");
-
 DEFINE_int32(sleep_duration_ms, 0,
              "The duration (in millisec) between two"
              " consecutive test calls (per server) issued by the server.");
@@ -275,19 +272,19 @@ int main(int argc, char** argv) {
            stub_idx++) {
         StressTestInteropClient* client = new StressTestInteropClient(
             ++thread_idx, *it, channel, test_selector, FLAGS_test_duration_secs,
-            FLAGS_sleep_duration_ms, FLAGS_metrics_collection_interval_secs);
+            FLAGS_sleep_duration_ms);
 
-        bool is_already_created;
-        // Gauge name
+        bool is_already_created = false;
+        // QpsGauge name
         std::snprintf(buffer, sizeof(buffer),
                       "/stress_test/server_%d/channel_%d/stub_%d/qps",
                       server_idx, channel_idx, stub_idx);
 
         test_threads.emplace_back(grpc::thread(
             &StressTestInteropClient::MainLoop, client,
-            metrics_service.CreateGauge(buffer, &is_already_created)));
+            metrics_service.CreateQpsGauge(buffer, &is_already_created)));
 
-        // The Gauge should not have been already created
+        // The QpsGauge should not have been already created
         GPR_ASSERT(!is_already_created);
       }
     }
diff --git a/test/cpp/util/metrics_server.cc b/test/cpp/util/metrics_server.cc
index d9b44a6a92..cc6b39b753 100644
--- a/test/cpp/util/metrics_server.cc
+++ b/test/cpp/util/metrics_server.cc
@@ -42,16 +42,26 @@
 namespace grpc {
 namespace testing {
 
-Gauge::Gauge(long initial_val) : val_(initial_val) {}
+QpsGauge::QpsGauge()
+    : start_time_(gpr_now(GPR_CLOCK_REALTIME)), num_queries_(0) {}
 
-void Gauge::Set(long new_val) {
-  std::lock_guard<std::mutex> lock(val_mu_);
-  val_ = new_val;
+void QpsGauge::Reset() {
+  std::lock_guard<std::mutex> lock(num_queries_mu_);
+  num_queries_ = 0;
+  start_time_ = gpr_now(GPR_CLOCK_REALTIME);
 }
 
-long Gauge::Get() {
-  std::lock_guard<std::mutex> lock(val_mu_);
-  return val_;
+void QpsGauge::Incr() {
+  std::lock_guard<std::mutex> lock(num_queries_mu_);
+  num_queries_++;
+}
+
+long QpsGauge::Get() {
+  std::lock_guard<std::mutex> lock(num_queries_mu_);
+  gpr_timespec time_diff =
+      gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), start_time_);
+  long duration_secs = time_diff.tv_sec > 0 ? time_diff.tv_sec : 1;
+  return num_queries_ / duration_secs;
 }
 
 grpc::Status MetricsServiceImpl::GetAllGauges(
@@ -60,7 +70,7 @@ grpc::Status MetricsServiceImpl::GetAllGauges(
   gpr_log(GPR_DEBUG, "GetAllGauges called");
 
   std::lock_guard<std::mutex> lock(mu_);
-  for (auto it = gauges_.begin(); it != gauges_.end(); it++) {
+  for (auto it = qps_gauges_.begin(); it != qps_gauges_.end(); it++) {
     GaugeResponse resp;
     resp.set_name(it->first);                // Gauge name
     resp.set_long_value(it->second->Get());  // Gauge value
@@ -75,8 +85,8 @@ grpc::Status MetricsServiceImpl::GetGauge(ServerContext* context,
                                           GaugeResponse* response) {
   std::lock_guard<std::mutex> lock(mu_);
 
-  const auto it = gauges_.find(request->name());
-  if (it != gauges_.end()) {
+  const auto it = qps_gauges_.find(request->name());
+  if (it != qps_gauges_.end()) {
     response->set_name(it->first);
     response->set_long_value(it->second->Get());
   }
@@ -84,16 +94,17 @@ grpc::Status MetricsServiceImpl::GetGauge(ServerContext* context,
   return Status::OK;
 }
 
-std::shared_ptr<Gauge> MetricsServiceImpl::CreateGauge(const grpc::string& name,
-                                                       bool* already_present) {
+std::shared_ptr<QpsGauge> MetricsServiceImpl::CreateQpsGauge(
+    const grpc::string& name, bool* already_present) {
   std::lock_guard<std::mutex> lock(mu_);
 
-  std::shared_ptr<Gauge> gauge(new Gauge(0));
-  const auto p = gauges_.emplace(name, gauge);
+  std::shared_ptr<QpsGauge> qps_gauge(new QpsGauge());
+  const auto p = qps_gauges_.emplace(name, qps_gauge);
 
-  // p.first is an iterator pointing to <name, shared_ptr<Gauge>> pair. p.second
-  // is a boolean which is set to 'true' if the Gauge is inserted in the guages_
-  // map and 'false' if it is already present in the map
+  // p.first is an iterator pointing to <name, shared_ptr<QpsGauge>> pair.
+  // p.second is a boolean which is set to 'true' if the QpsGauge is
+  // successfully inserted in the guages_ map and 'false' if it is already
+  // present in the map
   *already_present = !p.second;
   return p.first->second;
 }
diff --git a/test/cpp/util/metrics_server.h b/test/cpp/util/metrics_server.h
index ce05e0be64..b04879c5e6 100644
--- a/test/cpp/util/metrics_server.h
+++ b/test/cpp/util/metrics_server.h
@@ -36,6 +36,7 @@
 #include <map>
 #include <mutex>
 
+#include "grpc/support/time.h"
 #include "src/proto/grpc/testing/metrics.grpc.pb.h"
 #include "src/proto/grpc/testing/metrics.pb.h"
 
@@ -48,10 +49,13 @@
  * Example:
  *    MetricsServiceImpl metricsImpl;
  *    ..
- *    // Create Gauge(s). Note: Gauges can be created even after calling
+ *    // Create QpsGauge(s). Note: QpsGauges can be created even after calling
  *    // 'StartServer'.
- *    Gauge gauge1 = metricsImpl.CreateGauge("foo",is_present);
- *    // gauge1 can now be used anywhere in the program to set values.
+ *    QpsGauge qps_gauge1 = metricsImpl.CreateQpsGauge("foo", is_present);
+ *    // qps_gauge1 can now be used anywhere in the program by first making a
+ *    // one-time call qps_gauge1.Reset() and then calling qps_gauge1.Incr()
+ *    // every time to increment a query counter
+ *
  *    ...
  *    // Create the metrics server
  *    std::unique_ptr<grpc::Server> server = metricsImpl.StartServer(port);
@@ -60,17 +64,24 @@
 namespace grpc {
 namespace testing {
 
-// TODO(sreek): Add support for other types of Gauges like Double, String in
-// future
-class Gauge {
+class QpsGauge {
  public:
-  Gauge(long initial_val);
-  void Set(long new_val);
+  QpsGauge();
+
+  // Initialize the internal timer and reset the query count to 0
+  void Reset();
+
+  // Increment the query count by 1
+  void Incr();
+
+  // Return the current qps (i.e query count divided by the time since this
+  // QpsGauge object created (or Reset() was called))
   long Get();
 
  private:
-  long val_;
-  std::mutex val_mu_;
+  gpr_timespec start_time_;
+  long num_queries_;
+  std::mutex num_queries_mu_;
 };
 
 class MetricsServiceImpl GRPC_FINAL : public MetricsService::Service {
@@ -81,17 +92,17 @@ class MetricsServiceImpl GRPC_FINAL : public MetricsService::Service {
   grpc::Status GetGauge(ServerContext* context, const GaugeRequest* request,
                         GaugeResponse* response) GRPC_OVERRIDE;
 
-  // Create a Gauge with name 'name'. is_present is set to true if the Gauge
+  // Create a QpsGauge with name 'name'. is_present is set to true if the Gauge
   // is already present in the map.
-  // NOTE: CreateGauge can be called anytime (i.e before or after calling
+  // NOTE: CreateQpsGauge can be called anytime (i.e before or after calling
   // StartServer).
-  std::shared_ptr<Gauge> CreateGauge(const grpc::string& name,
+  std::shared_ptr<QpsGauge> CreateQpsGauge(const grpc::string& name,
                                      bool* already_present);
 
   std::unique_ptr<grpc::Server> StartServer(int port);
 
  private:
-  std::map<string, std::shared_ptr<Gauge>> gauges_;
+  std::map<string, std::shared_ptr<QpsGauge>> qps_gauges_;
   std::mutex mu_;
 };
 
diff --git a/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md b/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md
index 62ca8aff2c..9f079beebc 100644
--- a/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md
+++ b/tools/run_tests/stress_test/STRESS_CLIENT_SPEC.md
@@ -6,8 +6,8 @@ This document specifies the features a stress test client should implement in or
 --------------
 **1.** A stress test client should be able to repeatedly execute one or more of the existing 'interop test cases'. It may just be a wrapper around the existing interop test client. The exact command line arguments the client should support are listed in _Table 1_ below.
 
-**2.** The stress test client must implement a metrics server defined by _[metrics.proto](https://github.com/grpc/grpc/blob/master/src/proto/grpc/testing/metrics.proto)_ and must expose _qps_ as a long-valued Gauge. The client can track the overall _qps_ in one Gauge or in multiple Gauges (for example: One per Channel or Stub).
- The framework periodically queries the _qps_ by calling the `GetAllGauges()` method (the framework assumes that all the returned Gauges are _qps_ Gauges) and uses this to determine if the stress test client is running or crashed or stalled.
+**2.** The stress test client must implement a metrics server defined by _[metrics.proto](https://github.com/grpc/grpc/blob/master/src/proto/grpc/testing/metrics.proto)_ and must expose _qps_ as a `Long`-valued Gauge. The client can track the overall _qps_ in one Gauge or in multiple Gauges (for example: One per Channel or Stub).
+ The framework periodically queries the _qps_ by calling the `GetAllGauges()` method (the framework assumes that all the returned Gauges are _qps_ Gauges and adds them up to determine the final qps) and uses this to determine if the stress test client is running or crashed or stalled.
 > *Note:* In this context, the term  _**qps**_  means _interop test cases per second_  (not _messages per second_ or _rpc calls per second_)
 
 
diff --git a/tools/run_tests/stress_test/configs/asan.json b/tools/run_tests/stress_test/configs/asan.json
index c558855314..cb9f55763b 100644
--- a/tools/run_tests/stress_test/configs/asan.json
+++ b/tools/run_tests/stress_test/configs/asan.json
@@ -16,8 +16,7 @@
           "num_channels_per_server":5,
           "num_stubs_per_channel":10,
           "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
-          "metrics_port": 8081,
-          "metrics_collection_interval_secs":120
+          "metrics_port": 8081
         },
         "metricsPort": 8081,
         "metricsArgs": {
diff --git a/tools/run_tests/stress_test/configs/opt-tsan-asan.json b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
index 4f172ef30b..936d15169e 100644
--- a/tools/run_tests/stress_test/configs/opt-tsan-asan.json
+++ b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
@@ -26,8 +26,7 @@
           "num_channels_per_server":5,
           "num_stubs_per_channel":10,
           "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
-          "metrics_port": 8081,
-          "metrics_collection_interval_secs": 60
+          "metrics_port": 8081
         },
         "metricsPort": 8081,
         "metricsArgs": {
diff --git a/tools/run_tests/stress_test/configs/opt.json b/tools/run_tests/stress_test/configs/opt.json
index 75505186f2..f45b824048 100644
--- a/tools/run_tests/stress_test/configs/opt.json
+++ b/tools/run_tests/stress_test/configs/opt.json
@@ -16,8 +16,7 @@
           "num_channels_per_server":5,
           "num_stubs_per_channel":10,
           "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
-          "metrics_port": 8081,
-          "metrics_collection_interval_secs": 60
+          "metrics_port": 8081
         },
         "metricsPort": 8081,
         "metricsArgs": {
diff --git a/tools/run_tests/stress_test/configs/tsan.json b/tools/run_tests/stress_test/configs/tsan.json
index a7ec08313d..6ef3bdf7ea 100644
--- a/tools/run_tests/stress_test/configs/tsan.json
+++ b/tools/run_tests/stress_test/configs/tsan.json
@@ -16,8 +16,7 @@
           "num_channels_per_server":5,
           "num_stubs_per_channel":10,
           "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
-          "metrics_port": 8081,
-          "metrics_collection_interval_secs":120
+          "metrics_port": 8081
         },
         "metricsPort": 8081,
         "metricsArgs": {
-- 
GitLab


From b42445c00e1499334c195407a28a49e2251cf0e2 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 13:11:44 -0700
Subject: [PATCH 132/525] Fix memory leak in failed metadata preparation

---
 src/core/lib/surface/call.c | 42 ++++++++++++++++++++++---------------
 1 file changed, 25 insertions(+), 17 deletions(-)

diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 6581bbd3d1..6b5e891e14 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -554,21 +554,6 @@ static int prepare_application_metadata(grpc_call *call, int count,
   int i;
   grpc_metadata_batch *batch =
       &call->metadata_batch[0 /* is_receiving */][is_trailing];
-  if (prepend_extra_metadata) {
-    if (call->send_extra_metadata_count == 0) {
-      prepend_extra_metadata = 0;
-    } else {
-      for (i = 0; i < call->send_extra_metadata_count; i++) {
-        GRPC_MDELEM_REF(call->send_extra_metadata[i].md);
-      }
-      for (i = 1; i < call->send_extra_metadata_count; i++) {
-        call->send_extra_metadata[i].prev = &call->send_extra_metadata[i - 1];
-      }
-      for (i = 0; i < call->send_extra_metadata_count - 1; i++) {
-        call->send_extra_metadata[i].next = &call->send_extra_metadata[i + 1];
-      }
-    }
-  }
   for (i = 0; i < count; i++) {
     grpc_metadata *md = &metadata[i];
     grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
@@ -579,14 +564,37 @@ static int prepare_application_metadata(grpc_call *call, int count,
                                   GRPC_MDSTR_LENGTH(l->md->key))) {
       gpr_log(GPR_ERROR, "attempt to send invalid metadata key: %s",
               grpc_mdstr_as_c_string(l->md->key));
-      return 0;
+      break;
     } else if (!grpc_is_binary_header(grpc_mdstr_as_c_string(l->md->key),
                                       GRPC_MDSTR_LENGTH(l->md->key)) &&
                !grpc_header_nonbin_value_is_legal(
                    grpc_mdstr_as_c_string(l->md->value),
                    GRPC_MDSTR_LENGTH(l->md->value))) {
       gpr_log(GPR_ERROR, "attempt to send invalid metadata value");
-      return 0;
+      break;
+    }
+  }
+  if (i != count) {
+    for (int j = 0; j <= i; j++) {
+      grpc_metadata *md = &metadata[i];
+      grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
+      GRPC_MDELEM_UNREF(l->md);
+    }
+    return 0;
+  }
+  if (prepend_extra_metadata) {
+    if (call->send_extra_metadata_count == 0) {
+      prepend_extra_metadata = 0;
+    } else {
+      for (i = 0; i < call->send_extra_metadata_count; i++) {
+        GRPC_MDELEM_REF(call->send_extra_metadata[i].md);
+      }
+      for (i = 1; i < call->send_extra_metadata_count; i++) {
+        call->send_extra_metadata[i].prev = &call->send_extra_metadata[i - 1];
+      }
+      for (i = 0; i < call->send_extra_metadata_count - 1; i++) {
+        call->send_extra_metadata[i].next = &call->send_extra_metadata[i + 1];
+      }
     }
   }
   for (i = 1; i < count; i++) {
-- 
GitLab


From 3ec4b83f7a6e8489c786ad5d2bcf99eb61c11736 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 13:14:35 -0700
Subject: [PATCH 133/525] Fix memory leak in failed metadata preparation

---
 src/core/lib/surface/call.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 6b5e891e14..0fcbed66fc 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -576,7 +576,7 @@ static int prepare_application_metadata(grpc_call *call, int count,
   }
   if (i != count) {
     for (int j = 0; j <= i; j++) {
-      grpc_metadata *md = &metadata[i];
+      grpc_metadata *md = &metadata[j];
       grpc_linked_mdelem *l = (grpc_linked_mdelem *)&md->internal_data;
       GRPC_MDELEM_UNREF(l->md);
     }
-- 
GitLab


From ddaa69f15d8b3bb1a6bf9aff231950406fe5e961 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 22 Apr 2016 13:37:26 -0700
Subject: [PATCH 134/525] Got Ruby stress client working, with some
 modifications to interop tests

---
 src/ruby/pb/grpc/testing/metrics.rb          |  28 ++++
 src/ruby/pb/grpc/testing/metrics_services.rb |  27 ++++
 src/ruby/pb/test/client.rb                   |  28 +---
 src/ruby/pb/test/server.rb                   |   2 +-
 src/ruby/stress/metrics_server.rb            |  83 ++++++++++
 src/ruby/stress/stress_client.rb             | 155 +++++++++++++++++++
 6 files changed, 301 insertions(+), 22 deletions(-)
 create mode 100644 src/ruby/pb/grpc/testing/metrics.rb
 create mode 100644 src/ruby/pb/grpc/testing/metrics_services.rb
 create mode 100644 src/ruby/stress/metrics_server.rb
 create mode 100755 src/ruby/stress/stress_client.rb

diff --git a/src/ruby/pb/grpc/testing/metrics.rb b/src/ruby/pb/grpc/testing/metrics.rb
new file mode 100644
index 0000000000..3b3c8cd61b
--- /dev/null
+++ b/src/ruby/pb/grpc/testing/metrics.rb
@@ -0,0 +1,28 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: grpc/testing/metrics.proto
+
+require 'google/protobuf'
+
+Google::Protobuf::DescriptorPool.generated_pool.build do
+  add_message "grpc.testing.GaugeResponse" do
+    optional :name, :string, 1
+    oneof :value do
+      optional :long_value, :int64, 2
+      optional :double_value, :double, 3
+      optional :string_value, :string, 4
+    end
+  end
+  add_message "grpc.testing.GaugeRequest" do
+    optional :name, :string, 1
+  end
+  add_message "grpc.testing.EmptyMessage" do
+  end
+end
+
+module Grpc
+  module Testing
+    GaugeResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.GaugeResponse").msgclass
+    GaugeRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.GaugeRequest").msgclass
+    EmptyMessage = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.EmptyMessage").msgclass
+  end
+end
diff --git a/src/ruby/pb/grpc/testing/metrics_services.rb b/src/ruby/pb/grpc/testing/metrics_services.rb
new file mode 100644
index 0000000000..f5778bbbb1
--- /dev/null
+++ b/src/ruby/pb/grpc/testing/metrics_services.rb
@@ -0,0 +1,27 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# Source: grpc/testing/metrics.proto for package 'grpc.testing'
+
+require 'grpc'
+require 'grpc/testing/metrics'
+
+module Grpc
+  module Testing
+    module MetricsService
+
+      # TODO: add proto service documentation here
+      class Service
+
+        include GRPC::GenericService
+
+        self.marshal_class_method = :encode
+        self.unmarshal_class_method = :decode
+        self.service_name = 'grpc.testing.MetricsService'
+
+        rpc :GetAllGauges, EmptyMessage, stream(GaugeResponse)
+        rpc :GetGauge, GaugeRequest, GaugeResponse
+      end
+
+      Stub = Service.rpc_stub_class
+    end
+  end
+end
diff --git a/src/ruby/pb/test/client.rb b/src/ruby/pb/test/client.rb
index 695a5c4ea2..95b059a18e 100755
--- a/src/ruby/pb/test/client.rb
+++ b/src/ruby/pb/test/client.rb
@@ -38,23 +38,23 @@
 #                            --server_port=<port> \
 #                            --test_case=<testcase_name>
 
+# These lines are required for the generated files to load grpc
 this_dir = File.expand_path(File.dirname(__FILE__))
 lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib')
-pb_dir = File.dirname(File.dirname(this_dir))
+pb_dir = File.dirname(this_dir)
 $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
 $LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
-$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
 
 require 'optparse'
 require 'logger'
 
-require 'grpc'
+require_relative '../../lib/grpc'
 require 'googleauth'
 require 'google/protobuf'
 
-require 'test/proto/empty'
-require 'test/proto/messages'
-require 'test/proto/test_services'
+require_relative 'proto/empty'
+require_relative 'proto/messages'
+require_relative 'proto/test_services'
 
 AUTH_ENV = Google::Auth::CredentialsLoader::ENV_VAR
 
@@ -208,12 +208,10 @@ class NamedTests
   def empty_unary
     resp = @stub.empty_call(Empty.new)
     assert('empty_unary: invalid response') { resp.is_a?(Empty) }
-    p 'OK: empty_unary'
   end
 
   def large_unary
     perform_large_unary
-    p 'OK: large_unary'
   end
 
   def service_account_creds
@@ -230,7 +228,6 @@ class NamedTests
     assert("#{__callee__}: bad oauth scope") do
       @args.oauth_scope.include?(resp.oauth_scope)
     end
-    p "OK: #{__callee__}"
   end
 
   def jwt_token_creds
@@ -238,7 +235,6 @@ class NamedTests
     wanted_email = MultiJson.load(json_key)['client_email']
     resp = perform_large_unary(fill_username: true)
     assert("#{__callee__}: bad username") { wanted_email == resp.username }
-    p "OK: #{__callee__}"
   end
 
   def compute_engine_creds
@@ -247,7 +243,6 @@ class NamedTests
     assert("#{__callee__}: bad username") do
       @args.default_service_account == resp.username
     end
-    p "OK: #{__callee__}"
   end
 
   def oauth2_auth_token
@@ -259,7 +254,6 @@ class NamedTests
     assert("#{__callee__}: bad oauth scope") do
       @args.oauth_scope.include?(resp.oauth_scope)
     end
-    p "OK: #{__callee__}"
   end
 
   def per_rpc_creds
@@ -279,7 +273,6 @@ class NamedTests
     assert("#{__callee__}: bad oauth scope") do
       @args.oauth_scope.include?(resp.oauth_scope)
     end
-    p "OK: #{__callee__}"
   end
 
   def client_streaming
@@ -293,7 +286,6 @@ class NamedTests
     assert("#{__callee__}: aggregate payload size is incorrect") do
       wanted_aggregate_size == resp.aggregated_payload_size
     end
-    p "OK: #{__callee__}"
   end
 
   def server_streaming
@@ -311,7 +303,6 @@ class NamedTests
         :COMPRESSABLE == r.payload.type
       end
     end
-    p "OK: #{__callee__}"
   end
 
   def ping_pong
@@ -319,7 +310,6 @@ class NamedTests
     ppp = PingPongPlayer.new(msg_sizes)
     resps = @stub.full_duplex_call(ppp.each_item)
     resps.each { |r| ppp.queue.push(r) }
-    p "OK: #{__callee__}"
   end
 
   def timeout_on_sleeping_server
@@ -332,7 +322,6 @@ class NamedTests
     assert("#{__callee__}: status was wrong") do
       e.code == GRPC::Core::StatusCodes::DEADLINE_EXCEEDED
     end
-    p "OK: #{__callee__}"
   end
 
   def empty_stream
@@ -346,7 +335,6 @@ class NamedTests
     assert("#{__callee__}: too many responses expected 0") do
       count == 0
     end
-    p "OK: #{__callee__}"
   end
 
   def cancel_after_begin
@@ -361,7 +349,6 @@ class NamedTests
     fail 'Should have raised GRPC:Cancelled'
   rescue GRPC::Cancelled
     assert("#{__callee__}: call operation should be CANCELLED") { op.cancelled }
-    p "OK: #{__callee__}"
   end
 
   def cancel_after_first_response
@@ -374,7 +361,6 @@ class NamedTests
   rescue GRPC::Cancelled
     assert("#{__callee__}: call operation should be CANCELLED") { op.cancelled }
     op.wait
-    p "OK: #{__callee__}"
   end
 
   def all
@@ -442,7 +428,7 @@ def parse_args
     opts.on('--use_tls USE_TLS', ['false', 'true'],
             'require a secure connection?') do |v|
       args['secure'] = v == 'true'
-    end
+p    end
     opts.on('--use_test_ca USE_TEST_CA', ['false', 'true'],
             'if secure, use the test certificate?') do |v|
       args['use_test_ca'] = v == 'true'
diff --git a/src/ruby/pb/test/server.rb b/src/ruby/pb/test/server.rb
index 851e815222..914c7cc79d 100755
--- a/src/ruby/pb/test/server.rb
+++ b/src/ruby/pb/test/server.rb
@@ -39,7 +39,7 @@
 
 this_dir = File.expand_path(File.dirname(__FILE__))
 lib_dir = File.join(File.dirname(File.dirname(this_dir)), 'lib')
-pb_dir = File.dirname(File.dirname(this_dir))
+pb_dir = File.dirname(this_dir)
 $LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
 $LOAD_PATH.unshift(pb_dir) unless $LOAD_PATH.include?(pb_dir)
 $LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
diff --git a/src/ruby/stress/metrics_server.rb b/src/ruby/stress/metrics_server.rb
new file mode 100644
index 0000000000..13638c4d21
--- /dev/null
+++ b/src/ruby/stress/metrics_server.rb
@@ -0,0 +1,83 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require_relative '../pb/grpc/testing/metrics.rb'
+require_relative '../pb/grpc/testing/metrics_services.rb'
+
+class Gauge
+  def get_name
+    raise NoMethodError.new
+  end
+
+  def get_type
+    raise NoMethodError.new
+  end
+
+  def get_value
+    raise NoMethodError.new
+  end
+end
+
+class MetricsServiceImpl < Grpc::Testing::MetricsService::Service
+  include Grpc::Testing
+  @gauges
+
+  def initialize
+    @gauges = {}
+  end
+
+  def register_gauge(gauge)
+    @gauges[gauge.get_name] = gauge
+  end
+
+  def make_gauge_response(gauge)
+    response = GaugeResponse.new(:name => gauge.get_name)
+    value = gauge.get_value
+    case gauge.get_type
+    when 'long'
+      response.long_value = value
+    when 'double'
+      response.double_value = value
+    when 'string'
+      response.string_value = value
+    end
+    response
+  end
+
+  def get_all_gauges(_empty, _call)
+    @gauges.values.map do |gauge|
+      make_gauge_response gauge
+    end
+  end
+
+  def get_gauge(gauge_req, _call)
+    gauge = @gauges[gauge_req.name]
+    make_gauge_response gauge
+  end
+end
diff --git a/src/ruby/stress/stress_client.rb b/src/ruby/stress/stress_client.rb
new file mode 100755
index 0000000000..698f9f1b87
--- /dev/null
+++ b/src/ruby/stress/stress_client.rb
@@ -0,0 +1,155 @@
+#!/usr/bin/env ruby
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'optparse'
+require 'thread'
+require_relative '../pb/test/client'
+require_relative './metrics_server'
+require_relative '../lib/grpc'
+
+class QpsGauge < Gauge
+  @query_count
+  @query_mutex
+  @start_time
+
+  def initialize
+    @query_count = 0
+    @query_mutex = Mutex.new
+    @start_time = Time.now
+  end
+
+  def increment_queries
+    @query_mutex.synchronize { @query_count += 1}
+  end
+
+  def get_name
+    'qps'
+  end
+
+  def get_type
+    'long'
+  end
+
+  def get_value
+    (@query_mutex.synchronize { @query_count / (Time.now - @start_time) }).to_i
+  end
+end
+
+def start_metrics_server(port)
+  host = "0.0.0.0:#{port}"
+  server = GRPC::RpcServer.new
+  server.add_http2_port(host, :this_port_is_insecure)
+  service = MetricsServiceImpl.new
+  server.handle(service)
+  server_thread = Thread.new { server.run_till_terminated }
+  [server, service, server_thread]
+end
+
+StressArgs = Struct.new(:server_addresses, :test_cases, :duration,
+                        :channels_per_server, :concurrent_calls, :metrics_port)
+
+def start(stress_args)
+  running = true
+  threads = []
+  qps_gauge = QpsGauge.new
+  metrics_server, metrics_service, metrics_thread =
+    start_metrics_server(stress_args.metrics_port)
+  metrics_service.register_gauge(qps_gauge)
+  stress_args.server_addresses.each do |address|
+    stress_args.channels_per_server.times do
+      client_args = Args.new
+      client_args.host, client_args.port = address.split(':')
+      client_args.secure = false
+      client_args.test_case = ''
+      stub = create_stub(client_args)
+      named_tests = NamedTests.new(stub, client_args)
+      stress_args.concurrent_calls.times do
+        threads << Thread.new do
+          while running
+            named_tests.method(stress_args.test_cases.sample).call
+            qps_gauge.increment_queries
+          end
+        end
+      end
+    end
+  end
+  if stress_args.duration >= 0
+    sleep stress_args.duration
+    running = false
+    metrics_server.stop
+    p "QPS: #{qps_gauge.get_value}"
+    threads.each { |thd| thd.join; }
+  end
+  metrics_thread.join
+end
+
+def parse_stress_args
+  stress_args = StressArgs.new
+  stress_args.server_addresses = ['localhost:8080']
+  stress_args.test_cases = []
+  stress_args.duration = -1
+  stress_args.channels_per_server = 1
+  stress_args.concurrent_calls = 1
+  stress_args.metrics_port = '8081'
+  OptionParser.new do |opts|
+    opts.on('--server_addresses [LIST]', Array) do |addrs|
+      stress_args.server_addresses = addrs
+    end
+    opts.on('--test_cases cases', Array) do |cases|
+      stress_args.test_cases = (cases.map do |item|
+                                  split = item.split(':')
+                                  [split[0]] * split[1].to_i
+                                end).reduce([], :+)
+    end
+    opts.on('--test_duration_secs [INT]', OptionParser::DecimalInteger) do |time|
+      stress_args.duration = time
+    end
+    opts.on('--num_channels_per_server [INT]', OptionParser::DecimalInteger) do |channels|
+      stress_args.channels_per_server = channels
+    end
+    opts.on('--num_stubs_per_channel [INT]', OptionParser::DecimalInteger) do |stubs|
+      stress_args.concurrent_calls = stubs
+    end
+    opts.on('--metrics_port [port]') do |port|
+      stress_args.metrics_port = port
+    end
+  end.parse!
+  stress_args
+end
+
+def main
+  opts = parse_stress_args
+  start(opts)
+end
+
+if __FILE__ == $0
+  main
+end
-- 
GitLab


From 79108d0fdb275dd83f4b9c26aff25358ac626a69 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 22 Apr 2016 13:41:00 -0700
Subject: [PATCH 135/525] Changed some 'require' to 'require_relative' and
 modified rpc_server slightly

---
 src/ruby/lib/grpc.rb                     | 20 ++++++++++----------
 src/ruby/lib/grpc/core/time_consts.rb    |  2 +-
 src/ruby/lib/grpc/errors.rb              |  2 +-
 src/ruby/lib/grpc/generic/active_call.rb |  2 +-
 src/ruby/lib/grpc/generic/bidi_call.rb   |  2 +-
 src/ruby/lib/grpc/generic/client_stub.rb |  4 ++--
 src/ruby/lib/grpc/generic/rpc_desc.rb    |  2 +-
 src/ruby/lib/grpc/generic/rpc_server.rb  | 14 +++++++++-----
 src/ruby/lib/grpc/generic/service.rb     |  4 ++--
 src/ruby/lib/grpc/grpc.rb                |  4 ++--
 10 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/src/ruby/lib/grpc.rb b/src/ruby/lib/grpc.rb
index 4e23cd7af2..a56c49ff59 100644
--- a/src/ruby/lib/grpc.rb
+++ b/src/ruby/lib/grpc.rb
@@ -32,13 +32,13 @@ unless ENV['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH']
   ENV['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH'] = ssl_roots_path
 end
 
-require 'grpc/errors'
-require 'grpc/grpc'
-require 'grpc/logconfig'
-require 'grpc/notifier'
-require 'grpc/version'
-require 'grpc/core/time_consts'
-require 'grpc/generic/active_call'
-require 'grpc/generic/client_stub'
-require 'grpc/generic/service'
-require 'grpc/generic/rpc_server'
+require_relative 'grpc/errors'
+require_relative 'grpc/grpc'
+require_relative 'grpc/logconfig'
+require_relative 'grpc/notifier'
+require_relative 'grpc/version'
+require_relative 'grpc/core/time_consts'
+require_relative 'grpc/generic/active_call'
+require_relative 'grpc/generic/client_stub'
+require_relative 'grpc/generic/service'
+require_relative 'grpc/generic/rpc_server'
diff --git a/src/ruby/lib/grpc/core/time_consts.rb b/src/ruby/lib/grpc/core/time_consts.rb
index 3b8c2daa07..5be7ed2cb7 100644
--- a/src/ruby/lib/grpc/core/time_consts.rb
+++ b/src/ruby/lib/grpc/core/time_consts.rb
@@ -27,7 +27,7 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-require 'grpc/grpc'
+require_relative '../grpc'
 
 # GRPC contains the General RPC module.
 module GRPC
diff --git a/src/ruby/lib/grpc/errors.rb b/src/ruby/lib/grpc/errors.rb
index 1d7588c18d..a1dd1e3e9d 100644
--- a/src/ruby/lib/grpc/errors.rb
+++ b/src/ruby/lib/grpc/errors.rb
@@ -27,7 +27,7 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-require 'grpc/grpc'
+require_relative './grpc'
 
 # GRPC contains the General RPC module.
 module GRPC
diff --git a/src/ruby/lib/grpc/generic/active_call.rb b/src/ruby/lib/grpc/generic/active_call.rb
index e80d24edc9..24cab950a7 100644
--- a/src/ruby/lib/grpc/generic/active_call.rb
+++ b/src/ruby/lib/grpc/generic/active_call.rb
@@ -28,7 +28,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 require 'forwardable'
-require 'grpc/generic/bidi_call'
+require_relative 'bidi_call'
 
 class Struct
   # BatchResult is the struct returned by calls to call#start_batch.
diff --git a/src/ruby/lib/grpc/generic/bidi_call.rb b/src/ruby/lib/grpc/generic/bidi_call.rb
index 6b9b785693..1f6d5f365d 100644
--- a/src/ruby/lib/grpc/generic/bidi_call.rb
+++ b/src/ruby/lib/grpc/generic/bidi_call.rb
@@ -28,7 +28,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 require 'forwardable'
-require 'grpc/grpc'
+require_relative '../grpc'
 
 # GRPC contains the General RPC module.
 module GRPC
diff --git a/src/ruby/lib/grpc/generic/client_stub.rb b/src/ruby/lib/grpc/generic/client_stub.rb
index a6bb92d72c..68e167a69f 100644
--- a/src/ruby/lib/grpc/generic/client_stub.rb
+++ b/src/ruby/lib/grpc/generic/client_stub.rb
@@ -27,8 +27,8 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-require 'grpc/generic/active_call'
-require 'grpc/version'
+require_relative 'active_call'
+require_relative '../version'
 
 # GRPC contains the General RPC module.
 module GRPC
diff --git a/src/ruby/lib/grpc/generic/rpc_desc.rb b/src/ruby/lib/grpc/generic/rpc_desc.rb
index dd90d8d91d..cc21ffd3c5 100644
--- a/src/ruby/lib/grpc/generic/rpc_desc.rb
+++ b/src/ruby/lib/grpc/generic/rpc_desc.rb
@@ -27,7 +27,7 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-require 'grpc/grpc'
+require_relative '../grpc'
 
 # GRPC contains the General RPC module.
 module GRPC
diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb
index 5ba77db173..7f3a38a9f4 100644
--- a/src/ruby/lib/grpc/generic/rpc_server.rb
+++ b/src/ruby/lib/grpc/generic/rpc_server.rb
@@ -27,9 +27,9 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-require 'grpc/grpc'
-require 'grpc/generic/active_call'
-require 'grpc/generic/service'
+require_relative '../grpc'
+require_relative 'active_call'
+require_relative 'service'
 require 'thread'
 
 # A global that contains signals the gRPC servers should respond to.
@@ -332,10 +332,15 @@ module GRPC
     # the current thread to terminate it.
     def run_till_terminated
       GRPC.trap_signals
-      t = Thread.new { run }
+      stopped = false
+      t = Thread.new do
+        run
+        stopped = true
+      end
       wait_till_running
       loop do
         sleep SIGNAL_CHECK_PERIOD
+        break if stopped
         break unless GRPC.handle_signals
       end
       stop
@@ -434,7 +439,6 @@ module GRPC
         begin
           an_rpc = @server.request_call(@cq, loop_tag, INFINITE_FUTURE)
           break if (!an_rpc.nil?) && an_rpc.call.nil?
-
           active_call = new_active_server_call(an_rpc)
           unless active_call.nil?
             @pool.schedule(active_call) do |ac|
diff --git a/src/ruby/lib/grpc/generic/service.rb b/src/ruby/lib/grpc/generic/service.rb
index 410e1add7d..8e940b5b13 100644
--- a/src/ruby/lib/grpc/generic/service.rb
+++ b/src/ruby/lib/grpc/generic/service.rb
@@ -27,8 +27,8 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-require 'grpc/generic/client_stub'
-require 'grpc/generic/rpc_desc'
+require_relative 'client_stub'
+require_relative 'rpc_desc'
 
 # GRPC contains the General RPC module.
 module GRPC
diff --git a/src/ruby/lib/grpc/grpc.rb b/src/ruby/lib/grpc/grpc.rb
index 250f6dd30d..b60a828d66 100644
--- a/src/ruby/lib/grpc/grpc.rb
+++ b/src/ruby/lib/grpc/grpc.rb
@@ -28,7 +28,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 begin
-  require "grpc/#{RUBY_VERSION.sub(/\.\d$/, '')}/grpc_c"
+  require_relative "#{RUBY_VERSION.sub(/\.\d$/, '')}/grpc_c"
 rescue LoadError
-  require 'grpc/grpc_c'
+  require_relative 'grpc_c'
 end
-- 
GitLab


From d354f114c102bad6e74f58c3681a8b6658ef64a3 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 22 Apr 2016 13:55:00 -0700
Subject: [PATCH 136/525] Node: add dev dependency on google-protobuf

---
 package.json                    | 1 +
 templates/package.json.template | 1 +
 2 files changed, 2 insertions(+)

diff --git a/package.json b/package.json
index 30d3251f76..5ed7f363d3 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,7 @@
   "devDependencies": {
     "async": "^1.5.0",
     "google-auth-library": "^0.9.2",
+    "google-protobuf": "^3.0.0-alpha.5",
     "istanbul": "^0.3.21",
     "jsdoc": "^3.3.2",
     "jshint": "^2.5.0",
diff --git a/templates/package.json.template b/templates/package.json.template
index 564df84ebe..11718b1ccb 100644
--- a/templates/package.json.template
+++ b/templates/package.json.template
@@ -37,6 +37,7 @@
     "devDependencies": {
       "async": "^1.5.0",
       "google-auth-library": "^0.9.2",
+      "google-protobuf": "^3.0.0-alpha.5",
       "istanbul": "^0.3.21",
       "jsdoc": "^3.3.2",
       "jshint": "^2.5.0",
-- 
GitLab


From d78ca88da1cc7989426d8cdb902c056fae2ba549 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 14:47:05 -0700
Subject: [PATCH 137/525] Fix bugs in test infra

---
 test/core/end2end/fuzzers/api_fuzzer.c | 4 +++-
 test/core/util/passthru_endpoint.c     | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index b750780a95..c1c5966801 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -138,7 +138,9 @@ static uint32_t read_uint32(input_stream *inp) {
 static grpc_byte_buffer *read_message(input_stream *inp) {
   gpr_slice slice = gpr_slice_malloc(read_uint22(inp));
   memset(GPR_SLICE_START_PTR(slice), 0, GPR_SLICE_LENGTH(slice));
-  return grpc_raw_byte_buffer_create(&slice, 1);
+  grpc_byte_buffer *out = grpc_raw_byte_buffer_create(&slice, 1);
+  gpr_slice_unref(slice);
+  return out;
 }
 
 static void read_metadata(input_stream *inp, size_t *count,
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index 156c666044..c7bcd2de7b 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -148,6 +148,7 @@ static void half_init(half *m, passthru_endpoint *parent) {
 void grpc_passthru_endpoint_create(grpc_endpoint **client,
                                    grpc_endpoint **server) {
   passthru_endpoint *m = gpr_malloc(sizeof(*m));
+  m->halves = 2;
   half_init(&m->client, m);
   half_init(&m->server, m);
   gpr_mu_init(&m->mu);
-- 
GitLab


From 8a67780fba0739d1fd2466ac2bcf58cf55ec7862 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 15:07:53 -0700
Subject: [PATCH 138/525] Fix bug causing calls to never complete

---
 src/core/lib/surface/call.c             | 20 +++++++-------------
 test/core/end2end/fuzzers/api_fuzzer.c  |  2 +-
 test/core/surface/channel_create_test.c |  3 ++-
 3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 0fcbed66fc..b5df9f33c1 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -220,10 +220,7 @@ struct grpc_call {
     } server;
   } final_op;
 
-  struct {
-    void *bctlp;
-    bool success;
-  } saved_receiving_stream_ready_ctx;
+  void *saved_receiving_stream_ready_bctlp;
 };
 
 #define CALL_STACK_FROM_CALL(call) ((grpc_call_stack *)((call) + 1))
@@ -1065,12 +1062,11 @@ static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
   grpc_call *call = bctl->call;
 
   gpr_mu_lock(&bctl->call->mu);
-  if (bctl->call->has_initial_md_been_received) {
+  if (bctl->call->has_initial_md_been_received || !success) {
     gpr_mu_unlock(&bctl->call->mu);
     process_data_after_md(exec_ctx, bctlp, success);
   } else {
-    call->saved_receiving_stream_ready_ctx.bctlp = bctlp;
-    call->saved_receiving_stream_ready_ctx.success = success;
+    call->saved_receiving_stream_ready_bctlp = bctlp;
     gpr_mu_unlock(&bctl->call->mu);
   }
 }
@@ -1099,13 +1095,11 @@ static void receiving_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
   }
 
   call->has_initial_md_been_received = true;
-  if (call->saved_receiving_stream_ready_ctx.bctlp != NULL) {
+  if (call->saved_receiving_stream_ready_bctlp != NULL) {
     grpc_closure *saved_rsr_closure = grpc_closure_create(
-        receiving_stream_ready, call->saved_receiving_stream_ready_ctx.bctlp);
-    grpc_exec_ctx_enqueue(
-        exec_ctx, saved_rsr_closure,
-        call->saved_receiving_stream_ready_ctx.success && success, NULL);
-    call->saved_receiving_stream_ready_ctx.bctlp = NULL;
+        receiving_stream_ready, call->saved_receiving_stream_ready_bctlp);
+    call->saved_receiving_stream_ready_bctlp = NULL;
+    grpc_exec_ctx_enqueue(exec_ctx, saved_rsr_closure, success, NULL);
   }
 
   gpr_mu_unlock(&call->mu);
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index c1c5966801..b584addd6e 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -50,7 +50,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // logging
 
-static const bool squelch = true;
+static const bool squelch = !true;
 
 static void dont_log(gpr_log_func_args *args) {}
 
diff --git a/test/core/surface/channel_create_test.c b/test/core/surface/channel_create_test.c
index 5ff66bd7a5..450cc37233 100644
--- a/test/core/surface/channel_create_test.c
+++ b/test/core/surface/channel_create_test.c
@@ -43,7 +43,8 @@ void test_unknown_scheme_target(void) {
   grpc_resolver_registry_init("");
 
   chan = grpc_insecure_channel_create("blah://blah", NULL, NULL);
-  GPR_ASSERT(chan == NULL);
+  GPR_ASSERT(chan != NULL);
+  grpc_channel_destroy(chan);
 }
 
 int main(int argc, char **argv) {
-- 
GitLab


From 497f101d32807e5b7858e4c075ea83bb9ed5f968 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 15:08:28 -0700
Subject: [PATCH 139/525] Expand api corpus

---
 tools/run_tests/tests.json | 1372 ++++++++++++++++++++++++++++++++----
 1 file changed, 1225 insertions(+), 147 deletions(-)

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 12264ba3b6..643fe5d919 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23352,6 +23352,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin"
@@ -23484,6 +23506,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin"
@@ -23550,6 +23594,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin"
@@ -23572,6 +23638,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin"
@@ -23594,6 +23682,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin"
@@ -23684,7 +23794,975 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23706,7 +24784,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23728,7 +24806,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23750,7 +24828,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23772,7 +24850,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23794,7 +24872,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23816,7 +24894,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23838,7 +24916,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23860,7 +24938,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23882,7 +24960,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23904,7 +24982,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23926,7 +25004,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23948,7 +25026,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23970,7 +25048,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
     ], 
     "ci_platforms": [
       "linux", 
@@ -23992,7 +25070,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24014,7 +25092,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24036,7 +25114,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24058,7 +25136,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24080,7 +25158,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24102,7 +25180,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24124,7 +25202,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24146,7 +25224,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24168,7 +25246,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24190,7 +25268,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24212,7 +25290,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24234,7 +25312,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24256,7 +25334,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24278,7 +25356,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24300,7 +25378,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24322,7 +25400,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24344,7 +25422,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24366,7 +25444,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24388,7 +25466,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24410,7 +25488,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24432,7 +25510,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24454,7 +25532,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24476,7 +25554,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24498,7 +25576,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24520,7 +25598,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24542,7 +25620,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24564,7 +25642,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24586,7 +25664,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24608,7 +25686,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24630,7 +25708,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24652,7 +25730,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24674,7 +25752,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24696,7 +25774,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24718,7 +25796,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24740,7 +25818,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24762,7 +25840,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24784,7 +25862,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24806,7 +25884,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24828,7 +25906,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24850,7 +25928,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24872,7 +25950,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24894,7 +25972,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24916,7 +25994,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24938,7 +26016,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24960,7 +26038,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24982,7 +26060,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25004,7 +26082,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25026,7 +26104,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25048,7 +26126,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25070,7 +26148,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25092,7 +26170,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25114,7 +26192,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25136,7 +26214,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25158,7 +26236,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25180,7 +26258,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25202,7 +26280,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25224,7 +26302,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25246,7 +26324,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25268,7 +26346,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25290,7 +26368,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25312,7 +26390,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25334,7 +26412,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25356,7 +26434,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25378,7 +26456,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25400,7 +26478,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25422,7 +26500,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25444,7 +26522,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25466,7 +26544,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25488,7 +26566,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25510,7 +26588,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25532,7 +26610,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25554,7 +26632,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25576,7 +26654,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25598,7 +26676,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25620,7 +26698,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25642,7 +26720,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25664,7 +26742,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25686,7 +26764,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25708,7 +26786,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25730,7 +26808,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25752,7 +26830,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25774,7 +26852,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25796,7 +26874,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25818,7 +26896,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25840,7 +26918,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25862,7 +26940,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25884,7 +26962,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25906,7 +26984,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25928,7 +27006,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25950,7 +27028,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25972,7 +27050,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25994,7 +27072,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26016,7 +27094,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26038,7 +27116,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26060,7 +27138,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26082,7 +27160,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26104,7 +27182,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26126,7 +27204,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26148,7 +27226,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26170,7 +27248,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26192,7 +27270,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26214,7 +27292,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26236,7 +27314,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26258,7 +27336,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26280,7 +27358,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26302,7 +27380,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26324,7 +27402,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26346,7 +27424,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26368,7 +27446,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26390,7 +27468,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26412,7 +27490,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26434,7 +27512,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26456,7 +27534,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26478,7 +27556,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26500,7 +27578,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26522,7 +27600,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26544,7 +27622,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26566,7 +27644,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26588,7 +27666,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26610,7 +27688,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26632,7 +27710,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26654,7 +27732,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26676,7 +27754,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26698,7 +27776,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26720,7 +27798,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26742,7 +27820,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26764,7 +27842,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26786,7 +27864,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26808,7 +27886,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26830,7 +27908,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26852,7 +27930,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26874,7 +27952,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26896,7 +27974,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
       "linux", 
-- 
GitLab


From 7c2676675a961705c830a174ea3acfb4f9a50ff2 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 15:10:25 -0700
Subject: [PATCH 140/525] Expand api corpus

---
 test/core/end2end/fuzzers/api_fuzzer.c            |   2 +-
 .../0159f564d91869bc07239f5551a493c2845a4524      | Bin 0 -> 166 bytes
 .../056e56878b249c7fd0b95576b352ab2f4d46582e      | Bin 0 -> 212 bytes
 .../07cc8b298d1502d0c30f3f160871e66e5a1f3fe1      | Bin 0 -> 316 bytes
 .../085865a209776911782f592c9f30ffe0ad3814a0      | Bin 0 -> 227 bytes
 .../09923e3ef02243b1902406c637f9516cbe99d7cb      | Bin 0 -> 227 bytes
 .../173ebf4139ee6d7a574b6767059d82375674bbf4      | Bin 0 -> 168 bytes
 .../1ccd81836f26b7ececde2b02a22b19ab2a498631      | Bin 0 -> 166 bytes
 .../2d61ec2cff75eadbc47e0932998b8a797e0cd96c      | Bin 0 -> 307 bytes
 .../3aee5ced2869452b8ed65313d01b9b9c87144cd4      | Bin 0 -> 222 bytes
 .../3b002ab57ff8080fbb1e72d985ca6f59f96a171e      | Bin 0 -> 326 bytes
 .../50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0      | Bin 0 -> 245 bytes
 .../546fe2e2b1e2756c3f121d0545866798c85c9b8b      | Bin 0 -> 215 bytes
 .../56f3ca8174d263240113de88e7547e7b1c5cb2cf      | Bin 0 -> 167 bytes
 .../57798cc4375de344391221fd07d591f5c64d646d      | Bin 0 -> 392 bytes
 .../57da1745490c2f21ecb86370f1f72f77752bc739      | Bin 0 -> 168 bytes
 .../5d0137a19ae57cfdf5172a8b51e8ea0a0a893690      | Bin 0 -> 214 bytes
 .../5e1391f44f904fa54e66ec174e4c8879921e842a      | Bin 0 -> 335 bytes
 .../6f88ae246aa4af9c74732d87a758ba5ca0f40caf      | Bin 0 -> 220 bytes
 .../71e2b03b503dbbdc0d2e724c562b9f1c77f972fa      | Bin 0 -> 215 bytes
 .../758ce3af56f75edb8faa20ef78ffda5511dffb3a      | Bin 0 -> 220 bytes
 .../87add83a18a25fe585df8adc124eae6d70733f74      | Bin 0 -> 308 bytes
 .../8949e5c946cf6ec7d1981d553972d4f3a6026987      | Bin 0 -> 166 bytes
 .../8d951b7ab0231fb1dc573433b354eac58c699c36      | Bin 0 -> 224 bytes
 .../9f77859f13bbe482011164f7a5e1a2a77d8596f2      | Bin 0 -> 220 bytes
 .../a10775155c8eb3a834d067c0978753513d5e1d75      | Bin 0 -> 328 bytes
 .../a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006      | Bin 0 -> 327 bytes
 .../a693801403d7721b5b3d7d4525cc0b830ab35e06      | Bin 0 -> 126 bytes
 .../a967ca556a517366de03b8a9d21e991783f0896c      | Bin 0 -> 237 bytes
 .../af0a181159725d308833841738c5d14d478228e8      | Bin 0 -> 227 bytes
 .../b46794fb4115e84da13a79153b2ea44d89d952a5      | Bin 0 -> 224 bytes
 .../b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3      | Bin 0 -> 20 bytes
 .../bcae3229d884c5cfc36ae28c672f9b960e30042f      | Bin 0 -> 226 bytes
 .../bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57      | Bin 0 -> 168 bytes
 .../bde8a553b10a613c32f800429a07f0b5a2d37e53      | Bin 0 -> 181 bytes
 .../c56726277ddeb233e30b6223158042aafb944191      | Bin 0 -> 216 bytes
 .../c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04      | Bin 0 -> 220 bytes
 ...crash-0a0ee428270236e707457b9560a91c233ed2326c | Bin 0 -> 47 bytes
 ...crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1 | Bin 0 -> 170 bytes
 ...crash-97ec5404605d0d7bed44c2b845e06f6d9479c152 | Bin 0 -> 124 bytes
 .../d3bec93d378e7466bacd95be431500ed30cba449      | Bin 0 -> 225 bytes
 .../d97ade864dccd3eea245411665e5126f97302063      | Bin 0 -> 220 bytes
 .../dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51      | Bin 0 -> 220 bytes
 .../dde3b1c08399b61df7de4997194d9392c2e4c3cb      | Bin 0 -> 226 bytes
 .../e06db057637f6738a48464cc2d65d7399fe296e8      | Bin 0 -> 220 bytes
 .../e5afbabdb437dfc44f06ddf8b9f793868e8fdde0      | Bin 0 -> 25 bytes
 .../f2bb9fb90c0fb7dfd765e1c528330881e721c7d8      | Bin 0 -> 217 bytes
 .../fa423921deeaeda55d2ff74e9541e5d89ddc7d36      | Bin 0 -> 217 bytes
 .../fa45cfbecd8680693570d90f214abd9febf681a6      | Bin 0 -> 221 bytes
 ...meout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1 | Bin 0 -> 170 bytes
 50 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index b584addd6e..c1c5966801 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -50,7 +50,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // logging
 
-static const bool squelch = !true;
+static const bool squelch = true;
 
 static void dont_log(gpr_log_func_args *args) {}
 
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524
new file mode 100644
index 0000000000000000000000000000000000000000..fc0942d8beea523fe5fe46d5d6ba4febaef4d94b
GIT binary patch
literal 166
zcmZQ7=i^AVSF>ee<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrA|>gtR|
zE$s~dIT#oZg|<9m`v0FJSdWRVICXO>6I*#IM_CsG6mYF&U}R<DV=Mok%28BS%D~8=
z#q}R#9K$0825ufE76yjY)Z!whBZ&+QjQfiiAGL7&XJRYo1F6=~V$x@0U|{&4s%*d3
KAXu-Xhyeggh%1Z$

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e b/test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e
new file mode 100644
index 0000000000000000000000000000000000000000..5713da5bbd31348ac3e3a0b9a20fa9a4d5ead05c
GIT binary patch
literal 212
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqN$nh8YSI7yS`1}H{}~t<
zTOKhmwlFe0Vqz;_%fP9~u$Cd!s;G>KkFET_D@PF%N3b5)NRCt{w(?YtP^c8h;MD(&
zMGRnD)WO#LXJ7=I$Hef6sVw#X+WQQgMI4L_j4l8ELo8a$!obPF#NfceSj3^g@Tg_~
oe@2EXh9U+A#<d;{AVG#lEu0Jtj0}&~g50&1fq{d8gJCiQ06dyK2LJ#7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1
new file mode 100644
index 0000000000000000000000000000000000000000..45c4b81116ede68b7e67d2d5ef50e00b692b319a
GIT binary patch
literal 316
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrA|>gtR|E$s~dIT#oZ
zg|<9m`v0FJSdWRVICXO>6I*#IM_CsG6mYF&VB}?G;$tiSpUP2GR?5K0pvCncWFEsK
z1qN;&CME`k)YRf4CXWA1Y~_3$MP(XVO!{mL3=IEMmF*3J^*V}}*v|2#g2Wk${+BT_
zu`ww#q$)6hlrSJW6>L7(sccV~Qj3bpKyF>jfaKDaM_^}xoW!8Pz`&7SRFJHfoSIi$
zTFk(}(DI0Zk&)pM6I=OO22Ku!wG63NpiqD~oC)N=;?$xtj#MVLrc{p5SqQnZRIq>8
G%J~5GGf`^*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0
new file mode 100644
index 0000000000000000000000000000000000000000..85820f36e6b7c681300de1f804e97638037359d1
GIT binary patch
literal 227
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbkpZF$7>{y#^s9ur$?@#a(}w(?YtvMz?A(+nWMwU&XAm5Gn7{D10m
zj-s+s21W)AuKytO7#=Awa5L~Qu`n=!6f!U{FfuSWr=}JcF&$xIE9Xn);3z87(E887
zz}WIAk%18+R#axM_5U}+{vyUlEgb)0Vj5aZFWDFv82+a!uVrE2<lx+4|8cEBuv!OW
N%cHdnoJAZA3;=?#JkkIF

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb b/test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb
new file mode 100644
index 0000000000000000000000000000000000000000..e2f0da626dfc69fc9bf3e1b55748b934b74a7bb1
GIT binary patch
literal 227
zcmZQ#E9c`#wO6xcV&f{ePd!*v#>A(<z{ZgJ|87wk0|R3b0~1?OS!$641LLDBYZYIs
zGZwY9GyLaZU_2Ds@`&mGe~w^1Cbrb#&8bX`45=JtT?|mbwU&XAm5Gn7{C_G(QCTSi
zgBI6+#v+EfObm|{7`PdDm{=GX85kJmGdQQF78fxc0XZa<gQKWSL+d{S17pjhL<R;%
zh+t8fz1IKV4Eu{1AGQ4b|NlS7f0($27Lz`k00YC%|NsC0S6<7)z{$b6!+xz{uwDma
N%cHdnoJAZA3;@oJLNfpW

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4
new file mode 100644
index 0000000000000000000000000000000000000000..7ddf9b33cb40f0a28d166dae49d9f4f1cdfe53dd
GIT binary patch
literal 168
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziEUq5YLNy5<D)BU71h-l
zn~Pf78UAxHFdhnRdBpVpKS!`06I*fW=2RxO@>GtpE(R#zTFb!5%EZT3{y&wYsH~KM
zkwJ^=Kgc|WM+ywwJWQ+%45_KbMNCH$85kJ%7co9+;rP$QR?Y`ft;M9T!N$PA@IO`A
Meyu^UUPloF0Kpq9VgLXD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631
new file mode 100644
index 0000000000000000000000000000000000000000..a581ee25f5b3d5f167caec5f01c67143eae4d5b6
GIT binary patch
literal 166
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziLIzCwMc`3@zIsFit6f&
zMJ??N|2Y^K4~4coV*3A|BUq1#tvGdaDid3IDo0rt0~BzrWng4w;$tiSpUP2GR?5K0
zpvCncWE{gI1qN;&CRPRphScIBrXz_A42=7W7$3E8{0F%uwWv%(>j{%S8v_Hw|5W?6
K2ElqAMGOEWNh{|7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c
new file mode 100644
index 0000000000000000000000000000000000000000..f0e23fccad912ad0fb08fcf35d0c1798ade1f647
GIT binary patch
literal 307
zcmZQ#<0?<(C@N#(Q(#~#{|{oOsxvS$6|ohk7BR7v^QD3aj#PU!TaZ%w)Pqp945|O`
z7L_qEFcvW|u@#l27D+HLzE)qW_~;5_QA<0+e+~x5L!m8?nEwCg2-ag_OD*0EGAWg#
ztcw8(xYjZ-vNG{OZ7pSBWYFUJ&sfATmx<w#0s}V#4-+E;BLf42=6nX{)YRf4rXwJy
zq;hZ+m1$`GXJBA#d6dY&zz7j6Dzn%6|C?cd5#ys4j{h(*4J{^pHU<WUpa1{=|F683
zg@KcUbBFy}gJ8W5#ukpEGJ9nPs7Y%X%2GLtKxVGxU@Y?BVBq-O&hV(E<<X<H44g$A
OYZ-DGz>eWy5C8yV(p5YF

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4
new file mode 100644
index 0000000000000000000000000000000000000000..ee9bcbdb4b5f31f155a8873ef88f9d574c836032
GIT binary patch
literal 222
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbkpZF$7>|362t9ur$?@#a(}w(?YtvMz=q1~A}S%fQIW#K%_tKlM3B
zQCTSiBZC&#e~@_$j}#cV8F-jj!0H$o7@Sj6i;I|!FtL^MrE+i-m1$`GXJBA#d6dY&
z2oWnPv)B6nn_+(u<D(Xi|1dEPEvA=j3=9naQ<c}UFmQ5k?yz5L5Uke0*z#yC17{Hj
G0|Nk4MLQ+{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e b/test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e
new file mode 100644
index 0000000000000000000000000000000000000000..f3518a285891e23208971f4cc5e32c5406f6f655
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmyym|BNk<
z7#Ld^86GjQm9J&s<X~9KkZM&_#>B@~{y&wYh>0Uu4{RhyDid3IDn}?nsx0+CV-W+`
z7Im;S{}~t=7#Ld~F)=)1Dog#p_C5n=6$c{&W6Qt)|G^TvEKF=n5Qpe@6fr^cg0(V~
zF)}eQurRhTv2m5BY891P^C>W}fgDiA#K2g@@QC66f3Pc|PV``4VoNPz;N)OpVBlaZ
z;!t3C)Uy9SBSRHK5d#C`S`P*e#)ljXk6Jhx7#JBItp&MiEdv7w0|&!ohO*Qm4Uhom
eS_XB-qLy}s{~QdAk6IqBW$0qy0(pUB76Skn_gZiO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0
new file mode 100644
index 0000000000000000000000000000000000000000..f561f60f1076efef8f7b1125fe2a74a1f8cac457
GIT binary patch
literal 245
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc^T(UrA|uhkig
zTG|=@b1*O-3T=7B^#4CcupSdzYVqb&Cbsfaj<PNWDBxPlz{twP$5#G7^*KjTSt$b}
zgBI6+kZ}x;6d1S}c$iq285kHrs-06)i<#WYHTX1BIXa5MG_>wBFcdKz0XZy{gQKWS
zL+d{S17pjhL<UBPSW%h1*8krO`->PKwQ&50iD_st>9a8~F#JzdUdzJS!th8}gn^TT
abBFy}gJ8W5#+FBG890SGia0nK7#IKq*FWO`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b b/test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b
new file mode 100644
index 0000000000000000000000000000000000000000..5c0c9c6e86c00255c2d254353558ce32ec698af5
GIT binary patch
literal 215
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWL>U&Z()zMNCIPZb;?eC@Ry?`p>|?*zzcmfq@YsSX5@O_5U}+
z{vyUlEgb*BVnrNfTKP;GYzzzx|5KIMvaIFcG~~43!4Rz1!PxR>Edyr}2Ll5D3Jf__

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf b/test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf
new file mode 100644
index 0000000000000000000000000000000000000000..a9a45d64505633497a502b34f3296b85ac4108bc
GIT binary patch
literal 167
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfzgVAiEUq5YLNy5<D)BU71h-l
zn~Pf78UAxHFdhnRdBpVpKS!`06I*fW=2RxO@>GtpE(R#zTFb!5%EVXxKb51XtdxO~
zL5u4@V-W)r!y^R-ZXPC97KYT+;v%L*#v=?x42=69wQ&4rVk_qZsn%lB*I;8{VECV^
NY`@kZSg)gq0RV?mEGPf~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d b/test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d
new file mode 100644
index 0000000000000000000000000000000000000000..3f34fcd614e9defd87d8a06634cac59a48b49c9e
GIT binary patch
literal 392
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51Xtdv2J
zL5u4@$T)^a3Jlx~JWNas46F<c49=;k#YId<K+Z_z;3z87(E887z}WIAk%55`B3J}+
zS*krQmuY}qrjFfV#i>PDT~=nV_5U}+{vyUlU^ljK{D<0ArlG}@&&I&O@IO^~EeqJ~
zsSJ!LZs+1*Vk=MADk`%EhZI;1G^A2NL8Sq5KId8ngo_@vJX*`p#lXeDz{$b6!+xz{
YuwDma%m4oj9J3y+W#BC0XkcIf0R5+Fo&W#<

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739 b/test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739
new file mode 100644
index 0000000000000000000000000000000000000000..78bc4be3adb41466e4a6897ef4ddb27c6124698a
GIT binary patch
literal 168
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72zi7mM-wMc`3@zIsFit6f&
z%|$Kk4F5S87!QTEJYxF)pCee0iLE$wb1D;Cc`8R)7XuV<tz}?jW#VHi|DVcHR94Es
z$e_jbA7mcGBLxO-9!3TRhSb#JBBmpW3=E9>ix?lZaQtUtE9V2L)?(7vU}Iol_@An5
Mzt$jFucL?o0Fb#X0RR91

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690
new file mode 100644
index 0000000000000000000000000000000000000000..21cd7aea7ac658287034abecf3cc193bf92430fe
GIT binary patch
literal 214
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVS~#SsdXO6Mp_Oa0GS
z#K6P}vPK<j&wmC+uz^erT925@Qva{L&%jy4!N|ba^6x*ys<kW(oE%IH3>=I_910AN
pTK20mGE^}XF)%Q$^#BVpJZj-&U|?i;v=-#DwG0d#3>*xT830NpI&c60

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a b/test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a
new file mode 100644
index 0000000000000000000000000000000000000000..83d17fd97318448607a0249fa44824b83e68df7c
GIT binary patch
literal 335
zcmZQ#E9c`#wO6xcV&f{ePd!*v#>A(<z{ZgJ|87wk69Z!r16xs9YLNs3<D)BU6<@0}
z7PYi9{O4d`JQUjUi0S`-4m~Ee)Z)#lOl;+;9A#Y$P{6g8fsvJokFETFDo0USDFY*e
z7T15qB8It44388TxEXku7@63Z{--M28wBfj6frS?+yPRmp~X<f$i%?F!q@_GQL0u^
znKj5kEMSAc4tm7!|33o*!+Zwk)YRf4rXvuo97SasTK^ds7+W4CGB7Yg1dGb-wf_HR
zWY}NC_^5^BKTJ?Vi%FlYg%RY|pa1_qTFb!6!LXLWgMo=H735hBkRhCF8K9p1ue_Fp
pfs=!Chy7Z^%X%G*Am2Y~d9;?Hi-C)Qk%56@7Kp=H#KFM8006NBTm%3B

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf b/test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf
new file mode 100644
index 0000000000000000000000000000000000000000..7f32cc0d7c3c3336116756962b2999fe7c61d4e3
GIT binary patch
literal 220
zcmZQ#E9c`#wO6xcV&f{ePd!*v#>A(<z{ZgJ|87wk69Z!r0~1?OS!$641LLDBYZYIs
zGZwY9GyLaZU_2Ds@`&mGe~w^1Cbrb#&8bX`45=JtT?|mbwU&XAm5Gn7{C_G(QCTSi
zgBI6+#v+EfObm|{7`PdD7#SEC<})~_rWO}59Rax_m4l<GOhfBG0|R5rqeKP<Mu=ch
znZ4Hk-wgYU7$3E8{D+BYXff%tF)%Rv{Qv*|f916-44fRCJM7mQ2J3Y&wme$Pz*)q>
GzyJW~-99A%

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa b/test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa
new file mode 100644
index 0000000000000000000000000000000000000000..14cf1a1cad6f7c6c9dcf0294a093fd62fb13190d
GIT binary patch
literal 215
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw8D8m5Hs0p-6*)@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO4
zi;ML?V-W)r!y^R-ZU!DEhSb#JqFjbM3`|ErZb;?eC@Ry?`p>|?*zzcmfq@YsSX5@O
z_5U}+{vyUlEgb)0Vj5aZ`fLmg4F6M=*Rn8ha&YdjUuzPq*TLBGXe|S05eEYU0B!U-
AG5`Po

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a b/test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a
new file mode 100644
index 0000000000000000000000000000000000000000..901a1fc4e06e56ee3ad2fb8e12631b285fd5a6d3
GIT binary patch
literal 220
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKlM3BQCTSi
zBZC&#e~@_$j}#cV8F-l37#J8BL8_foQ;Un3j(}W}%E3`orlIwpfq}8*Q6d8)M69UH
zUhDsFhW$m1k6JkX!^AYSnDjwr{7+S0%fi6P!MVeJtwFF}2V={lwG5m^91IKq{xCWM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74 b/test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74
new file mode 100644
index 0000000000000000000000000000000000000000..87c5683336cbcabc9b58a9fe32ee4a68b28d2cbe
GIT binary patch
literal 308
zcmZQ#<0?<(C@N#(Q(#~#{|{oOsxvS$6|ohk7BR7v^QD3aj#PU!TaZ%w)Pqp945|O`
z7L_qEFcvW|u@#l27D+HLzE)qW_~;5_QA<0+e+~x5L!m8?nEwCg2-ag_OD*0EGAWg#
ztcw8(xYjZ-vNG{OZ7pSBWYFUJ&sfATmx<w#0s}V#4-=y`10w?igXVk&=hW2VBBmoC
zx1@4#6qRXc{byicY<ZN(z`zI*EGo0t`v03@e-Y!O7LNZgF%2yyeKrOLhM)ic|NpPN
zmW6?ngL8-dT7zJ{4#pOaqB47B2B=AE8Ol;Qi$G?s<zOuG;9%hR-Oli+rRCA1wG5m^
P9BUbJ8NiO=U=RQRuqah`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987
new file mode 100644
index 0000000000000000000000000000000000000000..1363ede12a4745f51d73c6e86204c3aecc80b983
GIT binary patch
literal 166
zcmZQ#V`3}kOXVmk)6imKD^Im5Dr4efEB~L$QN+X%tjAQGT2#i73X<UnMM#yU{%0&=
z0P9o-YyHo_z}WJLiQy4bS?d3_EDW4Q9E=Q%E&u*QBtRk@Obq1=9E^MgMH~tYk6QMF
v?6m*Sz`)Gd@@VaUMusYeA_fM=wG14LMGPDa91M?II2jlj9<62IU|;|M-$pGy

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36
new file mode 100644
index 0000000000000000000000000000000000000000..ad52abee7965ff4ed232adb5a401f442c33d8678
GIT binary patch
literal 224
zcmZQ#E9c`#v{$obV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwTO{{@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWNas3=IGO|NjqG@0^-iT*Pz)<d{?rj-oORt^W)Rj4h8685kHL
zf<<NaTK|7D>@Q+WYT@_~6VuRQ%4Y)^l&ZXzg@KcUbBFy}!(hD*#+FBG890kL7#IL~
Ca6GsG

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2
new file mode 100644
index 0000000000000000000000000000000000000000..0eeb1665b9de4819aa865147c70eeeb2938e271d
GIT binary patch
literal 220
zcmZQ#E9c`#wO6xcV&f`LwJ$1T;!|K?V@Umfx2TMXfw8D8m5Hs0p-6*)@zIsFim%lf
zi(1+l{&O%e9tv%FB+m5zKS!`06I*KW=2RxO@>Gtpu4D!T;9AST$jZdWR{lSgqo}Nu
zfkBIl^*>_~0~5m|1qN;g9wvs=)Z(IChC2*QM?elq<=`kP)6n|Qz`)q@D3O7I5h7Sr
zX0P@CH^crS#z!q2|6yVpT1@(E3=9naQ<c}UFmQ5k?yz5L60Fz3*z#yC17{Hj0|Nji
C3_7d;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75
new file mode 100644
index 0000000000000000000000000000000000000000..6c7b03215b5c4cfd2d32ab0508952f8460ef35f7
GIT binary patch
literal 328
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4Zh}{!is7V&Vwa0~^Va%EVTl$`J~dDhElGrT%9u
zVgTEs4z}h$10&cxCWc2$WvTzy-e=&f;$UQ8Z29*eVv#Nj6B`r6A^IIfOzIHLV7&}w
zj7$s+EQ~EoY+U83T192nd<qO~EMR+>7#NEf9x?p?4|XTiksb_8Y^g;IoE%IH3>=I_
z910ANTK4~EWT;{&Vqjog>j4&Ic+|qlz`)4xXf4Q}YZ(|g7&sUvGnAzkX@CSc*D|Ox
a7PYi9{O4d`eAM!2EkhRr7swMFvlsvb*;m{E

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006
new file mode 100644
index 0000000000000000000000000000000000000000..be8da6ca2933823c9574476aa37e3f1abfbdd65d
GIT binary patch
literal 327
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
zMurwfhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;fJ~z}WKdKg1$k7A7_(h(q){ikKjJ!CD#07?~It
zSQuNF*tp75wTjBD`4kw~SU@f)V`5+|VtB;x|34$hnNT-+Ffg&Deq!L{U}9k4U@YQL
zV0hHB|34!`6+;mN1LIl`upq;u7ET5RMutagLEc=;z`()4!7!PjEVW33!L8*H=UN7J
b#-f&XhW{K4jE`C#t!3z9-~#!9V-^DdMZj3l

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06
new file mode 100644
index 0000000000000000000000000000000000000000..016b041c9df69f1e3b80c9fdc707ecc734e166ff
GIT binary patch
literal 126
zcmZQ#E7#yCDr4efn^*onm7|D>BUq1#tvI!)j3bqatvr<@6f6mrD@*;)Sj51@R?e5I
z&QVmRq4l4EfwAQgBZJ~2rn1!kYgrgLi#Qk=7+e1RXJTOBU@YQLV0hHB|34!`RS^RN
V<65u~!=n~X21bTQYZ*8g7yz^yB8UJ0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c b/test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c
new file mode 100644
index 0000000000000000000000000000000000000000..f9524b96c34353652b19e86a4223590c36beeafc
GIT binary patch
literal 237
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`M)smnuvB&sf9&
zwnZIe4VcAIRA&EQ>pue{*kmS#M@(g@|JUAU;4I=`WMFLh_a9>AS{4RQ4kiW%4#px5
z1%^j0`~NdCR527WFfgw5VBlb6ECRV}Ekh9p!=n~Xuwe|3)<VP>I5-$M1O$Q^CNt;(
E0EA;f-2eap

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8
new file mode 100644
index 0000000000000000000000000000000000000000..c79a555f329a3f804475c39d50e23129c0811332
GIT binary patch
literal 227
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbkpZF$7>|362t9ur$?@#a(}w(?YtvMz=q1~A}S%fQIW#K%_tKlM3B
zQCTSiBZC&#e~@_$j}#cV8F-jj7#P7S85o!t7@Sj6i;I|!FtL^MrE+i-m1$`GXJBA#
zd6dY&2oWnPv)B6nn_+(u<D(Xi|1dEPEvA=j3=9naQ<c}UFmQ5k?yy%}YY?o~!PxR>
LEdyr}2LlTL4`Vw`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5
new file mode 100644
index 0000000000000000000000000000000000000000..1c0d75ac15fbde72b3f6a0268b64c11ec96d9efc
GIT binary patch
literal 224
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1_lNu1~A}S%fQIW#K%_tU-P+U
zQCTSiBZC&#e~^g`j}#cV8F-kO7}yvX7#KmSol{ebi<pjpT$9SdQB<a(^`C)(vE@-B
z10zJNsLWpL|8Iu<MU0PHIR3-LG_;uXL1z3<RbI=&z{$b6!+xznuwDma%cHdnoJAZA
F3;<*IIqLub

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3
new file mode 100644
index 0000000000000000000000000000000000000000..52d70c37d2bf1b4309c095d10d324f9d1733d611
GIT binary patch
literal 20
bcmZQ#E9c`#wO3PPVBG(xXl)AzBLf2fFF^#<

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f b/test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f
new file mode 100644
index 0000000000000000000000000000000000000000..95ba743387f08335f18239a6420db37fc130d4a3
GIT binary patch
literal 226
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbna|NsC0(3VF`|Nj>=rLu7Z>upYDVk=MODC=S<VgLiKwG51`OnhwR
z|5KlH6qS`SFfwRy{Rf%J@JNAyn}LUk5v-1pfx$U7wYZ4s2oqa5Un&PjQJIF;e+CA|
zmPd&Uj7)6hrKuc6W%gSCe>3baVtmxX@t=vUoF62np~du)je&vTf2#6Y76wiZ&K>q^
T4T9A=7+W5#W#BC0U|;|MJbgch

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57
new file mode 100644
index 0000000000000000000000000000000000000000..7f959dc70ae75c6b925845a25e922581920f1bbd
GIT binary patch
literal 168
zcmZQ7x98wfOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72zi7mM-wMc`3@zIsFit6f&
z%|$Kk4F5S87!QTEJYxF)pCee0iLE$wb1D;Cc`8R)7XuV<tz}?jW#VHi|DVcHR94Es
z$e_jbA7mcGBLxO-9!5q6hSb#JBBmpW3=E9>ix?lZaQtUtE9V2L)?(7vU}Iol_@An5
Mzt$vJucL?o0Ht6oCIA2c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53
new file mode 100644
index 0000000000000000000000000000000000000000..e45002295c43e9c8f21917ac8ad87d96f478410e
GIT binary patch
literal 181
zcmZQ#<0?<JFDhf=Q($0YNd14esEmn$v50|*t*9)uNP~g#(UrC8>WoD#?F|1p7#I(Q
zwmf3`|DPjRkBO}~b#p2cTX`x+Sr-EX1H&x_1_rLR42-Nyd~D_aQx%KKN*Nd#w7C9*
zOk;SYz`)JJ#Kgo>&X>x;QB<a(Rh$a4fq~;c6I(goe+DL1#+FBG!7@zxYz+TXmF*3J
a^*UG>IE$Fr&he#!v~Y0lU?}=u#s~nxQ!$YM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191
new file mode 100644
index 0000000000000000000000000000000000000000..bbb533ad418cd57828f3a6f22c6a1488bbd963d4
GIT binary patch
literal 216
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51Xtdv2J
zL5u4@$T)^a3Jlx~JWNa=h0dv|#YId<K#oY|;3z87(E887z}WIAk%55`B3M*rul4^o
x!~P=1M=c!xVPYCuO!;gK3=IEMmDjQ`aB^_&uwQE!tk=QV@@OpsXAuVj0{|?$IcER>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04
new file mode 100644
index 0000000000000000000000000000000000000000..c7f3acdb613339434bde57adef11c5795b182953
GIT binary patch
literal 220
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKlM3BQCTSi
zBZC&#e~@_$j}#cV8F-jj7#J8BL8_foQ;Un3j(}W}%E3`orlIwpfq}8*Q6d8)M69UH
zUhDsFhW$m1k6JkX!^AYSnDp5g7#RMiDz9Z>;N;-kVZYWOSg(Vz<<VLO&LR#51_1qR
BIsgCw

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c
new file mode 100644
index 0000000000000000000000000000000000000000..8eb262bf1f5b879e7d35cad84137d42fae077f2d
GIT binary patch
literal 47
zcmZS5XJh!Es%&3j5ZtTRQN+Y{hA*|KOhb#Itmr=j17pi02F4afhDU1|m>3usJQx5=
C(hS@H

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1
new file mode 100644
index 0000000000000000000000000000000000000000..63ab35265ca79f8fe6b3a5f001426d480b33f5c1
GIT binary patch
literal 170
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziEUq5YLNy5<D)BU71h-l
zn~Pf78UAxHFdhnRdBpVpKS!`06I*fW=2RxO@>GtpE(R#zTFb!5%EZT3{y&wYsH~KM
zkwJ^=Kgc|WM+ywwJWQ-0b*ZVvMNCH$85kJ%7co9+;rP$QR?Y`fuf?RV!N$PA@IO`A
Meyu^UUPloF0RQ1EVgLXD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152
new file mode 100644
index 0000000000000000000000000000000000000000..92b98108771151feeb92425971f3a01ba6e1dc13
GIT binary patch
literal 124
zcmZQ#D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik;=qog(6p$`k%3gfr+i0FIAnRs7yoa
zKLZ0}%OfU+M@(g@YgrgLwTd_x85mps{byoe;9xA`P+)k}vj0CLLsbz21LIn-5W}Mu
O1_nlkM{5~47#ILJt|1Np

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449
new file mode 100644
index 0000000000000000000000000000000000000000..51c7569fe399555059df5a5ad25f5c7e29feeca0
GIT binary patch
literal 225
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbkpZF$7>|362t9ur$?@#a(}w(?YtvMz=q1~A}S%fM*G%EZT}S^huu
zIY&`hDFY*e7T14}i42bv7`PdDm{`Cn8MPP~oKsVai<piuv6b_sa&Q!tX=wdtV6bj^
zl*qsc5i2UQ*ZTjPVSf?hqZW?;Ffk1+rk89C3=IEMmDjQ`aB^_&uwQEstk%KU@@Ops
JXAuVj0|57rJM91f

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063
new file mode 100644
index 0000000000000000000000000000000000000000..d873e144b0eeefaa64383c5070a60e6b097bf5b0
GIT binary patch
literal 220
zcmZQ#E9c`#v{$obV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWNbbg$&NAsl`Q1M?elq<=`kP)6n|Qz`)q@D3O7I5h7SrX0P@C
yH^crS#z!q2|6yVpT1@$D3=9naQ<c}UFmQ5k?yz5L7_8U9*z#yC17{Hj0|Nk`b2(E0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51
new file mode 100644
index 0000000000000000000000000000000000000000..1cb1a80bc2f9b5682c427368f4d44bc88326951c
GIT binary patch
literal 220
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKlM3BQCTSi
zBZC&#e~@_$j}#cV8F-jjz$zIT7@Sj6i;I|!fLxNw!BJGEq4l4EfwARLA_F5ttf<Uh
z>;G?t{Y8wAS~&j0#5A;+Ua~PTF#JzdUdzJ3$-%k9eyu^UUI$~#qqPj2MH~za02BW@
Ax&QzG

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb b/test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb
new file mode 100644
index 0000000000000000000000000000000000000000..b293fcd023be1253d772d13aaf99bdbfa0b0df0d
GIT binary patch
literal 226
zcmZQ#E9c`#v{$obV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwTO{{@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3a$XTWay<R3^6aRF1MP1}NZK%fQIW#K%_tKb51Xtdx;~
zL5u4@$T)^a3Jlx~JWNasj0_A6|NsC057yzFnp#}MbOhv_R1S`!G7YW&3=E7dj}jRe
z7$Jg1W%gSCe>3baVoYk`_zx4)&|=DG0~wU6yq1N5lY?`I{aV9dy$;5fM{5~4i#Qk<
E0JW?<wEzGB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8
new file mode 100644
index 0000000000000000000000000000000000000000..53daab295e7e7cc3bc6e696d2f009398257bca0c
GIT binary patch
literal 220
zcmZQ#E9c`#wO6xc;wraKEh=N;Q($0YNd14esEmn$v50|*t*9)uNP>a!(UrA|uhkig
zTG|=@b1*O-3T=7B^#4CcupSdzYVqb&rXmIg2Db84j<PNWDBxPlz{twP$5#G7m7}Pv
zl!1{!i|aqgNQOrW4BQMnOpFZb3=Gbxsl`Q1M?mgK<=`kP)6n|Qz`)q@D3O7I5h7Sr
zX0P@CH^crS#z!q2|6yVpT1;K~Yzzzx|5KIMvM_LRaPF{QYY?p0!PxR>Edyr}2Ll5D
D12#G`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0
new file mode 100644
index 0000000000000000000000000000000000000000..27e46446d86935c6f8e09f520b152a07132ce079
GIT binary patch
literal 25
gcmZQ#E9c`#<<KZ9)6n|Qz`*!uEeiuD2PdNy07qd3O#lD@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8
new file mode 100644
index 0000000000000000000000000000000000000000..e464d03f46bb1ada6459ba2e3368693cb07cb1a0
GIT binary patch
literal 217
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#1zc-U++H$Q)=<%R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWL>U>I}}Qsl`Q1M?kJf<=`kP)6n|Qz`)q@D3O7I5h7SrX0P@C
yH^crS#z!q2|6yVpT1@$D3=9naQ<c}UFmQ5k?yz5L7_8U9*z#yC17{Hj0|Nj~bUAzg

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36
new file mode 100644
index 0000000000000000000000000000000000000000..dd7b2dde17ea69f0dce54634eefa91c409b134db
GIT binary patch
literal 217
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#1zc-U++H$Q)=<%R3^6aRF1MP1}NZK%fQIW#K%_tKb51XtdxO~
zL5u4@$T)^a3Jlx~JWMPM3=HZF&Z()zMNCIPu1MwJC@Ry?`p>|?*zzcmfq@YsSX5@O
z_5U}+{vyUlEgb)0Vj5aZ`D_df4F6M=*Rn8ha&YdjUuzhw*TLBGXe|S05eEYU08jKe
AfB*mh

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6
new file mode 100644
index 0000000000000000000000000000000000000000..6c2c0e32a872ddf152a9658098246ea01553751b
GIT binary patch
literal 221
zcmZQ#E9c`#wO6xcV&f{ePd!*v#>A(<z{ZgJ|87wk69Z!r0~1?OS!$641LLDBYZYIs
zGZwY9GyLaZU_2Ds@`&mGe~w^1Cbrb#&8bX`45=JtT?|mbwU&XAm5Gn7{C_G(QCTSi
zgBI6+#v+EfObm|{7`PdDm>3xt80IrLr=}JcF&zOpBb9@rs7yoaKLZ0}%cDdF21bZr
zQJKBg|KAMzix?lZaQugfX=pL&voSC*{QUp_|9|DREDW3+oIC8-8V2iiFt$8e%fMO0
H!N33j3D!O*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1
new file mode 100644
index 0000000000000000000000000000000000000000..63ab35265ca79f8fe6b3a5f001426d480b33f5c1
GIT binary patch
literal 170
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72ziEUq5YLNy5<D)BU71h-l
zn~Pf78UAxHFdhnRdBpVpKS!`06I*fW=2RxO@>GtpE(R#zTFb!5%EZT3{y&wYsH~KM
zkwJ^=Kgc|WM+ywwJWQ-0b*ZVvMNCH$85kJ%7co9+;rP$QR?Y`fuf?RV!N$PA@IO`A
Meyu^UUPloF0RQ1EVgLXD

literal 0
HcmV?d00001

-- 
GitLab


From fd7001008ea32317aa38f75443536f19c66dff61 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 15:23:50 -0700
Subject: [PATCH 141/525] Expand corpus

---
 .../7d6713afac17551fc2628c0f9f18c41a1aa9c2f1      | Bin 0 -> 381 bytes
 .../a2ac5153026b26fcbea42786e238b15017a684be      | Bin 0 -> 224 bytes
 .../ab013aca29d6027d443e9dc0c550a26e7a23f01d      | Bin 0 -> 224 bytes
 .../b61f6be57dd30d8c76aae7b966ffee26093f49ea      | Bin 0 -> 296 bytes
 .../c004d2a6d36524db9e0c18c5df6170366dd2b6f1      | Bin 0 -> 171 bytes
 .../d1ade96319d9de82cf3b0480d226a5ad9f31eaa1      | Bin 0 -> 249 bytes
 6 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1
new file mode 100644
index 0000000000000000000000000000000000000000..450fc23c9b4b89e4181657df22d887f0265d97c3
GIT binary patch
literal 381
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVS~#SsdXO6Mp_Oa0GS
z#K6P}vPK<j&wmC+uz^erT925@Qva{L&%jy4!N|ba^6x*ys<kW(oE%IH3>=I_910AN
zTK20mf}F{bYOiL?#Ku*gY7a7Bfq{)7_5a<XGA0I)4QwC}X)rK8y0TVLU7fM0rJdnF
z2Lt1w(3VF`|Nny=$X1-X8RWiHj<PNWDBxPlz{m>oMp-EXBZC$f*ue~s6d1U9n3x$D
zQd5hIn2sbeFfi^fVtmvB4>E=-h9U+A#<d<`cQQO`;bdT7WO%d|6j*B+paIIkz`?)(
P4%W4xaAlaxP{aTLsC;Gs

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be b/test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be
new file mode 100644
index 0000000000000000000000000000000000000000..2730045296701668f52ab0e81879798bf969144c
GIT binary patch
literal 224
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1_lNu1~A}S%fQIW#K%_tU-P+U
zQCTSiBZC&#e+4E6h9bsC4BQMnOiT=H3=9m6Al1&Psl`Q1M?kJg<=`kP)6n|Qz`)q@
zD3O5?B34vpul4^o!~P=1M=c!xVPYCuO!^=*{--LhWntjt;M`%q)*x7~gR$k&S_aM{
H4h9AQVtzU6

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d
new file mode 100644
index 0000000000000000000000000000000000000000..f18a8569cd5cd80974b5874d8b6dcd344dcad573
GIT binary patch
literal 224
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1_lNu1||ju1_rLR42-Nyd~D_a
zHJ@u1m6b9uGH7xA2bsw5NP&Tyfrp8OfsKKIff1zGIW@Joi0KH(HK`mNMP(XV{}~t<
zTOK7cFhazN%IvlN|7O@<#Q3O%<3CJHLyJitWXAtg<+UsfoE)4x?AICu>vb@;JX*`Z
JS;WD>003pxIqv`f

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea b/test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea
new file mode 100644
index 0000000000000000000000000000000000000000..04ae4ab8e785bef9057a9680a5391b4c1967068b
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aF%&U?0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN0#?bW1)>;R9<60z;B-z+EiPg@g6s<h2J4nbi42Sov7$12t^dCn_7^ce
wYT@_~6VuRQddbGX!0<m+8Dt6v=MMX|2El3_j4hAY7}hdy7I83ea5C%w03ljV1^@s6

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1
new file mode 100644
index 0000000000000000000000000000000000000000..5cc30a39a97449389829f7be5caaef6d00c083bb
GIT binary patch
literal 171
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdyIn~}ESg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVS~#SsdXO6Mp_Oa0GS
z#K6P}vPK<j&wmC+uz^erT925@Qva{L&%jy4!N|ba^6&qD1_lAfmPcz@7&tkCnHcmK
GI2Zv$k1ziK

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1
new file mode 100644
index 0000000000000000000000000000000000000000..89ecdbc8405f5834dda888ad5507a633cdba515e
GIT binary patch
literal 249
zcmZQ#E9Xn);3z87(E88B#K2b0$B}BUX3NCJRc@bJRK~=oz`(|k`u}cG8509z5d#xj
zQCVt{1OwxvD{B>Bt1}k0v@`tYU|>8H+VY6$|9_5PJtnr);?1c{Y~`sOWnBzK3}C>u
zmVwcVm5Gl{v;2SRbB?02QU*o_Ew29{6B!;UFmN;QFtLDDGHQV+#+FBGSr|B-Q&WqJ
zn2sR3k%7Uw<xwI7BSfsI%wFsNZ-)IvjE`D4{=>vHw3uG9F)%RvPgMq)!oj)2eyu^U
RS_jBf2F@Z51`bY!9RRWyLJ|M~

literal 0
HcmV?d00001

-- 
GitLab


From 3ecf26d67e4e52200cb79293fb9120313baad23f Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 15:25:03 -0700
Subject: [PATCH 142/525] Fail if fuzzer takes > 2 minutes

---
 templates/tools/fuzzer/runners.template       |   2 +-
 tools/fuzzer/runners/api_fuzzer.sh            |   2 +-
 tools/fuzzer/runners/client_fuzzer.sh         |   2 +-
 .../runners/hpack_parser_fuzzer_test.sh       |   2 +-
 tools/fuzzer/runners/http_fuzzer_test.sh      |   2 +-
 tools/fuzzer/runners/json_fuzzer_test.sh      |   2 +-
 .../runners/nanopb_fuzzer_response_test.sh    |   2 +-
 .../runners/nanopb_fuzzer_serverlist_test.sh  |   2 +-
 tools/fuzzer/runners/server_fuzzer.sh         |   2 +-
 tools/fuzzer/runners/uri_fuzzer_test.sh       |   2 +-
 tools/run_tests/tests.json                    | 132 ++++++++++++++++++
 11 files changed, 142 insertions(+), 10 deletions(-)

diff --git a/templates/tools/fuzzer/runners.template b/templates/tools/fuzzer/runners.template
index 358d4315c2..e84a89a180 100644
--- a/templates/tools/fuzzer/runners.template
+++ b/templates/tools/fuzzer/runners.template
@@ -35,7 +35,7 @@ template: |
   # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   #
 
-  flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=${selected.maxlen}"
+  flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=${selected.maxlen} -timeout=120"
   
   %if selected.get('dict'):
   flags="$flags -dict=${selected.dict}"
diff --git a/tools/fuzzer/runners/api_fuzzer.sh b/tools/fuzzer/runners/api_fuzzer.sh
index 64f2d0a54a..3521489470 100644
--- a/tools/fuzzer/runners/api_fuzzer.sh
+++ b/tools/fuzzer/runners/api_fuzzer.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
 
 
 if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/client_fuzzer.sh b/tools/fuzzer/runners/client_fuzzer.sh
index 39bdbc8d8a..df03e2705c 100644
--- a/tools/fuzzer/runners/client_fuzzer.sh
+++ b/tools/fuzzer/runners/client_fuzzer.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
 
 flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
 
diff --git a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh
index 0cc468eeb7..e49c082835 100644
--- a/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh
+++ b/tools/fuzzer/runners/hpack_parser_fuzzer_test.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512 -timeout=120"
 
 flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
 
diff --git a/tools/fuzzer/runners/http_fuzzer_test.sh b/tools/fuzzer/runners/http_fuzzer_test.sh
index a86d765509..d8dde1491e 100644
--- a/tools/fuzzer/runners/http_fuzzer_test.sh
+++ b/tools/fuzzer/runners/http_fuzzer_test.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
 
 
 if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/json_fuzzer_test.sh b/tools/fuzzer/runners/json_fuzzer_test.sh
index 9d38ed8d55..9eaef87e4e 100644
--- a/tools/fuzzer/runners/json_fuzzer_test.sh
+++ b/tools/fuzzer/runners/json_fuzzer_test.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512 -timeout=120"
 
 
 if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh b/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh
index b55d23b165..9db425bdcf 100644
--- a/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh
+++ b/tools/fuzzer/runners/nanopb_fuzzer_response_test.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128 -timeout=120"
 
 
 if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh b/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh
index a75aad6f36..33cfe67221 100644
--- a/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh
+++ b/tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128 -timeout=120"
 
 
 if [ "$jobs" != "1" ]
diff --git a/tools/fuzzer/runners/server_fuzzer.sh b/tools/fuzzer/runners/server_fuzzer.sh
index 9d1d9dc17d..337307a4d2 100644
--- a/tools/fuzzer/runners/server_fuzzer.sh
+++ b/tools/fuzzer/runners/server_fuzzer.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
 
 flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
 
diff --git a/tools/fuzzer/runners/uri_fuzzer_test.sh b/tools/fuzzer/runners/uri_fuzzer_test.sh
index 8890a2b86a..84d63bf414 100644
--- a/tools/fuzzer/runners/uri_fuzzer_test.sh
+++ b/tools/fuzzer/runners/uri_fuzzer_test.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 
-flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
+flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128 -timeout=120"
 
 
 if [ "$jobs" != "1" ]
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 643fe5d919..d7ec841303 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -25662,6 +25662,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
@@ -26212,6 +26234,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
@@ -26344,6 +26388,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
@@ -26454,6 +26520,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
@@ -26740,6 +26828,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
@@ -27048,6 +27158,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
-- 
GitLab


From 470f15b35753d71d6db700b56b5a86e9b19fde35 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 15:59:20 -0700
Subject: [PATCH 143/525] Fix hanging call bug

---
 .../2748d28f2e03d740a89f7a50ea52450d0c5523f1      | Bin 0 -> 225 bytes
 .../2aee21e4d1175963fa719d376406bb10d4818bdd      | Bin 0 -> 229 bytes
 .../307a91e344b94923837e01a1657ff277f44db07d      | Bin 0 -> 244 bytes
 .../3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9      | Bin 0 -> 225 bytes
 .../5000fa3e29de15e7533b0e04b37eb1985ae69891      | Bin 0 -> 297 bytes
 .../7d88455cc77259c8bf17c1cdc0b24edf5667c79c      | Bin 0 -> 462 bytes
 ...crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499 | Bin 0 -> 524 bytes
 .../dad2c9af972d2e21c4437f0d94fdeacd7c8c7641      | Bin 0 -> 295 bytes
 .../ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad      | Bin 0 -> 296 bytes
 ...meout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499 | Bin 0 -> 524 bytes
 10 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1
new file mode 100644
index 0000000000000000000000000000000000000000..cbe1656720ac8c1aa68158dbf875655fc05dfce7
GIT binary patch
literal 225
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1_lNu1~A}S%fQIW#K%_tU-P+U
zQCTSiBZC&#e+4E6h9bsC4BQMnOl%Bn3=9m6Al1&Psl`Q1M?kL8Oy%GxD$CIN&%nUg
z@+gsk5hR$(QB-EH_5U}+{vyUlEgb)0Vj5aZ`XEF8rz)>yVc_K8++n}gAXu-1vE|WP
K2F@Z51_l78SUOk$

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd b/test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd
new file mode 100644
index 0000000000000000000000000000000000000000..92989f733b951c7e40f84c9812f93d273f573338
GIT binary patch
literal 229
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1_lNu1~A}S%fQIW#K%_tU-P+U
zQQ5!$r3{P=T3r7Xm>3v}7#}fkGw?7mF)%T(F)%PNf^;~irWO}59RayWGnIp*s4PS4
zKLZ0}%cDdFMv!1CM^Tx**8krO`->PKwQ&50iD_st>4OaUpQ^l;g@KcUbBFy}gJ8W5
O#+FBG890kL7#IK*4?I%<

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d b/test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d
new file mode 100644
index 0000000000000000000000000000000000000000..53366729f5c2fc7cb6a2140f36cd1e69de473677
GIT binary patch
literal 244
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)f<iR~O;DoB*!e;Fea8<R3a
zszQ2EL9$+QYF=?^F#`ib%OeIxMutaBY~^biI5`;BGNf7+l`-+LmH$uWC}QFW)&twY
zk;=r@l*$o`kSa_4&sf9&wpJZ%?|%kH1_s8KM@$Tln95TBuf5N}S;WD}z}WKd|9`N=
zS{4RQ4kiX}2F4-|1%^j0Obm<+RSZQ842)|%7&sV<I2a!BwQw?U6qVWkXDm`+1i6gi
V(OQt1YZ(|gIMy<7Fid7(005yFLec;L

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9
new file mode 100644
index 0000000000000000000000000000000000000000..b4a080c9326043a4ab003feef896f19c17342f45
GIT binary patch
literal 225
zcmZQ#E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lf
zi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1_lNu1~A}S%fQIW#K%_tU-P+U
zQCTSiBZC&#e+4E6h9bsC4BQMnOiT=H3=9m6Al1&Psl`Q1M?kL8Oy%GxD$CIN&%nUg
z@+gsk5hR$(QB-EH_5U}+{vyUlEgb)0Vj5aZ`XEF8rz)>yVc_K8++n}gAXu-1vE|WP
K2F@Z51_l76#5z;}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891
new file mode 100644
index 0000000000000000000000000000000000000000..9e84699089c042fd83963ee87d1c43ec43035e6d
GIT binary patch
literal 297
zcmZQ7E-FhcV&M4C#Kcz4m&(CWRHmWzpNWZqt(=b|)n3h(iH)n=KDDTfiBExnjUn~_
z-J&uk2F4-=CN_{p2?oYTSHK#J$}~VqQ|(ceu2p=k&REpa&hVduf$>l%17ndElYYx1
zrvLvrg7ui#Qj0gIGO?AXa+GyB6fuAR*IEWfD^?~xHqG+?sn0oz%1Rj+8ML_mgREqD
zq`<(<z{AACzyearz`(!=q8VErtz}{0bWTkzE@C=@><<P8>y}4}42%%5qB47}|Gydb
z7co9+;rP$=669ZycbQ%?Ffg$FPgMq)!oj)2eyu^US_fmxBQ}P$44g$A3>=&cI{;O9
BPM!b&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c b/test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c
new file mode 100644
index 0000000000000000000000000000000000000000..a2c9a09f7c8220fa716ac1a7911a5fb0b1aebaaa
GIT binary patch
literal 462
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_Bb7NpWXwWy4V
zPl17rA@%>=qB151#v%qLHjqXM2F6EMz#5CnG(bvI?NODkReY_^Sk%(a@SlT$@lYrO
zW04k<e#;}K|Nl9H^_bXFi#Mk-v6ZKClyxx_F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#
zw7C9*>|}VPz`)JG!^8qs$*2XQ7+W5#WntiSPE9Q?VmgBC3kC-3mPd&Uj1aM+GKMlH
zKCopVC$g3QPvt0L0=ohf2pkZ1Af(EyQ=xV;m4R7|Ees3{9E?RA3Ji~082&RdFcyJ=
z1Y`^}NEjFxTh@Y=Fg#*=3JM<$2F6F6YZ(wh@Tld{T81tLE(QjM7Dk3gj0_BG88{d?
zW-&0>YyJPtu)m1$Q47a^n2R;Em|n6mFfja2RR;NygL8-dT7zJ<4#t*8Yz%7|IEy$K
JI5-)0004Z=crpM0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499
new file mode 100644
index 0000000000000000000000000000000000000000..8475e63da141bd9caaa3aff0098b47da886863b8
GIT binary patch
literal 524
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&&c~iNq}`W8za_
zU}H%Af48WNiGi_*fr$-djsyeaqbq9_U#l|~wX`$*=U`ww6x#BL>HmL@U_B<b)Z)z`
zgHk!lx)>N3m>8HC7#JA1)-o`%GV!sM|JQu3SyWcaz{sG*^&ey+!y^R-ZU!DE76vv3
z1_nluV&~M<;v%LaAlJa0%D}+b@+gsk5h7MpX0P@CH^crS#z!q2|C#W*6YSrjG7XRq
zQ|(ceqWOV=v1pAJlRj3jI23_g2Jwg$$S0cR|5KlHpn3&nmll&g$TR;_mDjQ`aB^_&
zuwM)Hr9rS>2V={lwG5m^94ufH!9E5Fu`qB#JkG#?=5=e_UPsvYk_{5l49K<`1gn9p
OV`BhY$iTtLumb=XqKLQv

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641
new file mode 100644
index 0000000000000000000000000000000000000000..7a2002453bfba8d8cba3b250175f0dbe8ebe94d2
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@C=@><I=2>y}4}42%%5qB47}|Gydb7co9+
v;rI^|)6imi$;QCI@IO@<WC{o84*RtR!D=0hEsxk3)-rGwaWHUjGVA~V2FFeu

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad
new file mode 100644
index 0000000000000000000000000000000000000000..3a571ce4bbf672ad3bd14584967e1fe3fe36af5a
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbR*Q|R+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?>Z*tp75?NODkReY_^Sk%(a@SlT$@lYrOW04k<
ze#;}K|Nl9H^_bXFi#Mk-v6ZKClyxx_F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#w7C9*
z>|}VPz`)JG!^8qs$*2XQ7+W5#WntiSPE9Q?VmgBC3kC-3mPd&Uj1aM+GJCE6zZv!y
yF+OVH_zx4)&|-SY#=yYvKUEoI3J2#7`?UtaY8{L%kJuR2GH@1gFmP}(>;M2tN=_~S

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499
new file mode 100644
index 0000000000000000000000000000000000000000..8475e63da141bd9caaa3aff0098b47da886863b8
GIT binary patch
literal 524
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&&c~iNq}`W8za_
zU}H%Af48WNiGi_*fr$-djsyeaqbq9_U#l|~wX`$*=U`ww6x#BL>HmL@U_B<b)Z)z`
zgHk!lx)>N3m>8HC7#JA1)-o`%GV!sM|JQu3SyWcaz{sG*^&ey+!y^R-ZU!DE76vv3
z1_nluV&~M<;v%LaAlJa0%D}+b@+gsk5h7MpX0P@CH^crS#z!q2|C#W*6YSrjG7XRq
zQ|(ceqWOV=v1pAJlRj3jI23_g2Jwg$$S0cR|5KlHpn3&nmll&g$TR;_mDjQ`aB^_&
zuwM)Hr9rS>2V={lwG5m^94ufH!9E5Fu`qB#JkG#?=5=e_UPsvYk_{5l49K<`1gn9p
OV`BhY$iTtLumb=XqKLQv

literal 0
HcmV?d00001

-- 
GitLab


From 1cbf57613eb00ec8a1b3c146a5cdcd54bc1b7add Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 16:02:55 -0700
Subject: [PATCH 144/525] Fix hanging call bug

---
 src/core/lib/surface/call.c | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index b5df9f33c1..00b2b86f5c 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -142,22 +142,23 @@ struct grpc_call {
   gpr_mu mu;
 
   /* client or server call */
-  uint8_t is_client;
+  bool is_client;
   /* is the alarm set */
-  uint8_t have_alarm;
+  bool have_alarm;
   /** has grpc_call_destroy been called */
-  uint8_t destroy_called;
+  bool destroy_called;
   /** flag indicating that cancellation is inherited */
-  uint8_t cancellation_is_inherited;
+  bool cancellation_is_inherited;
   /** bitmask of live batches */
   uint8_t used_batches;
   /** which ops are in-flight */
-  uint8_t sent_initial_metadata;
-  uint8_t sending_message;
-  uint8_t sent_final_op;
-  uint8_t received_initial_metadata;
-  uint8_t receiving_message;
-  uint8_t received_final_op;
+  bool sent_initial_metadata;
+  bool sending_message;
+  bool sent_final_op;
+  bool received_initial_metadata;
+  bool receiving_message;
+  bool requested_final_op;
+  bool received_final_op;
 
   /* have we received initial metadata */
   bool has_initial_md_been_received;
@@ -1135,6 +1136,7 @@ static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp, bool success) {
         &call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
     grpc_metadata_batch_filter(md, recv_trailing_filter, call);
 
+    call->received_final_op = true;
     if (call->have_alarm) {
       grpc_timer_cancel(exec_ctx, &call->alarm);
     }
@@ -1379,11 +1381,11 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
           error = GRPC_CALL_ERROR_NOT_ON_SERVER;
           goto done_with_error;
         }
-        if (call->received_final_op) {
+        if (call->requested_final_op) {
           error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
           goto done_with_error;
         }
-        call->received_final_op = 1;
+        call->requested_final_op = 1;
         call->buffered_metadata[1] =
             op->data.recv_status_on_client.trailing_metadata;
         call->final_op.client.status = op->data.recv_status_on_client.status;
@@ -1406,11 +1408,11 @@ static grpc_call_error call_start_batch(grpc_exec_ctx *exec_ctx,
           error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
           goto done_with_error;
         }
-        if (call->received_final_op) {
+        if (call->requested_final_op) {
           error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
           goto done_with_error;
         }
-        call->received_final_op = 1;
+        call->requested_final_op = 1;
         call->final_op.server.cancelled =
             op->data.recv_close_on_server.cancelled;
         bctl->recv_final_op = 1;
@@ -1459,7 +1461,7 @@ done_with_error:
     call->receiving_message = 0;
   }
   if (bctl->recv_final_op) {
-    call->received_final_op = 0;
+    call->requested_final_op = 0;
   }
   gpr_mu_unlock(&call->mu);
   goto done;
-- 
GitLab


From 83a156491c75076754d15f67b143beda137ce472 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 22 Apr 2016 16:09:22 -0700
Subject: [PATCH 145/525] Expand corpus

---
 tools/run_tests/tests.json | 220 +++++++++++++++++++++++++++++++++++++
 1 file changed, 220 insertions(+)

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index d7ec841303..c1f2a568a0 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -24276,6 +24276,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
@@ -24364,6 +24386,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
@@ -24452,6 +24496,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
@@ -24760,6 +24826,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
@@ -24914,6 +25002,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
@@ -25684,6 +25794,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
@@ -27114,6 +27246,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
@@ -27400,6 +27554,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
@@ -27796,6 +27972,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
@@ -28126,6 +28324,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/001946397b463a3562c5951f6325069d8a3a2ded"
-- 
GitLab


From ffe7773e29f28bb97fea6b7ca66bc1a063a91ebc Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 22 Apr 2016 16:16:42 -0700
Subject: [PATCH 146/525] temporarily disable cpp_single_channel_troughput

---
 .../run_tests/performance/scenario_config.py  | 28 -------------------
 1 file changed, 28 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index c41093a97e..9cf488d04b 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -201,34 +201,6 @@ class CXXLanguage:
           'warmup_seconds': WARMUP_SECONDS,
           'benchmark_seconds': BENCHMARK_SECONDS
       }
-      yield {
-          'name': 'cpp_single_channel_throughput_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 1,
-          'client_config': {
-            'client_type': 'ASYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': DEEP,
-            'client_channels': 1,
-            'async_client_threads': 0,
-            'rpc_type': 'STREAMING',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': BIG_GENERIC_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'ASYNC_GENERIC_SERVER',
-            'security_params': secargs,
-            'core_limit': SINGLE_MACHINE_CORES/2,
-            'async_server_threads': 0,
-            'payload_config': BIG_GENERIC_PAYLOAD,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
       yield {
           'name': 'cpp_protobuf_async_streaming_ping_pong_%s'
                   % secstr,
-- 
GitLab


From 8b5a364551d7e1ce072dd78d8ded7d54913624d0 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 22 Apr 2016 16:19:52 -0700
Subject: [PATCH 147/525] regenerate tests.json

---
 tools/run_tests/tests.json | 52 --------------------------------------
 1 file changed, 52 deletions(-)

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index cbac102d6a..0610f35ccc 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -22996,32 +22996,6 @@
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure"
   }, 
-  {
-    "args": [
-      "--scenario_json", 
-      "'{\"name\": \"cpp_single_channel_throughput_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 65536, \"req_size\": 65536}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 65536, \"req_size\": 65536}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
-    ], 
-    "boringssl": true, 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix", 
-      "windows"
-    ], 
-    "cpu_cost": 1000.0, 
-    "defaults": "boringssl", 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c++", 
-    "name": "json_run_localhost", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "posix", 
-      "windows"
-    ], 
-    "shortname": "json_run_localhost:cpp_single_channel_throughput_secure"
-  }, 
   {
     "args": [
       "--scenario_json", 
@@ -23204,32 +23178,6 @@
     ], 
     "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure"
   }, 
-  {
-    "args": [
-      "--scenario_json", 
-      "'{\"name\": \"cpp_single_channel_throughput_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 65536, \"req_size\": 65536}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 65536, \"req_size\": 65536}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
-    ], 
-    "boringssl": true, 
-    "ci_platforms": [
-      "linux", 
-      "mac", 
-      "posix", 
-      "windows"
-    ], 
-    "cpu_cost": 1000.0, 
-    "defaults": "boringssl", 
-    "exclude_configs": [], 
-    "flaky": false, 
-    "language": "c++", 
-    "name": "json_run_localhost", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "posix", 
-      "windows"
-    ], 
-    "shortname": "json_run_localhost:cpp_single_channel_throughput_insecure"
-  }, 
   {
     "args": [
       "--scenario_json", 
-- 
GitLab


From fa8d5b3ef7fe6d571f93e35f8a0044723c58a73c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 22 Apr 2016 16:23:44 -0700
Subject: [PATCH 148/525] temporarily disable
 csharp_protobuf_async_streaming_qps_unconstrained

---
 .../run_tests/performance/scenario_config.py  | 26 -------------------
 1 file changed, 26 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index c41093a97e..d24b48ad9a 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -328,32 +328,6 @@ class CSharpLanguage:
 
   def scenarios(self):
     secargs = SECURE_SECARGS
-    yield {
-        'name': 'csharp_protobuf_async_streaming_qps_unconstrained',
-        'num_servers': 1,
-        'num_clients': 0,
-        'client_config': {
-          'client_type': 'ASYNC_CLIENT',
-          'security_params': secargs,
-          'outstanding_rpcs_per_channel': DEEP,
-          'client_channels': WIDE,
-          'async_client_threads': 0,
-          'rpc_type': 'STREAMING',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'ASYNC_SERVER',
-          'security_params': secargs,
-          'core_limit': 0,
-          'async_server_threads': 0,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS
-    }
     yield {
         'name': 'csharp_generic_async_streaming_ping_pong',
         'num_servers': 1,
-- 
GitLab


From 81159e5adcfd4bbbf5862e05f65344045ea5aea3 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Sat, 23 Apr 2016 00:42:03 +0200
Subject: [PATCH 149/525] Fixing examples.

---
 examples/cpp/helloworld/Makefile  | 2 +-
 examples/cpp/route_guide/Makefile | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/cpp/helloworld/Makefile b/examples/cpp/helloworld/Makefile
index 4b1867e292..470b83573e 100644
--- a/examples/cpp/helloworld/Makefile
+++ b/examples/cpp/helloworld/Makefile
@@ -32,7 +32,7 @@
 CXX = g++
 CPPFLAGS += -I/usr/local/include -pthread
 CXXFLAGS += -std=c++11
-LDFLAGS += -L/usr/local/lib -lgrpc++_unsecure -lgrpc -lprotobuf -lpthread -ldl
+LDFLAGS += -L/usr/local/lib `pkg-config --libs grpc++` -lprotobuf -lpthread -ldl
 PROTOC = protoc
 GRPC_CPP_PLUGIN = grpc_cpp_plugin
 GRPC_CPP_PLUGIN_PATH ?= `which $(GRPC_CPP_PLUGIN)`
diff --git a/examples/cpp/route_guide/Makefile b/examples/cpp/route_guide/Makefile
index 0fbb0a8929..11f2a00cc8 100644
--- a/examples/cpp/route_guide/Makefile
+++ b/examples/cpp/route_guide/Makefile
@@ -32,7 +32,7 @@
 CXX = g++
 CPPFLAGS += -I/usr/local/include -pthread
 CXXFLAGS += -std=c++11
-LDFLAGS += -L/usr/local/lib -lgrpc++_unsecure -lgrpc -lprotobuf -lpthread -ldl
+LDFLAGS += -L/usr/local/lib `pkg-config --libs grpc++` -lprotobuf -lpthread -ldl
 PROTOC = protoc
 GRPC_CPP_PLUGIN = grpc_cpp_plugin
 GRPC_CPP_PLUGIN_PATH ?= `which $(GRPC_CPP_PLUGIN)`
-- 
GitLab


From f5df6472b4028166ea1d51f15bb8ed1455fde472 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Sat, 23 Apr 2016 01:53:46 +0200
Subject: [PATCH 150/525] Refactor.

---
 src/core/lib/support/tmpfile_msys.c | 14 ++++++--------
 third_party/boringssl               |  2 +-
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/src/core/lib/support/tmpfile_msys.c b/src/core/lib/support/tmpfile_msys.c
index f0f803aa75..2fdc89a64f 100644
--- a/src/core/lib/support/tmpfile_msys.c
+++ b/src/core/lib/support/tmpfile_msys.c
@@ -57,15 +57,13 @@ FILE *gpr_tmpfile(const char *prefix, char **tmp_filename_out) {
   /* Generate a unique filename with our template + temporary path. */
   success = GetTempFileNameA(".", prefix, 0, tmp_filename);
   fprintf(stderr, "success = %d\n", success);
-  if (!success) goto end;
 
-  /* Open a file there. */
-  result = fopen(tmp_filename, "wb+");
-  fprintf(stderr, "result = %p\n", result);
-  if (result == NULL) goto end;
-
-end:
-  if (result && tmp_filename_out) {
+  if (success) {
+    /* Open a file there. */
+    result = fopen(tmp_filename, "wb+");
+    fprintf(stderr, "result = %p\n", result);
+  }
+  if (result != NULL && tmp_filename_out) {
     *tmp_filename_out = gpr_strdup(tmp_filename);
   }
 
diff --git a/third_party/boringssl b/third_party/boringssl
index 907ae62b9d..c880e42ba1 160000
--- a/third_party/boringssl
+++ b/third_party/boringssl
@@ -1 +1 @@
-Subproject commit 907ae62b9d81121cb86b604f83e6b811a43f7a87
+Subproject commit c880e42ba1c8032d4cdde2aba0541d8a9d9fa2e9
-- 
GitLab


From 0ede545127f28cee6e9c0882e27b79f939979755 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 12:21:45 -0700
Subject: [PATCH 151/525] Fix memory leak on disconnection

---
 src/core/ext/client_config/client_channel.c | 12 ++++++++----
 src/core/lib/iomgr/closure.c                |  6 ++++++
 src/core/lib/iomgr/closure.h                |  3 +++
 src/core/lib/iomgr/exec_ctx.h               |  2 ++
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/core/ext/client_config/client_channel.c b/src/core/ext/client_config/client_channel.c
index 93d54fdcfe..06365df587 100644
--- a/src/core/ext/client_config/client_channel.c
+++ b/src/core/ext/client_config/client_channel.c
@@ -205,7 +205,11 @@ static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg,
   gpr_mu_lock(&chand->mu_config);
   old_lb_policy = chand->lb_policy;
   chand->lb_policy = lb_policy;
-  if (lb_policy != NULL || chand->resolver == NULL /* disconnected */) {
+  if (lb_policy != NULL) {
+    grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures,
+                               NULL);
+  } else if (chand->resolver == NULL /* disconnected */) {
+    grpc_closure_list_fail_all(&chand->waiting_for_config_closures);
     grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures,
                                NULL);
   }
@@ -321,10 +325,10 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *arg,
 
 static void continue_picking(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   continue_picking_args *cpa = arg;
-  if (!success) {
-    grpc_exec_ctx_enqueue(exec_ctx, cpa->on_ready, false, NULL);
-  } else if (cpa->connected_subchannel == NULL) {
+  if (cpa->connected_subchannel == NULL) {
     /* cancelled, do nothing */
+  } else if (!success) {
+    grpc_exec_ctx_enqueue(exec_ctx, cpa->on_ready, false, NULL);
   } else if (cc_pick_subchannel(exec_ctx, cpa->elem, cpa->initial_metadata,
                                 cpa->initial_metadata_flags,
                                 cpa->connected_subchannel, cpa->on_ready)) {
diff --git a/src/core/lib/iomgr/closure.c b/src/core/lib/iomgr/closure.c
index d6f073fc9d..27793c32e4 100644
--- a/src/core/lib/iomgr/closure.c
+++ b/src/core/lib/iomgr/closure.c
@@ -54,6 +54,12 @@ void grpc_closure_list_add(grpc_closure_list *closure_list,
   closure_list->tail = closure;
 }
 
+void grpc_closure_list_fail_all(grpc_closure_list *list) {
+  for (grpc_closure *c = list->head; c != NULL; c = grpc_closure_next(c)) {
+    c->final_data &= ~(uintptr_t)1;
+  }
+}
+
 bool grpc_closure_list_empty(grpc_closure_list closure_list) {
   return closure_list.head == NULL;
 }
diff --git a/src/core/lib/iomgr/closure.h b/src/core/lib/iomgr/closure.h
index 8652b53a8b..fdc2daed9d 100644
--- a/src/core/lib/iomgr/closure.h
+++ b/src/core/lib/iomgr/closure.h
@@ -86,6 +86,9 @@ grpc_closure *grpc_closure_create(grpc_iomgr_cb_func cb, void *cb_arg);
 void grpc_closure_list_add(grpc_closure_list *list, grpc_closure *closure,
                            bool success);
 
+/** force all success bits in \a list to false */
+void grpc_closure_list_fail_all(grpc_closure_list *list);
+
 /** append all closures from \a src to \a dst and empty \a src. */
 void grpc_closure_list_move(grpc_closure_list *src, grpc_closure_list *dst);
 
diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h
index e09ef02400..976cc40347 100644
--- a/src/core/lib/iomgr/exec_ctx.h
+++ b/src/core/lib/iomgr/exec_ctx.h
@@ -92,6 +92,8 @@ void grpc_exec_ctx_enqueue_list(grpc_exec_ctx *exec_ctx,
                                 grpc_closure_list *list,
                                 grpc_workqueue *offload_target_or_null);
 
+void grpc_exec_ctx_global_init(void);
+
 void grpc_exec_ctx_global_init(void);
 void grpc_exec_ctx_global_shutdown(void);
 
-- 
GitLab


From 4b3ce7e964a07d3dd194785c7e7f2814d6c941d4 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 12:33:54 -0700
Subject: [PATCH 152/525] Expand corpora

---
 test/core/end2end/fuzzers/api_fuzzer.c        |    2 +-
 .../0f83cbec19c834f534f353f4fce20c0cd88231f5  |  Bin 0 -> 435 bytes
 .../110074f658208166d52897c9266fc46cbaa8af36  |  Bin 0 -> 422 bytes
 .../1ba08b63181066ffab948eb301a6a2363a81872d  |  Bin 0 -> 384 bytes
 .../1d458954e8174bbb5dd4d0053df47d6b7adf290a  |  Bin 0 -> 51 bytes
 .../224fa2e83fd8ecaa9059ad37a55238f74b8e0829  |  Bin 0 -> 194 bytes
 .../289cdf83f89f70a13e9078259f764a339617c827  |  Bin 0 -> 51 bytes
 .../299faa82b90ef12421d160148dfb6cd0077b57c0  |  Bin 0 -> 737 bytes
 .../2b230a7b55b17f2f8e89c4be73a662d781f7fb3c  |  Bin 0 -> 1476 bytes
 .../3d4d961511c1de95a81b129f2fe96390209de2e7  |  Bin 0 -> 415 bytes
 .../542c958c84d1e319b9ba23c52de2c4bca08a8dc7  |  Bin 0 -> 75 bytes
 .../662d81374a2c96f867ccd88a4295190827c45453  |  Bin 0 -> 51 bytes
 .../669256f857011c32f5757ec19b2e5b9a372f6c23  |  Bin 0 -> 51 bytes
 .../69be4179b28e408a0574935e893c6986bbca0de9  |  Bin 0 -> 51 bytes
 .../6b1698d096095d4035ce67a8680b52eada00cce2  |  Bin 0 -> 51 bytes
 .../74e6831be67485fb59b8e226fb8a48d88faf57d6  |  Bin 0 -> 415 bytes
 .../753efc088d6023ca113a12acc54015a22f7daf9f  |  Bin 0 -> 51 bytes
 .../829a1dc2bcb22a230df8aa20540def0e16864983  |  Bin 0 -> 51 bytes
 .../834527ef0bc1572c584938ca7fe5336961754708  |  Bin 0 -> 15 bytes
 .../83baaee9b46770d9eef0e161a6e52cda76e3b043  |  Bin 0 -> 51 bytes
 .../8dfc4e78007040009f37109f9ca928c31b3ebb49  |  Bin 0 -> 398 bytes
 .../9f2316ddcea948c947fbbf35ae87b767b8c1dc55  |  Bin 0 -> 51 bytes
 .../a502dbaf3c842bd86e9ae513e8782eb23c70ad7a  |  Bin 0 -> 51 bytes
 .../a6d4b6043d86c376e9b166d5ca395f3e099ae229  |  Bin 0 -> 51 bytes
 .../bd0bef14e73aa1073eb5acb6e4cc901c976335f5  |  Bin 0 -> 51 bytes
 .../be988fc0c00a8422020dea3dc72451b09e25e1ad  |  Bin 0 -> 353 bytes
 .../e18cab69ad5cc17c88f8b56ca9929ca8af3eed30  |  Bin 0 -> 52 bytes
 .../e30c4ef6423bd4d872792fbd6954ff8e47d31a97  |  Bin 0 -> 433 bytes
 .../f7812b2aca4d12ffbdac67bcacc41b34524de6cb  |  Bin 0 -> 52 bytes
 .../f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a  |  Bin 0 -> 51 bytes
 .../fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f  |  Bin 0 -> 51 bytes
 .../1421a8e9f045ac65a0f6938fae93fece1060c41d  |  Bin 0 -> 963 bytes
 .../84a3c6cf853ff318ae163231ce295171a59d5871  |  Bin 0 -> 1106 bytes
 .../a5b529754606b96a8c801615ac12a1f6ee5c3f54  |  Bin 0 -> 289 bytes
 .../aaafca90a7f59184f3d768a1d6f9093e8f737b8a  |  Bin 0 -> 287 bytes
 .../c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6  |  Bin 0 -> 213 bytes
 .../d8a1d141a9e3876b71c7decbe6e3affccf6de397  |  Bin 0 -> 286 bytes
 ...t-082763e16153cb6b8f3f5308cd060e822f475e5a |  Bin 0 -> 2047 bytes
 ...t-13501419f349b7855d2e94060bd08b28923d1f37 |  Bin 0 -> 2047 bytes
 ...t-14862768a1fe076896fd37e2543ddd23192a9e3c |  Bin 0 -> 2048 bytes
 ...t-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9 |  Bin 0 -> 2047 bytes
 ...t-68ed2d33c9d32f73343c097303c3d5a6a3467c83 |  Bin 0 -> 2048 bytes
 ...t-93cd6b3f9786ee107a0e2d135b40d13f96e652ed |  Bin 0 -> 2047 bytes
 ...t-c151762e5f37e233142059c1b269ce55434cf6a6 |  Bin 0 -> 2045 bytes
 tools/run_tests/tests.json                    | 1088 +++++++++++++++--
 45 files changed, 1018 insertions(+), 72 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index c1c5966801..b584addd6e 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -50,7 +50,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // logging
 
-static const bool squelch = true;
+static const bool squelch = !true;
 
 static void dont_log(gpr_log_func_args *args) {}
 
diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5
new file mode 100644
index 0000000000000000000000000000000000000000..38e4714fda2bf0a2bf7a2eb4b2c8610c9cb125ba
GIT binary patch
literal 435
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga1ZCJ`*-r#?|rYvsg=3n#)9
zGk_E~K-4lZAe-W+K2dAp)QJlxuGEAX?B~bCz`&rG%fT>lm11r#BO{1V1X+wQed5H4
z6BVa|oZ&aoPcc`MC0CJAaUw_!#Bm@eOq}SaIB}xihlzfEniKsdPMqjB(a+BhBm;Jw
zAH*J>^rC`f-IC1Q)cn$tw+vvHGB7ZxGcx4nDl(Y#gB%UTxw*NFxswzX{TLXgPTZ(C
zF;}u!vbdxuGr2^!q$n}3xFEl%M7KCKxwI&=q!Q#P1_ll`P|ztdDl&r1Si!)+AYgDG
z$(<9YgMIBcLw%y=M3B=aPW0oNm<SR?xOC!wSUCDI_%Zo0Fo69rafUiHLNp;U0v7f2
Gn+O09zlVwd

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36 b/test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36
new file mode 100644
index 0000000000000000000000000000000000000000..a64e5650721eae4a86c0df813532ac4c6b2eb3ee
GIT binary patch
literal 422
zcmZQzU|?hc5ey&_#9(A#WKhgiWb~UlaiZeHT*Zlge(DpoR!*F_a3VxR3nb*n#K6Fy
zn9IR1kx?->mk~@Tg0#SNXlhNI2r)pz&u^liVy-4jt|Fu2M35S|v6>Sn`YBGF==Wiw
zpP%MLzljqk`c3rn^YfdbK2dX`ABbRJU}4M#Ig24T7vd@ngsU`>okgOnCgOFK56D%D
zx%nInj5vJ<2@S=Ge0ZFn3v)FzEGGJa!x<FDxw(E^6B9u`1_c5rz$bzPK;DO7tBDi+
K{M`IN0R{lO*oIC3

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d b/test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d
new file mode 100644
index 0000000000000000000000000000000000000000..5b0a1b69747dc2429d2212b48eb349907c9d3182
GIT binary patch
literal 384
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^CoY@_Q_KKT
z+<-%^*2Jk37fxKM2{YKwkBNbSK{1zuVd5&q++0RR5TOXN7;G=t^obKEPE?!<a)#eT
zKgC>4mRv<f#fcy_5XXTOO`PbbIB}xihlzfEniKsdPMqjB(a+BhBm;JwAH*J>^rC`f
z-IC1Q)cn$tw+xcSB}JLZCAuX=iFw5Z`9&qV#i_}qMVTd)3}Aa07&zEKp`pmA$O!V!
z3I+xS0n__PR!^J`_K4pM^@*AjLAFht=*KlN5oG;Dumk-36en5>D=8)C=ar=9mFT8q
Y78m3fXO?8<=lNOr`GGOSoea?o0JboE4gdfE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a b/test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a
new file mode 100644
index 0000000000000000000000000000000000000000..5580d48988adb4a47850701833dadb6d45a32609
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm;7u<oNY+iwOU_Tp%u8oUugWZ7W?<l9$Og+YFfcN*gIHQC0PU9u
Aa{vGU

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829 b/test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829
new file mode 100644
index 0000000000000000000000000000000000000000..0b48765847776df4111220fb432fcb152d5e5916
GIT binary patch
literal 194
zcmZSRXJBApU||Q53=E76xw(qDii|8dnR(e0a}_80`KeFT)LJ=l;=+kjCr(s^2>CHF
zFfb_QaxhF}RLsp~1QUvWQzuS@NP~1toCsGv(N8f~lO<P?QE?(j4b%*+iJB89`YBGF
z==WiwpP%MLzljqk`c3rn^P8bQQFEdn$T^G*Am&6ru8D~tIfjWKX+J2i^7CV4@bmM_
GwFUrsw>(Y&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827 b/test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827
new file mode 100644
index 0000000000000000000000000000000000000000..9a4560c1585d7366e4ad51b65ba051635dd7f844
GIT binary patch
literal 51
xcmZQz&|+j^U|?Wm;7%_pNY*VbNh~QXW;6l`F)=eR@GxY9m>|r^4kEQy006fE21Wn?

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0 b/test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0
new file mode 100644
index 0000000000000000000000000000000000000000..7dc85b85bf62663ef91d5553635491921c2a9c64
GIT binary patch
literal 737
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^CoY@_Q_KKT
z+<>IE6=sT``b4dXQztH*xKa}?<j2Ioz@V7R!7!0gF*lbHOelgZ2HOiZed5H46BVa|
zoZ&aoPcc`MC0CJAaUw_!#Bm@+6DRs9PMqlXVWOX(=0v}V6DRsj^z-ur$$%Z_=Lfcj
zC%vd3S+^uJH#NVs<Shfk2L_(p#0uTC{G#&2qLgBg!$IC>$jwz`=m+@#gwvqTfrJZV
z?j%J;KL&=W6E`Ak2ir06KR5&+mV(_33p_t2KL&=s|NsA=p{@uH9R>zQMs|=*oeT^t
z%t{~@D14P63>HREn1HOt?dOTp!6E23Lw#ayuHp)m$nu-W3^I)o<PB5_^@*A*kz&e^
z0qinGXcQ`1=Q2*5>ZdVL-H(Amb0R44CQkI@nwSU*&57Xf1jVwSpW;MosMo;3x{rY|
zS5Yx{;zYlxjJcpdQDlf>P_zOCgd#{C!MKG)HJ-TD1lf)pznWSr;mO9&k7=TxAA=tV
YGx&i*L=)_oTt6#6KQIOb0?0L*0GOiTU;qFB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c b/test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c
new file mode 100644
index 0000000000000000000000000000000000000000..993dfb2f2dc7c0acc1e2b2ca190b18226086947e
GIT binary patch
literal 1476
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^CoY@_Q_KKT
z+<>IE6=sT``b4dXQztH*xKa}?<j2Ioz@V7R!7!0gF*lbHOelgZ2HOiZed5H46BVa|
zoZ&aoPcc`MC0CJAaUw_!#Bm@+6DRs9PMqlXVWOX(=0v}V6DRsj^z-ur$$%Z_=Lfcj
zC%vd3S+^uJH#NVs<Shfk2L_(p#0uTC{G#&2qLgBg!$IC>$jwz`=m+@#gwvqTfrJZV
z?j%J;KL&=W6E`Ak2ir06KR5&+mV(_33p_t2KL&=s|NsA=p{@uH9R>zQMs|=*oeT^t
z%t{Q*AT}t3l_3lkMo_4LEXVEZiPOPh=r==sVs5VDXw-p%kAacyQ3r}71_lPQBW?vs
zKJ%LhN(vBfph~Du)Le;_$^00=iAoWg`xLEn87EHl)0n94$H1UD5tQyHPW0oNm<Y-U
z6Tw*lltKOc6en6kQzbY@>|<ceRaDHKIMHt^V=gE?D>6heC|ZHiup&qu!E6c1r6}2w
zNFPm9_Zuoc0%tVEiJ(x?oH$VvR2)J4tq$U7g2ETM@X^#-2`|(9{Fo;C`7!u`FoPc`
avuc8aJJ-+3&ku~jIh+#hjF55;N&x_IT*A=+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7 b/test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7
new file mode 100644
index 0000000000000000000000000000000000000000..010625afbd2824074f59d1b1739133a94ae5eb77
GIT binary patch
literal 415
zcmZQz&|+j^U|?Wm;7u<oNY+iwOU_Tp%u8oUugWZ7W?<l9$Og+YFfcN*gIHQCKqN#9
zhy?K%85kK9a}^o=rcRuwI5AgoqMx7oM6Hz*CoY_b5b<MTU|>+p<zSe|sF<6}2qqLk
zI$#<!wI)u4=-2S`o9L&QtI3k9$f!6Gqy}!P=ERA9iW4XLeVFLyr#aDY;>3x56aD=B
z{AQ?6)ST!CA{ZE07$I)X&4oBh1K}u53S2c2ud94Ou2Rg+=U`yO={s0p@ZoWOF3i>7
GumAwDWPKO_

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7 b/test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7
new file mode 100644
index 0000000000000000000000000000000000000000..13f07aab5e78c1d591e97a9eb8b782959e526b34
GIT binary patch
literal 75
zcmZQz&|+j^U|?Wm;7%_pNY*VbNh~QXZZu@z1#?sLlJiqC^U^soQ&RIvGD|8!N|~4$
R7<d@6K}-;4WCxL2D*%#W4`cuU

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453 b/test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453
new file mode 100644
index 0000000000000000000000000000000000000000..8e3d1520f130970c4d5b801c3b0effc9be966ca6
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXtW;NzE(EEU9E*U}R(msnc2k
E04^U4QUCw|

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23 b/test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23
new file mode 100644
index 0000000000000000000000000000000000000000..266d9cb36d600ab80617da1089ebbf9cb218889e
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXtu@NzE(EEU9E*U}R(msnc2k
E04bOZ6#xJL

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9 b/test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9
new file mode 100644
index 0000000000000000000000000000000000000000..2a20634f17cec968420890f77ca1dc628606aa71
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXtZ<NzE(CEU9E*U}R(msnc2k
E04`AsQ~&?~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2 b/test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2
new file mode 100644
index 0000000000000000000000000000000000000000..4de55b21018223449b211bdfc27f758da8fc6ab9
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm;7u<oNY+iwOU_Tp%u8oUugVNyW?<l9$Og+YFfcN*gIHQC0P430
AQvd(}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6 b/test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6
new file mode 100644
index 0000000000000000000000000000000000000000..7347fab86111cc4e5197963c0905a05a2c5857ba
GIT binary patch
literal 415
zcmZQzU|?hc5e*D1jM*RtLvF5Ot|Ft~RE>#>6LS?O`uV9()YMuzapJ;>QzycN{FoRR
z7!-3k7$!0*=H@bj2}QrD6DPuTF#P+^s022Tfq|Pt8N%XDFDgjZEiOqcDJ^C+U_j=A
zY=j#RwegywbuQz?seT$0)%_S4(Cy#Hz?iG3IF&KiFBhzlg+Wn~A&NoK3glwNiHZ|J
z&c<*i*p<u-Fn>+dnm7@xTT#)^Z=#=Kt|m*aBBSC&kY5nqpE%JEWS*a5ZaxPC*t1{)
zY!=+dS`*;`#OL>6qMx7UM8An3oqm3Pelyf3YEA@&<iuQ9_(H>yfrWu#A~<-U5)=Kn
LCN7+q2sRA>Q0;w+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f b/test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f
new file mode 100644
index 0000000000000000000000000000000000000000..bbb34635a79a3534e5a1279d01d42be88325861d
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm;7u<oNY+iwOU_Tp%u8oaNlnX1EJ@{I$Og+YFfcN*gIHQC00eXi
AjsO4v

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983 b/test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983
new file mode 100644
index 0000000000000000000000000000000000000000..80de4dcd52be42e22248ca52bab8d81ebb2380e2
GIT binary patch
literal 51
xcmZQz&|+j^U|?Wm;7%_pNY*VbNh~QX7Bm70F)=eR@GxY9m>|r^4kEQy006kr237z7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708 b/test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708
new file mode 100644
index 0000000000000000000000000000000000000000..0cbead73fbadb562b4c3bf9f1ea0a39ab8ddfe44
GIT binary patch
literal 15
WcmdN?%zdoL$jFeNpPiZd|33gDc?Ht|

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043 b/test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043
new file mode 100644
index 0000000000000000000000000000000000000000..f24e8e88ce0a859eba6b6e6c5be044a0f37fec2f
GIT binary patch
literal 51
xcmZQz&|+j^U|?Wm;7%_pNY*VbNh~QXZZrf5F)=eR@GxY9m>|r^4kEQy006~h2E_mX

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49 b/test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49
new file mode 100644
index 0000000000000000000000000000000000000000..af1c15f70643530d9336f0e2b9b703de2165000d
GIT binary patch
literal 398
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^Co*tkrs)<X
z=B1}HKov7G;8MGABHUm<KPCnS2E|+shKY=dxw(vBLJ?#!*j}*d6DPu);WyDwF;|l%
zSCLV1B1jFyaUew#C;BN)oapyqqMx7UM8Am>C;CnF^Ya7AfE>5b4{Q%ldQm~LZb@ct
zYJO=+u0pOg<HV_c3=<XYCulOOPn@VR({CCh7P}!X!D{uy>0qb%%}}2RvR8eg=ERA9
zToV&P_D=-6z|T){qP3qN(?kYtu<gYqi6y1Qj0V<zehhvL3?N5>bc6KyS^4>aF~s2j
D@y&r8

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55 b/test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55
new file mode 100644
index 0000000000000000000000000000000000000000..7dfa020be4f365ddfb77dfecb36ad720717a433b
GIT binary patch
literal 51
xcmZQz&|+j^U|?Wm;7%_pNY*VbNh~QXW;6r|F)=eR@GxY9m>|r^4kEQy006e-21Nh>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a b/test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a
new file mode 100644
index 0000000000000000000000000000000000000000..df6884ffc95ae17cc4570617a2706a290886e999
GIT binary patch
literal 51
xcmZQz&|+j^U|?Wm;7%_pNY*VbNh~QXW>f$PF)=eR@GxY9m>|r^4kEQy006ZK1~dQw

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229 b/test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229
new file mode 100644
index 0000000000000000000000000000000000000000..8354defbf30372fd072c601c09035cf81d4b3ad9
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXo<@$xAKEEMa6|V5nqdXJBB|
GS^)qj@C+3I

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5
new file mode 100644
index 0000000000000000000000000000000000000000..f8315c28d5af88c50df9ea6d1d3f429eec34e7c2
GIT binary patch
literal 51
rcmZQz&|+j^U|?Wm;7%_pNOmhONh~QXW&i=OfG%8sk&zvwPHP1K{g(<h

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad b/test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad
new file mode 100644
index 0000000000000000000000000000000000000000..a615cb6e1a19677b98d3b766289db81c96d2ac95
GIT binary patch
literal 353
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAO9#n7q!}0(Sy({oKnw;;21bw+
z1Bm$hpMf(Q#K_H6%vEIco2oHUabm9GL_e9#l+?VE%#un521Z79KlO>4S}P|`TsU#+
zM5qEkKPCnS2E|+shKY=dxw(vBLeX#P#ED@2U>y@DPGn$UVax_=QS|eh=%<*g$&#zc
z*Z>j*S<8TKFIXP|n?M@1R)8!e);`6FAcui`hG0$f^HW!!s5x<>pCSn7=5sKB{QxEu
K{iZT7OauT%99-Q1

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30
new file mode 100644
index 0000000000000000000000000000000000000000..acce397e1c558f3d009042694d8dc4003aaf207e
GIT binary patch
literal 52
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOBcvYNzE(CEUDB<NlnX1)GA43
H)LH=mQkoBX

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97
new file mode 100644
index 0000000000000000000000000000000000000000..8abefd8d53b8ecca72a5af2dccf072ae95cf9c0c
GIT binary patch
literal 433
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^CoY@_Q_KKT
z+<-%^*2Jk37fxKM2{YKwkBNbSK{1zuVd5&q++0RR5TOXN7;G=t^obKEPE?!<a)#eT
zKgC>4mRv<f#fcy_5XXTOO`PbbIB}xihlzfEniKsdPMqjB(a+BhBm;JwAH*J>^rC`f
z-IC1Q)cn$tw+vvHg8a*no2$ss4{|aT=jP@z=1x*n^kZO{I&q`o#9YbZlA_Gy65W!b
z#Ju8y{Gt-w;?(5QqRf&?2C$PD7&zEK0jJ2Q$OtlH1p@<vfWdtvS5BM`_Oss%^@*Aj
tK@OWZ(T{6lB1jP7&WZnFq3Flp$K=Pr0QSYi8S2pJ(1gSXSk%vNA^?1WhdlrQ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb b/test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb
new file mode 100644
index 0000000000000000000000000000000000000000..828e42d5f834e9c52e9fee2bba0c04e1b5ca97ce
GIT binary patch
literal 52
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOBcvYNzE(CEUDB<Nlnv9)GA43
H)LH=mP?`@q

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a b/test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a
new file mode 100644
index 0000000000000000000000000000000000000000..82c6055949823a3c451e478faf5628260696d749
GIT binary patch
literal 51
xcmZQz&|+j^U|?Wm;7%_pNY*VbNh~QXW;6f^F)=eR@GxY9m>|r^4kEQy006eh21Eb=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f b/test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f
new file mode 100644
index 0000000000000000000000000000000000000000..3cf35b7713ff494be91373e53e72d3e10d917fff
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXtW;NzE(CEU9E*U}R(msnc2k
E04@OxPyhe`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d b/test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d
new file mode 100644
index 0000000000000000000000000000000000000000..ce7a5ed7884390e566ac205da72b394be8dc2573
GIT binary patch
literal 963
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-%m`vJ+T&Ep%)kPd18ZSm;D8GR
z=o>@K)j~Iz;Sj`N0amMm#F7jS{j~gi{iMVq0d}k6<c!qZRF;gAk^%vCtK8I*jQkXq
z0RP|+0WPb=(vpn)qRdLpoc!d(oQ(Y95&@p%{JfIXyb|4#%7RqRlGKV4{fv^_908H^
zqJm^3mmvEP;X#HA7=G7ag!%(SL0rke02X6raA08oi$I*Mo0y!OT2P{!nwOlPl9`t-
znwgTCSCUy$sgshLmXlbLs*_%oSs=hvlFCt1l$e>5T2w5+Ra%@{^zZ-w|GJ6ksd*(z
zNr@@C$vK&+c?>LRMftfn9L$C6Vz3JsAx_BP*Dp#<&nzxUElN!xJ^)K_hM+)VK|xMt
za$-qlex5!k2q6JUhF2Nr>b3;bXvo164Gatg$&9+m@Yq0)i4p~nzjc%K4fG6+^bBB8
z!pXwG5W>KSoL=+{6f|-&^GYi;86Xjh-6)2Sa?GH_#J~tOl7WFi&p?5Tmy3ZJmeUwG
hz|s1@fdOJ71Ec2u2Dlr*7UeN8K<r|Gn#RDu001Qr`dI(~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871 b/test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871
new file mode 100644
index 0000000000000000000000000000000000000000..d1779388920d08ef54fc31ae6111e8ded6d5ff12
GIT binary patch
literal 1106
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXL5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4IUQdyA7S&~{&qMuQcn<F5SUR02*o0y!OT2P{!nwOlPl9`t-nwgTCSCUy$
zsgshLmXlbLs*_%oSs=hvlFCt1l$e>5T2w5+Ra%@{q??$YnpdKfl$fHMoRgWFS3=lN
zObo>Oi3qcpA!gZwloB5VC6xuK0*M6$Iho0cC7Jno`k*kt5fZQffQJa)kN~*@8l{Ff
zqVx;I$*?Fz3OfamGjx;n4fG6+^bGV26f|-&^GYi;8SMXnQv)NIB$wa@n_gU!SW;Td
zXh6^uk}N|uo1n=U3W!S8ETB{jNzWJtpb2OxAVmYVoP{OJF~hSQnqdqK97v`aLn2iR
rEu*r5;}onDPmTr4BNL!3jLc^M`B8ueEmtQq<mWMfvNo>tfynXzI;PiC

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54 b/test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54
new file mode 100644
index 0000000000000000000000000000000000000000..9179e76ee46596fcc8bf1193702ada023539ef51
GIT binary patch
literal 289
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPb?B(
zw<=D~NX<=U$tWo)5MZ~;O)bgDPhko05B~T6|NjsHmW=%363(3b<is2hOMoXiKd&S;
zuSB<`vLID1v7jI)GdZy&Ge1v1y{I5ryCfsCSU0m+w=6LyGetlIB&M5~EU2WEoSIi$
zTCAItna5~UnWU?enOB*bmXecLlB$zlm02LbRFcY3Qk0mPlUh_Pz*SnDTBMtpo|;#p
zl$4mFo1BxGnpdI#HZ57-RL{^z&p^*WK_e$Kue3r_fG3@ifq|hUGdDHAw1nBvAU9Zm
M2dow<#AFl<0C475i~s-t

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a b/test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a
new file mode 100644
index 0000000000000000000000000000000000000000..315e850428a658f90b310617669c816ca9ca7b32
GIT binary patch
literal 287
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE@6PF
zVGallNfk&eD9Fi7PAtjH&(lvYDo7R(0g<|i$;qh&CAz73$@wXndFi5=DXDoSnI)Av
zDXD2Wi6yBz=~bBp0=!_gFhw$z`K7uk`FSO}*?IZpx*7T9x+VF#Dfzl38JWcbOeLut
zB}IvuIjKd(0$ioVsYSYp>8W`oN=b<+y2&}2sd*&|VB?bY4fG6+^bGV26f|-&^GYi;
E0g9Md$p8QV

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6 b/test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6
new file mode 100644
index 0000000000000000000000000000000000000000..3c47fb3add33f052cf600fc7216526bb74955c44
GIT binary patch
literal 213
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPb?B(
zw<=Cf%`M4bNzEuJ5MZ~;O)bgDPhk=85B~T6|NjsHmW=%363(3b<is2hOMoXiKd&S;
zuSB<`vLID1v7jI)GdZy&Ge1v1y{I5ryCfsCSU0m+w=6LylYxO7B&J(jl2}q&%xF-I
X+m&n}w=t9!>n3I9F$XY!eZv3%kBK=_

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397 b/test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397
new file mode 100644
index 0000000000000000000000000000000000000000..ba3b0cd95265b0d3d2a23cf4405fae21cc52b7d7
GIT binary patch
literal 286
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^z5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5%3{PfpAMu>^S1iwcr;b5o0p
z6Vp@W5(^4)GLsWaGV}BFK@!>}8JWepnZ>$gi8+}m0wN$W-NfYN)PfS-)V$>Ul+3(z
z(ae<8ypqh4N}ZI{w4B6}RGsvy%mM+Xl2ne8qQuOc)S_YmuF~SvBHhIF)Vva<q{I~6
y<ebdZyb=Ylamo4ydWJ@N26_ex8abJHr4^b`N0nserskKHFdG^Kqlz$@1_J;cTUU?(

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a
new file mode 100644
index 0000000000000000000000000000000000000000..561f98c9b2ac6f12bba3bf875be2b19db303437c
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^$d;l4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;3fB~nAcic}4w
J>PJ=x003`lOI82?

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37
new file mode 100644
index 0000000000000000000000000000000000000000..34906e8b5430da2e229210f76e54a8c4b29b2172
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;3fB~nAcic}4w
J>PJ=x003xCOH}{>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c
new file mode 100644
index 0000000000000000000000000000000000000000..c9f22b2be55121278cdd1fd08ef9dbc358545e7b
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;3fB~nAcic}4w
O>gg8(Vf3>Kw@m=xQA?`;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9
new file mode 100644
index 0000000000000000000000000000000000000000..9fe5d9e26a3c83dea0cfa4dbaddbed501b45a996
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`4FCTB|Ifg1l97dhfq_wg)v6$|B!fdg
zEk9pBDX~a^-Ksb_BQ-abC8MOIK!DvUH?<@qKZPa0KR85y%PO(7BqP5lv!s$UCqFqc
zCnLYOM1UtbKd&S;uSB<`vLIC;v7jI)GdZy&Ge1v1y{I5rKm<hUCMGAR7L@3w<|XH+
zWag!drlh9jB$lM=WTvF%m1LGw>ZDg?76>qvq;ixLC1&QN78MI{l@_NK=_aP9=9MTV
zC8p>m=VYell_-FXOV&5gGc?jO&@)ib$jQtrt<Yq!|HA+Rj38nZkA}c-41wU`=&4aZ
Qkr)D2B&r`(KEgr(0K~gbPyhe`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83
new file mode 100644
index 0000000000000000000000000000000000000000..a5ed8e903665c61e39f2eba9f382f7f59a1d60eb
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;3fB~nAcic}4w
M>W5$mNKxQs0J*zMZvX%Q

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed
new file mode 100644
index 0000000000000000000000000000000000000000..bb4bbbbb1ea16432acb7881f7e70976afade478a
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;naFIm&d-~l(+
NYQSAE>VQEV0st5`OOOBn

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6
new file mode 100644
index 0000000000000000000000000000000000000000..9d35a1b55478f3ec85068b7cd7a7bb0194498230
GIT binary patch
literal 2045
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBE*7#IY~%gc2^js%&SoLG_y_UtGz8Un*2
X1cHZ!FGf8<SqNBBrhQcR@D2e01SU~0

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index c1f2a568a0..ce2dd73341 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -28676,6 +28676,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0f98d7d56e9a99b97e5dc7eb122ef22e9684077b"
@@ -28742,6 +28764,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1160214cdb23e8fc187078a8d6796656c1ade925"
@@ -29028,6 +29072,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1c222dae4e2cde1fca9f9bf6226200f70d625342"
@@ -29116,6 +29182,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1dc86d0febe4adc5353230cea24b5f7cce829283"
@@ -29336,6 +29424,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/230527b90b0179139c961aca426187893191fdf2"
@@ -29490,6 +29600,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/28ee8cae75efa07da9649933a9482d00643b5395"
@@ -29534,6 +29666,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/29be7d33920998bae7329d77d4c81989eae91647"
@@ -29578,6 +29732,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2b71439e9ebf611a92386b9f21ad44bde7926184"
@@ -30150,6 +30326,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3da7577acd806e1d92d48211b22fd9db352fd834"
@@ -30634,6 +30832,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/5482dc4af170def9c183315efaa48f9c186926a1"
@@ -31164,7 +31384,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/6749752b02f7d14fff9ac35f6b68dd62f5b49fcd"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31186,7 +31406,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/685fbddd9ea612b25e325a50bd659997b4d77da1"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31208,7 +31428,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/69542ed81b00a5ec8daaf4e8d509201eecd502c5"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/6749752b02f7d14fff9ac35f6b68dd62f5b49fcd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31230,7 +31450,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/6bfd3679f4e30aaaa1808e96c980edcfa9cac1c0"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/685fbddd9ea612b25e325a50bd659997b4d77da1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31252,7 +31472,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/6e2796549e29e5066f780a5e926fd6e3bb362450"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/69542ed81b00a5ec8daaf4e8d509201eecd502c5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31274,7 +31494,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/6e71553967212dfea2c9995f3641e582d8c2105b"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31296,7 +31516,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/71106770243ccca03f5025aadb298ee3a825824b"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31318,7 +31538,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/717695057d76b81c344ed8c23cc024195caa9405"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/6bfd3679f4e30aaaa1808e96c980edcfa9cac1c0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31340,7 +31560,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/7353a7b2ea9f61325728b2f118416549e89dd79b"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/6e2796549e29e5066f780a5e926fd6e3bb362450"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31362,7 +31582,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/739228a1400cd69c47f110002c34dbe1661e8c41"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/6e71553967212dfea2c9995f3641e582d8c2105b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31384,7 +31604,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/7465a4955a064e8f1bb777d4b0de5b3df8469831"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/71106770243ccca03f5025aadb298ee3a825824b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31406,7 +31626,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/759a1e2e34cad14321a5e5790b1e6a783312fea1"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/717695057d76b81c344ed8c23cc024195caa9405"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31428,7 +31648,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/7885df741c88ca4b539798d9985c445f41cc2929"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7353a7b2ea9f61325728b2f118416549e89dd79b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31450,7 +31670,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/7af3156d286a32a6a6fede46d93ec12ded1ac138"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/739228a1400cd69c47f110002c34dbe1661e8c41"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31472,7 +31692,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/7af41e5391204f4596cb1461792e2e23f9390b7b"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7465a4955a064e8f1bb777d4b0de5b3df8469831"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31494,7 +31714,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/7c73c0671308e37a8075a20863e70e180ef8b6ea"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31516,7 +31736,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31538,7 +31758,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/80bd4827db81a1da28fae8c150f5e2d46651c598"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/759a1e2e34cad14321a5e5790b1e6a783312fea1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31560,7 +31780,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/813d2c34c0df8d4a918e68e58cf0ae3703d0d46f"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7885df741c88ca4b539798d9985c445f41cc2929"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31582,7 +31802,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/82c0e02a867a5fdfb805e01ebf1a008220311e27"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7af3156d286a32a6a6fede46d93ec12ded1ac138"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31604,7 +31824,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/831248cea079b629bf0ef6d9d02c159d6f8ed41b"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7af41e5391204f4596cb1461792e2e23f9390b7b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31626,7 +31846,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8382c249fc9c7a248833d89de554e63807c475f7"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7c73c0671308e37a8075a20863e70e180ef8b6ea"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31648,7 +31868,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/850c639595eae3cc9c2cfef473e28fd4e8174dc8"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31670,7 +31890,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/857ce08213a5106c746767352c6863d7bd134208"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/80bd4827db81a1da28fae8c150f5e2d46651c598"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31692,7 +31912,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/86eb156ff8ddd7edc535840d412342ada6f3b184"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/813d2c34c0df8d4a918e68e58cf0ae3703d0d46f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31714,7 +31934,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/871a2e4d73a7fbb50f71558517a2f704b7fdb868"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31736,7 +31956,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/87e97b460042d045629263ad10ff3de7b000f0a1"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/82c0e02a867a5fdfb805e01ebf1a008220311e27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31758,7 +31978,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8b8b9fcdfff1f891b1694614b7309cb4a2098f4b"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/831248cea079b629bf0ef6d9d02c159d6f8ed41b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31780,7 +32000,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8b8f6d58dff9ab0c37183ec93c9a600d5ba5d9e6"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31802,7 +32022,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8bacacba71bfa5c74fd74cb6577a49a7aec9cf1f"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8382c249fc9c7a248833d89de554e63807c475f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31824,7 +32044,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8c527bdf0f304a31866f71cdb298511041ecd320"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31846,7 +32066,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8d352ea63259e26e1bb61f5a8f78254be4e3e7b1"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/850c639595eae3cc9c2cfef473e28fd4e8174dc8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31868,7 +32088,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8ea624983d766ed45780378a3eec24eb2faeb229"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/857ce08213a5106c746767352c6863d7bd134208"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31890,7 +32110,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/90a9c3390752b94ca19a58cb2fe6267bc818f718"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/86eb156ff8ddd7edc535840d412342ada6f3b184"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31912,7 +32132,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9125277ed9ec5d59e51f3e1a8d97d25ef88a5d4f"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/871a2e4d73a7fbb50f71558517a2f704b7fdb868"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31934,7 +32154,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/91916df7c8f04d8c2b6b8f4aeaeee6972ce0de74"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/87e97b460042d045629263ad10ff3de7b000f0a1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31956,7 +32176,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/92cce6dc5c31acd62347b15d89d52ab94b507e0f"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8b8b9fcdfff1f891b1694614b7309cb4a2098f4b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31978,7 +32198,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/92ea0d3200665e1836ac12bed0837425cb9f43de"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8b8f6d58dff9ab0c37183ec93c9a600d5ba5d9e6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32000,7 +32220,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9329b80d0125cc994d7ad36540c7a8265d76983c"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8bacacba71bfa5c74fd74cb6577a49a7aec9cf1f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32022,7 +32242,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/94108ac8420347598c7cee743b2a158b1270fb8f"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8c527bdf0f304a31866f71cdb298511041ecd320"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32044,7 +32264,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/954ea72fdbeaf5b46d18c6d5bb77fc1a0f97569d"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8d352ea63259e26e1bb61f5a8f78254be4e3e7b1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32066,7 +32286,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9552c3f6304af40224b800f3a3a5df3887a530f6"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32088,7 +32308,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/96e5126447131d3d59cc6547f6b91d3433ce37c8"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8ea624983d766ed45780378a3eec24eb2faeb229"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32110,7 +32330,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/970fccda0b34b59ade44d52e1212699b4d2419a8"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/90a9c3390752b94ca19a58cb2fe6267bc818f718"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32132,7 +32352,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/97c4b73f72b248b4ebf4bf30892d0db828a85297"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9125277ed9ec5d59e51f3e1a8d97d25ef88a5d4f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32154,7 +32374,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/98da5edafac67704810f093b38c86e4c77b75349"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/91916df7c8f04d8c2b6b8f4aeaeee6972ce0de74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32176,7 +32396,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/98dddd3f679af150e9933bd864ae20e20b7aa25a"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/92cce6dc5c31acd62347b15d89d52ab94b507e0f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32198,7 +32418,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/999d0995c2f09beda8783eac95d7643a11d5c89a"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/92ea0d3200665e1836ac12bed0837425cb9f43de"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32220,7 +32440,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9a43f48d4f6219618f8cc9e876880fe81109ad72"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9329b80d0125cc994d7ad36540c7a8265d76983c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32242,7 +32462,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9a4da2a37a26c114e1226bfbe1cf80ec5ca99a66"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/94108ac8420347598c7cee743b2a158b1270fb8f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32264,7 +32484,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9abf980e8909aeb31936553ca22ccfd8680c4dab"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/954ea72fdbeaf5b46d18c6d5bb77fc1a0f97569d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32286,7 +32506,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9b1355c6e2c43ce83001bbead09a79852e04feef"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9552c3f6304af40224b800f3a3a5df3887a530f6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32308,7 +32528,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9b4d4ce0457f5300d6b4b309762acfdbc41e3965"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/96e5126447131d3d59cc6547f6b91d3433ce37c8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32330,7 +32550,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9bd059ff0a90e86ada1ba7e5b90ae04637ae9e90"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/970fccda0b34b59ade44d52e1212699b4d2419a8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32352,7 +32572,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9d2dd744ba59c1e8ec091e23938e46d1bb5ee519"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/97c4b73f72b248b4ebf4bf30892d0db828a85297"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32374,7 +32594,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9d362d2aaeee243a5b54621d8187c4b16f87c9f5"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/98da5edafac67704810f093b38c86e4c77b75349"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32396,7 +32616,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9d6947df24c9ebcbec72c568d9708d7b1ecae63c"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/98dddd3f679af150e9933bd864ae20e20b7aa25a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32418,7 +32638,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9dfdce1b090a559a14f9a5852f78547413b1d1ed"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/999d0995c2f09beda8783eac95d7643a11d5c89a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32440,7 +32660,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9e2ab07030bd35a4c31df32c79aca5e76c1d04f8"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9a43f48d4f6219618f8cc9e876880fe81109ad72"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32462,7 +32682,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9f0ab521c728be21e93112b2730c52bc1d6c0021"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9a4da2a37a26c114e1226bfbe1cf80ec5ca99a66"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32484,7 +32704,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/9fee3212240d4bccfdab3696dbbc579b06d39982"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9abf980e8909aeb31936553ca22ccfd8680c4dab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32506,7 +32726,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a30fc2605f4e74f7003f902ea4a4c994e3ce9bfd"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9b1355c6e2c43ce83001bbead09a79852e04feef"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32528,7 +32748,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a33e1b28074a41fc5c2611a67161ae5638a47dd5"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9b4d4ce0457f5300d6b4b309762acfdbc41e3965"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32550,7 +32770,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a3cd54d43d3b3bdfcf224d636dc11ce1b5ee4d30"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9bd059ff0a90e86ada1ba7e5b90ae04637ae9e90"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32572,7 +32792,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a4874327383ca168f9d9d59cffe327f61e9a6610"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9d2dd744ba59c1e8ec091e23938e46d1bb5ee519"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32594,7 +32814,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a6603e797695274d10bce000f66ca0a715f7d8c0"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9d362d2aaeee243a5b54621d8187c4b16f87c9f5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32616,7 +32836,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a706f2067bfbda7837eaad68972d60547e2957c3"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9d6947df24c9ebcbec72c568d9708d7b1ecae63c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32638,7 +32858,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a814c5743d492b96d2b402f9e819bf8406262224"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9dfdce1b090a559a14f9a5852f78547413b1d1ed"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32660,7 +32880,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a8e67676784506d2e6eab3a0dfa25e53a80b40a0"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9e2ab07030bd35a4c31df32c79aca5e76c1d04f8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -32682,7 +32902,293 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/a9d71e1ff2912d8874e38fc61cbd9a8ef28af4a9"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9f0ab521c728be21e93112b2730c52bc1d6c0021"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9fee3212240d4bccfdab3696dbbc579b06d39982"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a30fc2605f4e74f7003f902ea4a4c994e3ce9bfd"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a33e1b28074a41fc5c2611a67161ae5638a47dd5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a3cd54d43d3b3bdfcf224d636dc11ce1b5ee4d30"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a4874327383ca168f9d9d59cffe327f61e9a6610"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a6603e797695274d10bce000f66ca0a715f7d8c0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a706f2067bfbda7837eaad68972d60547e2957c3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a814c5743d492b96d2b402f9e819bf8406262224"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a8e67676784506d2e6eab3a0dfa25e53a80b40a0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a9d71e1ff2912d8874e38fc61cbd9a8ef28af4a9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -33186,6 +33692,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/be3237e72b3d8d56eec0520145dd7d1a5064eede"
@@ -33230,6 +33758,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c0deaead93c9b3f2fc211fb7f0711ac192715a40"
@@ -34220,6 +34770,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e1bd70aa5c802cd4462ff4833c09ed432ce4c9fa"
@@ -34286,6 +34858,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e3422e8f5d63a9ef180aab552353955c7aba90b0"
@@ -34902,6 +35496,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f8467d9574de94b9bb904f75a6a7e2405c36f105"
@@ -34946,6 +35562,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f91f76fa45a23adfed48a10ec9512cf16bfb6636"
@@ -35034,6 +35672,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fda07f0de15cac77ccc54ec221d81cdade189bfd"
@@ -59588,7 +60248,29 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/server_fuzzer_corpus/146b7d66ad932c4b623eec8004e286d3705697d3"
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/146b7d66ad932c4b623eec8004e286d3705697d3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -62974,6 +63656,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/86a19d13cc65790696299c819cac17b14e337647"
@@ -63766,6 +64470,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a5cc3762cb2b2cac316c60ddee794016057fb4ff"
@@ -63986,6 +64712,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ad810f7f.bin"
@@ -64602,6 +65350,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c559f565.bin"
@@ -65130,6 +65900,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d9074e68.bin"
@@ -66098,6 +66890,94 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1b6c4b5c1949adae3efd5e3264bb32a40eea524e"
@@ -66208,6 +67088,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6e980a9d12c392175b5f66683e608626ae983276"
@@ -66274,6 +67176,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9a176b6f7e0dc5f681a1788d8954f76fabd08cad"
@@ -66384,6 +67308,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3c3cba3897fafec97665411ea1f94a89bb4de7b"
-- 
GitLab


From af4063ba911cc7867b4ca776a8f0b60835b6818b Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 12:35:12 -0700
Subject: [PATCH 153/525] Expand corpus

---
 .../0f2831e0f73521a0991e11115c16847afca16bb3  | Bin 0 -> 211 bytes
 .../2e21a2f9bff2514667aaec75629c82daa067ff57  | Bin 0 -> 228 bytes
 .../30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f  | Bin 0 -> 328 bytes
 .../6ded157ecd3fce79fa69c51ee9ecb4639013e6ba  | Bin 0 -> 328 bytes
 .../b96fd7809c6f18c465e834a96dd60b43b32fac73  | Bin 0 -> 463 bytes
 ...h-bac7a77b50e53ff71b0f52ce635e64ac15a787dc | Bin 0 -> 381 bytes
 tools/run_tests/tests.json                    | 132 ++++++++++++++++++
 7 files changed, 132 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3
new file mode 100644
index 0000000000000000000000000000000000000000..50e9c191250e639927ef4df768847134ba060b3f
GIT binary patch
literal 211
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+ObiShj71y@43Aov7#JCr
iGZZl}Fs}6g3o<-v;bdT7WO%d|<gT?03>+K`lNkVh&pBcM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57
new file mode 100644
index 0000000000000000000000000000000000000000..771749c9ba5e1f9cb6ffedf317817d70fc8bda1c
GIT binary patch
literal 228
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbna|NsC0(3VF`|Nj>=rLu7Z>uo-q%EVTl%2C$EP{aTRTx%H^S(*6Q
z%KxW6=O`*GWng5`;`$FVl;M#A12+!?4-+F;AtM8Wvk*gZ5z`SSwsO8y4vwNS4XytS
z42&(05*Zko*vd;&If}~cwf_HR*k8o>sD<M{6I(eyNK8YE=_MNj1H=DR<+UsfoE)4x
V?AICut93B8JX*`ZS;WD>006U5Kb`;p

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f b/test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f
new file mode 100644
index 0000000000000000000000000000000000000000..7dcc2a77fa1fc42de4cc2363558dc0d5a8647107
GIT binary patch
literal 328
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmyym|BNk<
z7#Ld^86GjQm9J&s<X~9KkZM&_#>B@~{y&wYh>0Uu4{RhyDid3IDn}?nsx0+CV-W+`
z7Im;S{}~t=7#Ld~F)=)1Dog#p_C5n=6$c{&W6Qt){}~vVK~lObOl(XLr|5SSF+p^L
zH8YekGBGf)Ft#wUah0cP6_r`@DKM~soKVKZz*xlah~fW#usflS^k86OOD$sH<X~c8
z;9xA`P+)k}vj0CLLlr|20|Vn)4+aj#ha3!#S~wXP7#SX|1zEn9fq{d8gJCj5S!$66
hNPu%KgF0hTOFP4V4hF_YEsxeRbTM#&Ji#%G0RVZ3T5|vZ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba b/test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba
new file mode 100644
index 0000000000000000000000000000000000000000..106fdb8ea7aa26ebd664cee886f064d00b805b3a
GIT binary patch
literal 328
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmyym|BNk<
z7#Ld^86GjQm9J&s<X~9KkZM&_#>B@~{y&wYh>0Uu4{RhyDic$ADn}?nsx0+CV-W+`
z7Im;S{}~t=7#Ld~F)=)1Dog#p_C5n=6$c{&W6Qt){}~vVK~lObOl(XLr|5SSF+p^L
zH8YekGBGf)Ft#wUah0cP6_r`@DKM~soKVKZz*xlah~fW#usflS^k86OOD$sH<X~c8
z;9xA`P+)k}vj0CLLlr|20|Vn)4+aj#ha3!#S~wXP7#SX|1zEn9fq{d8gJCj5S!$66
hNPu%KgF0hTOFP4V4hF_YEsxeRbTM#&Ji#%G0RVN>T5kXV

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73
new file mode 100644
index 0000000000000000000000000000000000000000..3f2fcf27d0df8c90a4d2742c331c08afd9ca393e
GIT binary patch
literal 463
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_Bb7NpWXwWy4V
zPl17rA@%>=qB151#v%qLHjqXM2F6EMz#5CnG(bvI?NODkReY_^Sk%(a@SlT$@lYrO
zW04k<e#;}K|Nl9H^_bXFi#Mk-v6ZKClyxx_F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#
zw7C8=7BMg~FflMQFmN;QFtLEuGHQV+#+FBGSr|B-Q&WqJn2sR(gMq=i<xwI7BSfsI
zjG>H)4{ROCk!<DvQ#p#5!0rGA0|&$<2&ppbRFJJq43C(~u7OyLEes3{9E?RA3Ji~0
z82&RdFcyIV1!N2~P#72(Th@Y=Fg#*=3JM_&2F6F6YZ(xM@Tld{T81tLE(QjM7Dk3g
zj0_BG88{d?W-&0>YyJPtu)m1$Q47a^n2R--Ua~PTF#Jzd26>T#bBFy}gJ87|#+FBH
Q3~L!Ui#QlKI2m>T0Gy_GdjJ3c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc
new file mode 100644
index 0000000000000000000000000000000000000000..c8c2ffde996fba6c778dc5499ea1948df3737fe2
GIT binary patch
literal 381
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdS)!5!3Sg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~G4Zh}TBULnF>wUzfsN!yWnwE&<p>2!mH!7Bocf=!
zhyiSiI@p^342)p&m>3>0m8Je)d!K=`ii44XvE|=?h()?AOl(a5Q<d#agY`R#nA9Pf
z!Fn0W7?~ItSQuNF*tp75wTjBD`4kw~Sitr$F)$V}JYx9&AM8%3BRv?H*iwraI60UY
z7&sV<I20Hjwe0`T$WX;l#K6F~)&nfa@Ti58fq{|X(OQr{*D^40FmNzTW++Q7(f|o?
zt_8WCBh_Bb7G$k`D#&vR3~UUk|L+!+fvsg?D`HS*ENW?I_|L(>_^9R4T81tLE(S)1
Vw+tM!Kn6)LFh07nR`E4h5dfFiW|9B^

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index ce2dd73341..99c7f5bcfb 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23880,6 +23880,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e"
@@ -24474,6 +24496,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
@@ -24518,6 +24562,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
@@ -25486,6 +25552,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
@@ -26740,6 +26828,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
@@ -27246,6 +27356,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
-- 
GitLab


From b12d22affae7b50c7d5a816a4bb682b57359164a Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 12:50:21 -0700
Subject: [PATCH 154/525] Fix memory leak

---
 src/core/ext/client_config/client_channel.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/core/ext/client_config/client_channel.c b/src/core/ext/client_config/client_channel.c
index 06365df587..095952df57 100644
--- a/src/core/ext/client_config/client_channel.c
+++ b/src/core/ext/client_config/client_channel.c
@@ -297,6 +297,10 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
     grpc_resolver_shutdown(exec_ctx, chand->resolver);
     GRPC_RESOLVER_UNREF(exec_ctx, chand->resolver, "channel");
     chand->resolver = NULL;
+    if (!chand->started_resolving) {
+      grpc_closure_list_fail_all(&chand->waiting_for_config_closures);
+      grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures, NULL);
+    }
     if (chand->lb_policy != NULL) {
       grpc_pollset_set_del_pollset_set(exec_ctx,
                                        chand->lb_policy->interested_parties,
-- 
GitLab


From 42fe4cd9449079e7b6eadb3a2640c840c2a0cf82 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 12:50:46 -0700
Subject: [PATCH 155/525] Enable squelch

---
 test/core/end2end/fuzzers/api_fuzzer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index b584addd6e..c1c5966801 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -50,7 +50,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 // logging
 
-static const bool squelch = !true;
+static const bool squelch = true;
 
 static void dont_log(gpr_log_func_args *args) {}
 
-- 
GitLab


From 0eab6975dc0a8dc2020ce19470050ef7ad94ad7d Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 12:59:57 -0700
Subject: [PATCH 156/525] Fix locking bug

---
 src/core/ext/client_config/client_channel.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/core/ext/client_config/client_channel.c b/src/core/ext/client_config/client_channel.c
index 095952df57..94041c14d0 100644
--- a/src/core/ext/client_config/client_channel.c
+++ b/src/core/ext/client_config/client_channel.c
@@ -389,14 +389,18 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
                        &chand->incoming_configuration,
                        &chand->on_config_changed);
   }
-  cpa = gpr_malloc(sizeof(*cpa));
-  cpa->initial_metadata = initial_metadata;
-  cpa->initial_metadata_flags = initial_metadata_flags;
-  cpa->connected_subchannel = connected_subchannel;
-  cpa->on_ready = on_ready;
-  cpa->elem = elem;
-  grpc_closure_init(&cpa->closure, continue_picking, cpa);
-  grpc_closure_list_add(&chand->waiting_for_config_closures, &cpa->closure, 1);
+  if (chand->resolver != NULL) {
+    cpa = gpr_malloc(sizeof(*cpa));
+    cpa->initial_metadata = initial_metadata;
+    cpa->initial_metadata_flags = initial_metadata_flags;
+    cpa->connected_subchannel = connected_subchannel;
+    cpa->on_ready = on_ready;
+    cpa->elem = elem;
+    grpc_closure_init(&cpa->closure, continue_picking, cpa);
+    grpc_closure_list_add(&chand->waiting_for_config_closures, &cpa->closure, 1);
+  } else {
+    grpc_exec_ctx_enqueue(exec_ctx, on_ready, false, NULL);
+  }
   gpr_mu_unlock(&chand->mu_config);
   return 0;
 }
-- 
GitLab


From e8bb40d152884b37591f5b1db62ec6fdde093638 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 13:16:25 -0700
Subject: [PATCH 157/525] Expand corpus

---
 .../98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d  | Bin 0 -> 297 bytes
 .../c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098  | Bin 0 -> 296 bytes
 .../ce02561c4cfd1ec7e272cf81678149350f8a066c  | Bin 0 -> 318 bytes
 .../d48a5cefe695d0494df4540ea395dcdd90a332ef  | Bin 0 -> 326 bytes
 .../f1a6421ddd077ba6971eee7ba1084ed66fd1bee3  | Bin 0 -> 317 bytes
 .../fa99f1f9be3384be1229657b26374545228c2318  | Bin 0 -> 163 bytes
 tools/run_tests/tests.json                    | 132 ++++++++++++++++++
 7 files changed, 132 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d b/test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d
new file mode 100644
index 0000000000000000000000000000000000000000..aa53a2211907816e7e6565679a1acf9f003c37f2
GIT binary patch
literal 297
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~!obkZ@SlT$@lYrOW04k<
ze#;}K|Nl9H^_bXFi#Mk-v6ZKClyx~2F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#w7C9*
zY-M<)z`)JG!^8qs$p|7DTOO@tVc>L5O)V~BI)dyC1_tYvM~MuK5V4{%d#(S!rS=yw
xK5F6k4-?bSVtUEOz`*c7RT*Ro2j>p^wT8iJ9gHoH*cjF_a29beaBwp0002c0PB#Dm

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098
new file mode 100644
index 0000000000000000000000000000000000000000..91351626f572f4aca5586d4b1fa2269922613676
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fsKzN)n3h(iH)n=KDDTfiBExnjUn~_
z-J&uk2F4-=CN_{h2?oYTSHSv;$}~VqQ|;kO?}L=CReY_^Sk%J6(9ZCmgMsl-C<9}W
z7L$I<Bc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<
z{)22~c%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@C=@><b14>y}4}42%%5qB47}|G%a7
z7co9+;rI^|)6imi$;QCI@IO@<WC{o84*Ru+!D=0hEsxk3)-rGwaWHUjGVA~VruR*t

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c b/test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c
new file mode 100644
index 0000000000000000000000000000000000000000..3c0ba41cc5038eb9703c1e51c241b4832628cc1d
GIT binary patch
literal 318
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3IkMP;Q7
zjAi!!8H*USxIiQm!y^R-ZU!DE7O-*##+FBG88{djSQx-e76#52sj0<9Oh+KDfq0F9
z!Mf#9A_F5ttf<Uh>;G@5{Y8wA1X?)$!vr<7m|n6mFfja2RbI=&z{$b6!+xz{uv!OW
S%Of_1wG5m^91I+s3_AcCsZ^{0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef b/test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef
new file mode 100644
index 0000000000000000000000000000000000000000..e1236715a19d2954f43be8de9737ab600ddefc99
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmyym|BNk<
z7#Ld^86GjQm9J&s<X~9KkZM&_#>B@~{y&wYh>0Uu4{RhyDid3IDn}?nsx0+CV-W+`
z7Im;S{}~t=7#Ld~F)=)1Dog#p_C5n=6$c{&W6Qt)|G^TvEKF=n5Qpe@6fr^cg0(V~
zF)}eQurRhTv2m5BY891P^C>W}fgDiA#K2g@@QC66f3Pc|PV``4VoNPz;N)OpVBlb6
z<4|CD)Uy9SBSRHK5d#C`S`P*e#)ljXk6Jhx7#JBItp&MiEdv7w0|&!ohO*Qm4Uhom
eS_XB-qLy}s{~QdAk6IqBW$0qy0(pUB76SnGP+9~4

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3
new file mode 100644
index 0000000000000000000000000000000000000000..aef73bbb9cdf6bb42870045a36548eaa2b9eea62
GIT binary patch
literal 317
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAYN+D(yA#|)&e67w{)WX2f&hVduf$>l%
z17ndElYYx1rvLvrg7ui#Qj0gIGO?AXa+GyB6fuAS*IEWfD^?~xHqG+?sn0oz%1Rj+
z%k2L%7BOgXfk-BXM+yww3_MIMVC4*qEsxeRa4>>6ASMd~=Zn<T;v%La5Z6F_#=v0R
z@+gsk5h7MpX0P@Cx77Y3#zz7z9RFd08d^***%%lY{--LhWntjt;M`%q)-YJDgR$ii
Q8^c-#&LR#54o-$00PqD=n*aa+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318
new file mode 100644
index 0000000000000000000000000000000000000000..6a5edea17dce92bdf9e4d2c0cacc8d367dd321a4
GIT binary patch
literal 163
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~eR-S5ARK~=|R{lSgqlk$kSP!g>BNZgW5sHv1
zOa0GS!~oW*4%Yggfq}8*5fj5Brn1!kYgrgLi#Qk=7+e1Rhe&`#IG7k1I2emK6c`@0
j?ElZmP{mNhz`(c`EXMGtg_D7i;n7-<DQg)x7(fUB2U;yl

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 99c7f5bcfb..2fafbe682b 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -26278,6 +26278,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
@@ -27158,6 +27180,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
@@ -27224,6 +27268,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
@@ -27576,6 +27642,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
@@ -28170,6 +28258,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
@@ -28390,6 +28500,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
-- 
GitLab


From c2c0f53e4eb7fe8906df55d984fdb36dc58b649f Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 13:30:33 -0700
Subject: [PATCH 158/525] Expand corpus

---
 .../0302b90625ac9f61f45b45d043fda23b5472d711  | Bin 0 -> 318 bytes
 .../0e2a9ad3aacba320563095a874768a9e546a3db2  | Bin 0 -> 297 bytes
 .../119410315423e5f37919886ced7f03235e5792aa  | Bin 0 -> 296 bytes
 .../12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4  | Bin 0 -> 295 bytes
 .../16d52016278caebf92ba455f7ac8a8c7482c3563  | Bin 0 -> 296 bytes
 .../1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f  | Bin 0 -> 295 bytes
 .../2b931953e9bd02c3310a05234e91550bcd8ddf62  | Bin 0 -> 230 bytes
 .../2d9440daa210b9298f34982dcf7adc3564ad965c  | Bin 0 -> 172 bytes
 .../32b9de8461fd32b1236abb86abc91c82652d6e2c  | Bin 0 -> 200 bytes
 .../342d148e59fb500ad76d583cf828c16cd3d3ed2e  | Bin 0 -> 625 bytes
 .../3850b085a0a33fa2a08630dddb03e0f1adb1bee9  | Bin 0 -> 318 bytes
 .../3df06a68edfc53fa88634c657a50cc6820354165  | Bin 0 -> 213 bytes
 .../42324d3d9e013cd43d4feeed1b48fbe1ea18a732  | Bin 0 -> 317 bytes
 .../4905b3fb0f7d2196a5612e8e432abda666e4317d  | Bin 0 -> 320 bytes
 .../51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0  | Bin 0 -> 462 bytes
 .../53e68cd362f3c8d64941efbb0b527c52da5e8424  | Bin 0 -> 210 bytes
 .../6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f  | Bin 0 -> 319 bytes
 .../7de73ddcb20d0940b937323599a5094bfb26ae6c  | Bin 0 -> 244 bytes
 .../8ff5277cdbe1417da64bfdb342747a23f5e4f956  | Bin 0 -> 513 bytes
 .../92273cf09f18534ae700c1f35dfab49faa091c54  | Bin 0 -> 296 bytes
 .../9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19  | Bin 0 -> 211 bytes
 .../a3026496fa01a4cae2682da4b3e7cfae09929698  | Bin 0 -> 462 bytes
 .../b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e  | Bin 0 -> 338 bytes
 .../b5daec8e0821e8626c9b93ece56ccfef0511346b  | Bin 0 -> 329 bytes
 .../b8a74cc440fbfaa2a523f20ca964976bde128fd0  | Bin 0 -> 317 bytes
 .../bc5e743f85f6632110277f09847381a402e1624c  | Bin 0 -> 211 bytes
 .../ca6add6699d063e2212335264ad3e004327afc1a  | Bin 0 -> 319 bytes
 .../d290717010121ba2745e551e7a80be6e9f6d59e2  | Bin 0 -> 318 bytes
 .../e75fa90650f1d67ff9849024e88a91300690778c  | Bin 0 -> 321 bytes
 .../efa80ac7daa93de08fc91bdf2a912269a3f2396a  | Bin 0 -> 321 bytes
 .../fc0cb8a6287528bfbe1e43d452fc40a180c221f2  | Bin 0 -> 232 bytes
 .../ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79  | Bin 0 -> 246 bytes
 tools/run_tests/tests.json                    | 908 ++++++++++++++++--
 33 files changed, 806 insertions(+), 102 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711
new file mode 100644
index 0000000000000000000000000000000000000000..40440812570ec1804bf080bd6d7617352336ec21
GIT binary patch
literal 318
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3IkMP;Q7
zjAi!!8H*USxIiQm!y^R-ZU!DE7O-*##+FBG88{djSQx-e76#52sj0<9Oh+KDfq0F9
z!Mf#9A_F5ttf<Uh>;G@5{Y8wA1X?)$!vr<7m|n6mFfja2RbI=&z{$b6!+xznuv!OW
S%Of_1wG5m^91I+s3_AcCmQ<?%

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2
new file mode 100644
index 0000000000000000000000000000000000000000..b8e356f50d0c96d12473834186e67002eb0fb44c
GIT binary patch
literal 297
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<b!{67;D0~;Sls=b;m6B}2#eQHq|6Q2SD8$;^<
zyG3P842(q#Ol%;15)6!wu4sTY7KLem)TY|Q)!qlGU90$7ow2BefuWt@KL-Qjp-=|K
zA}uEUmPbtg|8oTEF|nl<Z%$=mD^KMp>vAY!00XYI42)K+Onhvb<^NNka}<@8GB7e|
zas3Bb%kW5nft!Jci3O~Z5kxY!JX*`b!0DWtT3p0*1mO*>{|pS)Esqiz7$IUsW%gSC
ze@pEzVtmxX@gF9pp~du)je&vTf2uOb6b{ZE_G=A;)jAkk9<ed3W#BC0VBp|n*Z}~H
CR!(IA

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa b/test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa
new file mode 100644
index 0000000000000000000000000000000000000000..38d3368c2821fae4e1b40e9b485868124f8b0700
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMsF)tCO$UJ^8cyNIf}|k85kL~xc-AI
zWq72(z|FwJ!~#~z2qGC<9<60z;B-z+EiPg@g6s<h2J4nbi42Sov7$12t^dCn_7^ce
wYT@_~6VuRQddbGX!0<m+8Dt6v=MMX|2El3_j4hAY7}hdy7I83ea5C%w09r#%X8-^I

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4
new file mode 100644
index 0000000000000000000000000000000000000000..f12e8587fbd9a40d6deb714f996b468ce6f4cac9
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC`rQj0gIGO?AXa+GyB6fuAS*IEWfD^?~xHqG+?sn0oz%1Rj+8ML_mgREqD
zq`<(<z{A7>R>=q=8CxE$WntiSPE9Q?VmgBGgSys#1_tYvM~MuK5W%7{d#(S!8TJ=3
xK5F6k4-?bSVtUEOz`*c7RT*Rq2j>p^wFbdz9gHoH*cjF_a29beaBwp0001QXPC)<w

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563 b/test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563
new file mode 100644
index 0000000000000000000000000000000000000000..68cd7d51a8d511a38f8c0b7b17d2e3b0f0944fea
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fsKzN)n3h(iH)n=KDDTfiBExnjUn~_
z-J&uk2F4-=CN_{h2?oYTSHSv;$}~VqQ|;kO?}L=CReY_^Sk%J6(9ZCmgMsl-C<9}W
z7L$I<Bc}iVIfC_=*iwr(r!ujXr*f2axfC&g0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<
z{)22~c%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@C=@><b14YZit?21bZjQJKBg|KC#k
zix?lZaQugfX=pLMWMg1p_@Al_GKGV4hy7ZkV6_g$mPc$1YZ*9;I2brM8Fl~wM$Ak@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f
new file mode 100644
index 0000000000000000000000000000000000000000..22ff0e3ca30b6e499631c1242f69773f394a7af7
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qv=|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@C=@><I=2>y}4}42%%5qB47}|Gydb7co9+
v;rI^|)6imi$;QCI@IO@<WC{o84*RtR!D=0hEsxk3)-rGwaWHUjGVA~V20cz2

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62
new file mode 100644
index 0000000000000000000000000000000000000000..e6b03b9a8f2931e88bf83dd1ee33486393ffe6ec
GIT binary patch
literal 230
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbna|NsC0(3VF`|Nj>=rLu7Z>uo-q%EVTl%2C$EP{aTRTx%H^S(*6Q
z%KxW6=O`*GWng5`;`$FVl;M#A12+$Y2tN-KBUmXT1B0^=Lvaz)5hk{BzElp5qB0Gw
z{|pR_Esqiz7@640OH(<D%IvlN|7O@<#Q3O%<3AHyIX_5DLyPGp8v_Hw|5W9*EDW3+
XoIC8-8U(9#Ft$8e%fMO0!N33j3;936

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c
new file mode 100644
index 0000000000000000000000000000000000000000..4d2752ce467bd3edcf596047f60d50604ddb6e39
GIT binary patch
literal 172
zcmZQ7PAw`+En?vKe};*zoG+E5s7ynPNuQ13zjCU*L9kv&5fj@vzEqGXLs`*(1_s8K
zM+}TDj0}&M*vi*3aB?uLWk|IuDr4efEB~L$QN+X%tOqueBbAA*+=?R<DwWPrl$QFR
zv50|*(=D7YRUK^4e+EIYflLfqkC@6*|F6Bzz*)q>$iUe0@Be=W1_8#FM{8LaI5~ou
J81xu87y;8*F#7-i

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c b/test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c
new file mode 100644
index 0000000000000000000000000000000000000000..e7b70fb592104aab690067b91564269a60fad55b
GIT binary patch
literal 200
zcmZQ#E9Xn);3!H1F*s7~)ohvAxXM%Qi^`bz6d2eTQvcsADq~_`EMj0{D=JGZ(qLeG
zbY-ogx;kS~OFP4V4hF_Up)HS?{{QC))?;ETPTic!#8#flQP#x(1zc+x7+IP4*vkK>
zauk)7GB7e|as3Aw$M8sjft!bkm4THZwYZ4sNFoCR<NhMXM=c!xnb<V6{xdKzva~R)
seZ<MZ$;8H_n7TtbLQ#jIoG-PgOhfAllRg^*1H=DR`?UtadL2a!0QRjjSpWb4

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e b/test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e
new file mode 100644
index 0000000000000000000000000000000000000000..726f35622236493fdd111f92bae71383791d227d
GIT binary patch
literal 625
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmyym|BNk<
z7#Ld^86GjQm9J&s<X~9KkZM&_#>B@~{y&wYh>0Uu4{RhyDid3IDn}?nsx0+CV-W+`
z7Im;S{}~t=7#Ld~F)=)1Dog#p_C5n=6$c{&W6Qt){}~vVK~lObOl(XLr|5SSF+p^L
zH8Yfft%0~4Y$yjuQ5ho>0|N_V3lkexd8$@XnKhpR0~^R$WlRi=MGP8R|CyK=*vk1h
zQtj1jwb;1I?NdSSQ($0YNd14e2%?IK4HO^}42+Miz(NFUo;|A4wTiFR8H-xl8UAxH
zFdhnJU@X#N(r<ah^#4C72-s4KH$y_8tc#(D0Sq27{Qu9$!pQJw?IB3Oc`z`sr4})8
zaxgJ4a4;5eC@?%~+5exBp$epfajgdf2jfEyhDR-&3=AM$pa5CRz`()4!7!PjEVW1j
zB*3|r0qhK}wG50_tW11tn&tmfpK}zIl`=3gXmNpE_o(I3T81tLE>L)b<AC9j0s}V#
z4-*U6U5r{Fim~O<S{4RQ=hW0<j#&&vOh@2>s-g9tfx)`vQ6d8)M69UHUhDsFhW$m1
qk6KXD%}X{022jcY8N|W4!+xznuv!OW%Of_1wG5m^91I+s3_Ae1$*AH0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9
new file mode 100644
index 0000000000000000000000000000000000000000..e48f730407c186b1331944abf8a19e95ee2644bd
GIT binary patch
literal 318
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}wm}%1@?p6d`o1ReY_^Sk%J6(9ZCm
zgMqO(l!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3Ik
zMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-*##+FBG88{djSQx-e76#52sj0<9Oh=Ht
z#=v0R@+gsk5h7MpX0P@Cx77Y3#zz7z9RFd08d^***%%lY{--LhWntjt;M`%q)-YJD
UgR$ii8^c-#&LR#54o-$00Kj@xX8-^I

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165
new file mode 100644
index 0000000000000000000000000000000000000000..daadca76ee668b5b871724a375d842778e5d0c23
GIT binary patch
literal 213
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlF;%&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c$ZIT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVS~#SsdXO6Mp_Oa0GS
z#K6P}vPK<j&wmC+uz^erT925@Qva{L&%jy4!N|ba^6x*ys<kW(oE%IH3>=I_910AN
oTK20mGE^}XF)*z40E;m^YT;yHU}Si-7UZzC3=A9$91N2g054KHkN^Mx

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732 b/test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732
new file mode 100644
index 0000000000000000000000000000000000000000..c904776a35ad30f69e3066dd79c09c6361958d6e
GIT binary patch
literal 317
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuyO{*mPczDI2ajN7{E*x2F@3$sl`Q1M<9;jC@Ry?
z`p>{%-SQ}rfe|8BRA#UB|F_isBF0AoEgb)0f*M*(FWDFv82+a!uVrE2<lx+4zt$*N
Vt%I@U5gWr=2F@Z51`bY!9RP``R44!d

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d b/test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d
new file mode 100644
index 0000000000000000000000000000000000000000..597e1a3b8a2dcd2b4bee3c6c29adca80fd2f141f
GIT binary patch
literal 320
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EMz*>vSG(bvI?LkT*rWGM{tW|ui&REpKz|hX{pM!z1
zH<W>~NQ+6o<q^~W{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN
z42)&={~3!Iw75Vd6T>3~25tr(CKj-A2F8|0Yc&}-7#Ua?z-$%<&KIev#YId<AkKk!
zj)B3t<xwI7BSfsI%wFsNZ>jx7jE@9bIR3)~HME#svN13){7+S0%fi6P!MVeJtzocQ
U2V=`4HioqfoJAZA9Gnb00LU*@C;$Ke

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0
new file mode 100644
index 0000000000000000000000000000000000000000..2a0713cccfe877f5a7b1ab0af69ca29434974455
GIT binary patch
literal 462
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhok)xNx_
zjEPTyfsG;c|J|Z8CI-eL1|~L;MhOPSM_0fai^?>hhN384tN2=-v8bh;;Xelh<DpOn
z#v&~y{gy{e|NnCY>oKvV7H>{vVk=MODC=S<VgLiKwG50_tW11tn&tmfpK}zIl`=3g
zXmR~#EMj0}U}9iqVBlupVPXNRWdxCoEsxf+FmO7jrWO}59YOX61A}$TqeKQqh*(h>
zLm3kv*fx-N*vkK>auhLvodF634v0e#Qf1buAWNAT9x;_&1F;xe7#J8h7>hU*7#_7S
z{AXlfECPiI$QWptFfcH-tOYA!c*OP;6hImbjE^|iG9bd>QOl#X3|$Od3=9k{j0}$$
z85q_wa4>MpVqmb>`v03@e-Y!O7LNZg7i%!RWMg1p_@Al_@*)T44*RtR!D=0hEsxk3
P)-rGwaWHUjGVA~VKxcPR

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424 b/test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424
new file mode 100644
index 0000000000000000000000000000000000000000..dd76b483ae70e64714e9af27d89c486a2216120b
GIT binary patch
literal 210
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+ObiShj71y@43Aov7#OM;
hiWnFe*Lr}(7#_87GB7YQJX#BK)>;Mz4i1LN3;;)JIWzzO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f b/test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f
new file mode 100644
index 0000000000000000000000000000000000000000..b8fb6faec7899455138f663a4d8785b80783f55a
GIT binary patch
literal 319
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3IkMP;Q7
zjAi!!8H*USxIiQm!y^R-ZU!DE7O-*##+FBGH5oV<8CV#=Y!(L27pbYmMNCH^&Vl%i
zfx)`vQ6d8)M69UHUhDsFsr^Naj|5sc{=)<{w3uG9F)%RvPgP#a!obPFxx;>~VX#^U
TW6L8phP4cwMH~zqoD4evVrf*>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c b/test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c
new file mode 100644
index 0000000000000000000000000000000000000000..83262c0f5892e31811a6378b463cefbbc334087b
GIT binary patch
literal 244
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)f<iR~O;DoB*!e;Fea8<R3a
zszQ2EL9$+QYF=?^F#`ib%OeIxMutaBY~^biI5`;BGNf7+l`-+LmH$uWC}QFW)&twY
zk;=r@l*$o`kSa_4&sf9&wpJZ%?|%kH1_s8KM@$Tln95TBuf5N}S;WD}z}WKd|9`N=
zS{4RQ4kiX}2F4-|1%^j0Obm<+RSZQ842)|%7&sV<I2a!BwQw?U6qVWkXDm`+1-Xpj
V(OQt1YZ(|gIMy<7Fid7(005zQLe>BP

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956
new file mode 100644
index 0000000000000000000000000000000000000000..1d4e2a64954d8414f63c110be53427715b1d6265
GIT binary patch
literal 513
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_Bb7NpWXwWy4V
zPl17rA@%>=qB151#v%qLHjqXM2F6EMz#5CnG(bvI?NODkReY_^Sk%(a@SlT$@lYrO
zW04k<e#;}K|Nl9H^_bXFi#Mk-v6ZKCEGz3`C}IEuuC)w|R;)~XY?|f&Q=fAbm6b9u
zGH7xAXDni1WME=oW?<lE;9+6`t7X&zQH(8**0L~gI;W-<7cm_{_6P%mb<3kf21bZj
zQ5i!S6Cc<<kSp2B|EF>kF@YTd3I`5|QxH;R)~O&{nHU~1m0bg|7+V+^7&sV<I20Hj
zwJ`i=WME=r`oADmIYLpBu?Q4CAOoS{!@$7UvKFkE;St+YP+(~=Fh1g3%K!-vZE%P@
zYI(Glp^Jfwfq|igk>L>|1H)Pd4hD`{3=H;K|9>;=FJgSu!to#GdJU$RYzzzx|5KGg
z-sRxjVXwhZ##qGA!m!pLSgnJx<q;dhS_aM{4h9ZRh8>J+85o%!u`ww#sB#n){r_+O
OpRvfwhOy-V$O-_esfEG-

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54 b/test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54
new file mode 100644
index 0000000000000000000000000000000000000000..d176aba12ae1339825fbd968278763b53027c24a
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<b!{67;D0~;Sls=b;m6B}2#eQHq|6Q2SD8$;^<
zyG3P842(q#Ol%;15)6!wu7LFwg=v74rrN`m-UlgNtN2=-v8aWCp`GDB2Lt1wPzJ^#
zEhhbzM@;|!a|G)#v85JoPGw>%Pvt1<awuW|1Fp3Uj8?2nd~BNK|5KlH6qS`SFfwRy
z{Ri2~@JNAyn}LUk1+0=0L^8HKTFb(~>71HcT*Pz);R~(*3=GySj}jReA!0>k_FDgc
zOYJXWeAL46A10=u#q^Smfq~(FsxrtF4$d9+YYl_dIv86Xu`#S=;4I=`;NWD~0RUD_
BPCWns

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19
new file mode 100644
index 0000000000000000000000000000000000000000..d773433cea9a77b2d9e9e6823fb7dd2a2374ca28
GIT binary patch
literal 211
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+ObiShj71y<3=B*RRgYR2
i8HyMf7}t7$1sNW-a56A3GCW!fa@Sf01`ZB}$qWE@E;&U2

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698
new file mode 100644
index 0000000000000000000000000000000000000000..593e45bec11facbfebe362bbae8819fd2f83a756
GIT binary patch
literal 462
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWiFK+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;MhOPSM_0fai^?>hhN384tN2=-v8bh;;Xelh<DpOn
z#v&~y{gy{e|NnCY>oKvV7H>{vVk=MODC=S<VgLiKwG50_tW11tn&tmfpK}zIl`=3g
zXmR~#EMj0}U}9iqVBlupVPXTTWz+&uj4hAWvM_Kur=}JcF&#nn2Lpq3%cDdFMu=EZ
z8ABNpAJ{sOf7r_Zr*afAf!zTL1`dcz5K?8<sUTaK7#=Z|T?4TgTNoG^I2emK6c`@0
zF#Km^U@QU!3dk5}pfE5nwyXs!VR*#$6cj=l42+LB*CN8;QOl#X3|$Od3=9k{j0}$$
z85q_wa4>MpVqmb>`v03@e-Y!O7LNZg2Wv3B1o`xTsxruj9GpAs*BS(?buhL(Vq;j#
Nz*)q>z`@C|0{}y3cYXi>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e b/test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e
new file mode 100644
index 0000000000000000000000000000000000000000..1b86b75d84f95511f5f7d51c97bc8f83146f5b3e
GIT binary patch
literal 338
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fsKzN)n3h(iH)n=KDDTfiBExnjUn~_
z-J&uk2F4-=CN_{h2?oYTSHSv;$}~VqQ|;kO?}L=CReY_^Sk%J6(9ZCmgMsl-C<9}W
z7L$I<Bc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<
z{)22~c%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzDo<tN<6uhzd4P?p9LX(c&ei}qd#yUi
zWl(n^98{cI1aeVv5z`Um5Mf}jZh4f*zz7j5Dzn%6|66K*5#ys4j{h(*4K1dZ<p6g%
BT-g8s

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b b/test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b
new file mode 100644
index 0000000000000000000000000000000000000000..3f5561a9e6b33ac0f05037f2639b3e7d83746a93
GIT binary patch
literal 329
zcmZQ#<0?<(C@N#(Q(#~#{|{oOsxvS$6|ohk7BR7v^QD3aj#PU!TaZ%w)Pqp945|O`
z7L_qEFcvW|u@#l27D+HLzE)qW_~;5_QA<0+e+~x5L!m8?nEwCg2-ag_OD*0EGAWg#
ztcw8(xYjZ-vNG{OZ7pSBWYFUJ&sfATmx<w#0s}V#4-+E;BLh=$D#&yOj{hKsfZV5{
z#iY;1@IO`A-XK`7qezME9A9ctnT8g_|1w4<HYR0;RE6}Sf@Hnq)V$)-Vg?3=mPZVX
zj0}&M*vi*3aB?uLWk|IGc>-cF6UccWJ2+CA*qTx~LJ?ABsUYWotz}T>09o;$fkAUV
bgEJ!o17pi0CWc2$WvTzyrl#I6W+(yxj$~O2

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0
new file mode 100644
index 0000000000000000000000000000000000000000..44c904c8f7339baefdcbe16028d468b2556530e2
GIT binary patch
literal 317
zcmZQ7PAy6;V&M4C#Kcz4m&(CWRHmWzpNWZqt(?z^Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1}3(mveY682F6EMz&eY{G(bvI?LkT*h7}=ntW|ui&REpKz|hX{pM!z1
zH<W>~NQ+6o<q^~W{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN
z42)&={~3!Iw75VHV0fg!z|FwJ!~#~$z}WI=ttJBpBLfQqn9ah#`64y7xQOWp#5EAF
zF)&!SJW6C>goqWD*=zm(Ew#Uh@sU6a$A6fhh8ELHHU<WU|EbDrSr|AuICt2uH4Ikk
UU~GBB#;}%wvxtL%gOgzg02y3UU;qFB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c
new file mode 100644
index 0000000000000000000000000000000000000000..39affe1f5105c17f0b7c00c0c74539a8dd8e3bb8
GIT binary patch
literal 211
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_n<!c!@IT+S5q*@h~G4ZjL|4-#8V&Vwa0~^Va%EVTl$`Oi?Dog#(Si}If
zMICI-e+EXdc}xtCn95TBuf5N}S;WD}z}WKdKg6Q7EDW3+Oyvw5j71y@43Aov7#JCr
jGZZl}Fs}6g2|i-rXyIgFU}Si-7UZtA3=A9`43ilEmr6O=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a
new file mode 100644
index 0000000000000000000000000000000000000000..dd9229e398a255fb0f78be8535a6476f897df525
GIT binary patch
literal 319
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZJb$n`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuxbXzmPczf88{djSQx-;76#52sj0<9Oh+KDfq0F9
z!Mf#9A_F6n7Sz@DTK|7b?Jr_{B+$a~AEFWz223y67#JA-rz)>yVc_K8++n}gFj%dF
TvE>mP!&(N;A`S))PKF%-fZbI3

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2
new file mode 100644
index 0000000000000000000000000000000000000000..25ab2bae624ff93e5f1f6656ceb43144137a9c5c
GIT binary patch
literal 318
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAYN+D(yA#|)&e67w{)WX2f&hVduf$>l%
z17ndElYR@&Bc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE
z7|ZPcGZryuae+uChDQnv+zdQSEMVmfj4hAWGH@`0I3Okq1Lup>)Z!whBM|36yvD#_
z-SQ}rfe|8BRA#UB|F_isBF0AoEgb)0f*M*(FWDFv82+a!uVrE2<lx+4zt%8Vt%I@U
R5gWr=2F@Z51`bY!9RM1zRHpy{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c b/test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c
new file mode 100644
index 0000000000000000000000000000000000000000..49790fb530e4f682addb71aeb846acadb56fefcb
GIT binary patch
literal 321
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAYN+D(yA#|)&e67w{)WX2f&hVduf$>l%
z17ndElYYx1rvLvrg7ui#Qj0gIGO?AXa+GyB6fuAS*IEWfD^?~xHqG+?sn0oz%1Rj+
z%k2L%7BOgXfk-BXM+yww3_MIMVC4*qEsxeRa4>>6ASMd~=Zn<T;v%La5Z6F_#=v0R
z@+gsk5h7MpX0P@Cx77Y3#zz7z9RFd08d^***%%lY{--LhWntjt;M`%q_W%F?{|$rH
VIv86Xu`#S=;4I=`;NWD~0RV;BSeF0*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a b/test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a
new file mode 100644
index 0000000000000000000000000000000000000000..6dfb6d0bef63f6e96d555d8dc13aaf2f09253c4f
GIT binary patch
literal 321
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U8wK6a;g3Ku@(*WsAwMW&tR`InuV^K>x!+#D2#zUbD
zj73^Z`Yn%`{{QC))?;EzE#92U#Mbg?ZFwq3S(if*0~m0vWni>oW#VJgEdQVSoTI3$
zl!1{!i|aqg6%3CQ7`PdDm{>q6Sr|AuI2jli85kKD7+W5#WntiSPE9Q?VmgBALhF`C
zi42TPY~{=he5o8oW%gSCe>3baVtmxX@gJhHs7ynM=_MNj1H=DRWso@>oIC8-8V0L%
UFt$8mV_3_;S;WD>!O5@#0H8`!b^rhX

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2
new file mode 100644
index 0000000000000000000000000000000000000000..c651ba4ff314ddb09c6da1d9e85814d1786d40f8
GIT binary patch
literal 232
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbna|NsC0(3VF`|Nj>=rLu7Z>uo-q%EVTl%2C$EP{aTRTx%H^S(*6Q
z%KxW6=O`*GWng5`;`+~6#K6nM@JNAyn}<P!pO1%$5v-Vzfx%gbp}2_Y2oqa5Un&Pj
zQJIF;e+CA|mPd&Uj7)6hrKuc6W%gSCe>3baVtmxX@t=vUoF62np~du)je&vTf2#6Y
b76wiZ&K>q^4T9A=7+W5#W#BC0U|;|MVC_HL

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79
new file mode 100644
index 0000000000000000000000000000000000000000..af3f3f8baa45dff6b3d1ceebbb1d1ea0887eedb2
GIT binary patch
literal 246
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;YEhZSUzVc(WsFR0
zOv((Y3h6}!$;o<osl}zm3=9k{j~Eyk86GjQm9J&s<X~9KkZM&_#>B@~{y&wYh>0Uu
z4{QlXDid2%Dn}?nsx0+CV-W+`UUiP!Ae;X)FfuSOwmf2Dc*Ine`hV?x2F@Z5Mh3=~
zfB*l3CDyVqaB?s)FmNyyaVRi6YGGnvWT;{&Vqjog>j4&Ic*NJj$-q%mX8)hDNP)5C
Z(ZBx;kJf_BT+6_~!LgQsgJCiQ0{}!uM$Z5M

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 2fafbe682b..887876c3c0 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23440,6 +23440,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin"
@@ -23858,6 +23880,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin"
@@ -23946,6 +23990,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
@@ -23968,6 +24034,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
@@ -24034,6 +24122,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4"
@@ -24122,6 +24232,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
@@ -24452,6 +24584,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
@@ -24496,6 +24650,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57"
@@ -24674,7 +24850,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24696,7 +24872,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24718,7 +24894,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24740,7 +24916,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24762,7 +24938,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24784,7 +24960,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24806,7 +24982,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24828,7 +25004,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24850,7 +25026,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24872,7 +25048,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24894,7 +25070,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24916,7 +25092,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24938,7 +25114,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24960,7 +25136,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24982,7 +25158,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25004,7 +25180,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25026,7 +25202,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25048,7 +25224,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25070,7 +25246,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25092,7 +25268,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25114,7 +25290,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25136,7 +25312,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25158,7 +25334,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25180,7 +25356,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25202,7 +25378,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25224,7 +25400,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25246,7 +25422,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25268,7 +25444,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25290,7 +25466,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25312,7 +25488,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25334,7 +25510,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25356,7 +25532,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25378,7 +25554,403 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25400,7 +25972,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25422,7 +25994,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25444,7 +26016,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25466,7 +26038,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25488,7 +26060,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25510,7 +26082,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25532,7 +26104,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25554,7 +26126,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25576,7 +26148,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25598,7 +26170,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25620,7 +26192,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25642,7 +26214,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25664,7 +26236,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25686,7 +26258,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25708,7 +26280,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25730,7 +26302,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25752,7 +26324,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25774,7 +26346,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25796,7 +26368,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25818,7 +26390,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25840,7 +26412,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25862,7 +26434,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25884,7 +26456,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25906,7 +26478,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25928,7 +26500,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25950,7 +26522,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25972,7 +26544,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25994,7 +26566,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26016,7 +26588,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26038,7 +26610,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26060,7 +26632,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26082,7 +26654,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26104,7 +26676,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26126,7 +26698,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26148,7 +26720,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26170,7 +26742,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26192,7 +26764,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26214,7 +26786,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26236,7 +26808,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26258,7 +26830,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26280,7 +26852,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26302,7 +26874,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26324,7 +26896,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26346,7 +26918,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26368,7 +26940,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26390,7 +26962,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26412,7 +26984,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26434,7 +27006,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26456,7 +27028,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26478,7 +27050,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26500,7 +27072,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26522,7 +27094,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26544,7 +27116,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26566,7 +27138,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26588,7 +27160,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26610,7 +27182,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26632,7 +27204,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26654,7 +27226,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26676,7 +27248,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26698,7 +27270,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26720,7 +27292,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26742,7 +27314,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26764,7 +27336,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26786,7 +27358,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26808,7 +27380,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26830,7 +27402,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26852,7 +27424,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26874,7 +27446,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26896,7 +27468,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27224,6 +27796,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
@@ -27554,6 +28148,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
@@ -28104,6 +28720,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
@@ -28236,6 +28874,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
@@ -28522,6 +29182,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
@@ -28566,6 +29248,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
-- 
GitLab


From 2fd159508fab3df3eff2e67c7c73f8a6330cc4fb Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 13:34:05 -0700
Subject: [PATCH 159/525] Expand corpus

---
 .../0052f8fb6a7884ced8a6754aa13441be1f7dcd51  | Bin 0 -> 49 bytes
 .../6995dd153f712ad257ab5a365e5a4b84dc676ed3  | Bin 0 -> 66 bytes
 .../f107c60f00da44a2c412c5b89c733efe5f9be4aa  | Bin 0 -> 78 bytes
 tools/run_tests/tests.json                    |  66 ++++++++++++++++++
 4 files changed, 66 insertions(+)
 create mode 100644 test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51
 create mode 100644 test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3
 create mode 100644 test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa

diff --git a/test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51 b/test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51
new file mode 100644
index 0000000000000000000000000000000000000000..a88986e2d4df654ba2a1273033014e4b454decfb
GIT binary patch
literal 49
zcmWe++{>r2x7qq!3<HCNI4i^d|J;Itf_s-V?wveu@8srlGu6*%s%~tac~3xd@8U@e
GRt*5ea})Le

literal 0
HcmV?d00001

diff --git a/test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3 b/test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3
new file mode 100644
index 0000000000000000000000000000000000000000..a9ae5ff3e9840671f819a957a66fff37e8a313eb
GIT binary patch
literal 66
zcmd<n*xPJ<E{1_YLY$T1|9@^lLBYLC8uw0~w|8>$xxI@gF*ICE;BcO*xiRSf|Gk=F
YR+_oZnp)>JS|?a*T5D}c@)A%70D*cM!T<mO

literal 0
HcmV?d00001

diff --git a/test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa b/test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa
new file mode 100644
index 0000000000000000000000000000000000000000..2bd503a192030352e55f2909230a0074610dc844
GIT binary patch
literal 78
zcmWe++{>r2x7qq!3<HCNI4i^d|J;Itf_s-V?wveu@8srldlye)Xt<cb;XGAyW6=Nq
kdo{zXG;^CZwa#s{PO#Rr*4mKdHB<eJrs_uZ=9vQO0LWG!UjP6A

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 2d91ad9c63..efbe8f9c0d 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -54694,6 +54694,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "nanopb_fuzzer_response_test_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/nanopb/corpus_response/0c35544f40d428d103e9c5b969ad9cd16767b110"
@@ -55200,6 +55222,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "nanopb_fuzzer_response_test_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/nanopb/corpus_response/6d15065785eb8f4b5f17357a520cb4815a2cb355"
@@ -55926,6 +55970,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "nanopb_fuzzer_response_test_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/nanopb/corpus_response/f58a9135d07ea9a5e3e710f6b3bf6d48d5942dfd"
-- 
GitLab


From a687250fd8d728b610ab40397136979915fa4f19 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 13:37:48 -0700
Subject: [PATCH 160/525] Fix msan bug

---
 test/core/util/passthru_endpoint.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index c7bcd2de7b..168ae59e91 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -149,6 +149,7 @@ void grpc_passthru_endpoint_create(grpc_endpoint **client,
                                    grpc_endpoint **server) {
   passthru_endpoint *m = gpr_malloc(sizeof(*m));
   m->halves = 2;
+  m->shutdown = 0;
   half_init(&m->client, m);
   half_init(&m->server, m);
   gpr_mu_init(&m->mu);
-- 
GitLab


From 92a17d7a8fea79b7e226d6b4a624b5053a190009 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 13:40:51 -0700
Subject: [PATCH 161/525] Make api_fuzzer mac ready

---
 src/core/lib/support/time_posix.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/core/lib/support/time_posix.c b/src/core/lib/support/time_posix.c
index cc0aa2b476..11542072fe 100644
--- a/src/core/lib/support/time_posix.c
+++ b/src/core/lib/support/time_posix.c
@@ -95,12 +95,6 @@ static gpr_timespec now_impl(gpr_clock_type clock_type) {
     return gpr_from_timespec(now, clock_type);
   }
 }
-
-gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl;
-
-gpr_timespec gpr_now(gpr_clock_type clock_type) {
-  return gpr_now_impl(clock_type);
-}
 #else
 /* For some reason Apple's OSes haven't implemented clock_gettime. */
 
@@ -120,7 +114,7 @@ void gpr_time_init(void) {
   g_time_start = mach_absolute_time();
 }
 
-gpr_timespec gpr_now(gpr_clock_type clock) {
+static gpr_timespec now_impl(gpr_clock_type clock) {
   gpr_timespec now;
   struct timeval now_tv;
   double now_dbl;
@@ -148,6 +142,12 @@ gpr_timespec gpr_now(gpr_clock_type clock) {
 }
 #endif
 
+gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl;
+
+gpr_timespec gpr_now(gpr_clock_type clock_type) {
+  return gpr_now_impl(clock_type);
+}
+
 void gpr_sleep_until(gpr_timespec until) {
   gpr_timespec now;
   gpr_timespec delta;
-- 
GitLab


From 62759c42bcca8df9083dffa7c087e000508f2035 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 14:08:14 -0700
Subject: [PATCH 162/525] Expand corpus

---
 .../0211f960c2da343c3cde6406e650d73278e01e47  |  Bin 0 -> 572 bytes
 .../157586c7c0ba8fd0dc9bfc2426229a7da934cec2  |  Bin 0 -> 214 bytes
 .../1e4a2a6998218ea8f475aa2ee27869207b33b612  |  Bin 0 -> 343 bytes
 .../2ad5ed48b598bd9e2d486a21eed5314736e5b56a  |  Bin 0 -> 405 bytes
 .../2bc326b3ecf6d069595bc27cc1bca76b374c8e85  |  Bin 0 -> 366 bytes
 .../383043f6c05edc5a18f5c8e7b9d0314db63eab5e  |  Bin 0 -> 295 bytes
 .../46efabc911aab09a5e7a34a19ef97ce710594a77  |  Bin 0 -> 295 bytes
 .../484ab9d070fffe7e3d1a1704c9fa2ce01e192450  |  Bin 0 -> 325 bytes
 .../4e36813fde9b5de1b62de95f498f2e0a48b5c5f7  |  Bin 0 -> 381 bytes
 .../4ef22ea5b0aa8b80a180a9654f5aef121c5aad83  |  Bin 0 -> 295 bytes
 .../660c071578cbdccb503317ecbf2fd331bc4ac82d  |  Bin 0 -> 345 bytes
 .../7240f3408714c2dcdcb448f234efef4f08e6b2fb  |  Bin 0 -> 379 bytes
 .../727f43500183aec9c0d9be7d2363fa1761cda5d5  |  Bin 0 -> 344 bytes
 .../77e8407dfe09892312213f7d6b2ad8a961b6b88e  |  Bin 0 -> 756 bytes
 .../7c58daa09675ba2b11e69636bb78dc0d1343bb51  |  Bin 0 -> 343 bytes
 .../80a56bd23287d856a653f22f57f7d1442235b713  |  Bin 0 -> 232 bytes
 .../8778868ac7a23d552d93772aa8566cf427a0c1f1  |  Bin 0 -> 838 bytes
 .../885267691bb42bc807b6e578571430a81513eee0  |  Bin 0 -> 214 bytes
 .../88be31c841a66f523045f7bd1708ce64272e4276  |  Bin 0 -> 342 bytes
 .../8ea86819b4ac803bb12fd6b63e6496238aa329c1  |  Bin 0 -> 320 bytes
 .../9379dd6ade6947a59a1786435a2d55a705161ae5  |  Bin 0 -> 343 bytes
 .../9a425eda58b05407e671f6b86a6664eb728843cb  |  Bin 0 -> 461 bytes
 .../a1dffc6b0fabef88188bc4c140bc2d331d73f997  |  Bin 0 -> 299 bytes
 .../ab1a75a7dec4c780749be5afa45fdb9e7e7907ee  |  Bin 0 -> 212 bytes
 .../b56db2235df5a81ff15d0c07612de7eee0272304  |  Bin 0 -> 605 bytes
 .../c2d14ed959df62d2f6dbe46c71489bed68e3c0f0  |  Bin 0 -> 322 bytes
 .../c45cc40cc387134dec06733a01bde8fc44a2c9d9  |  Bin 0 -> 23 bytes
 .../c73e85bdaa195d9659ae9b08995a9fb716f9c92a  |  Bin 0 -> 296 bytes
 .../cdc064f39a9a67210b1be6b195d38d5d0d73eaa0  |  Bin 0 -> 295 bytes
 ...h-e45753da8952c41715a65010250efba0a4a4d243 |  Bin 0 -> 326 bytes
 .../e022322a04b3ac1452055563bb41976a03a146ad  |  Bin 0 -> 275 bytes
 .../e66b054263dd9e7ea90d7dfaee555e2f24bfb60f  |  Bin 0 -> 211 bytes
 .../e921037de2e963b653e881fba095eeb33799d749  |  Bin 0 -> 324 bytes
 .../eb342f6fd92411d7beb1f82983a19849d45ff46f  |  Bin 0 -> 460 bytes
 .../ebbc2aa89ec745a7201eb4aa1aded15d35e4206c  |  Bin 0 -> 343 bytes
 .../f3c0468b37c09b998096d18cd13a522dec09888b  |  Bin 0 -> 344 bytes
 .../f71de0dac54e25fe658e8c78208b855d3f0db23c  |  Bin 0 -> 344 bytes
 .../f861e708b6d0e0ca691d88a31e73f3d2643deacd  |  Bin 0 -> 330 bytes
 .../fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b  |  Bin 0 -> 195 bytes
 .../fe680903482b870b820690f61cc607e5d26a652a  |  Bin 0 -> 295 bytes
 ...t-e45753da8952c41715a65010250efba0a4a4d243 |  Bin 0 -> 326 bytes
 tools/run_tests/tests.json                    | 1248 ++++++++++++++---
 42 files changed, 1075 insertions(+), 173 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47
new file mode 100644
index 0000000000000000000000000000000000000000..1a2c219fc123c2a7e5b45ad61027005257dca89a
GIT binary patch
literal 572
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGhiUfvud6Bh_BbmWhq4
z+&;CajEPTyfsG;c|J|Z8CI-eL1|~L;UI_-qM_1M=zE)=}YH4Tq&%wZW=>Px!|3h0I
zG5!Bv%#_N;5v;fQa4Hj9c`8R)7ef&P7;vp+U}R<DV=Mok`kbSvtdxO~L5u4@$WVqy
z3Jlyl3_MJXV1<kf49-Ff#YId<NN^4tvS%0=7(qTOD$@XYB-I}55i|uYj}jRenb^up
zQ#p#t?6v;?X4qfE_^5^BKNDLye=0{2+}}tZT~)@wcqo*Cu}F(aAM9C<U_B<b)Z)#l
zOl&QW)`Gq3faKj&E0BjZvHQ48LyPGp8v_Hw|5W9*EDW3+oIC8-8U(9#Ft%_r@G!A}
z!U8PJz`)4B$iTqZ@(85NIW_gsS_V!~@Syt08s;Nr20o~tK%qP3(Nbiufu%Hr&}=T^
eVAx^5)(~v@BQ^$W1`dX`44g#_91I+s3_Adwf}2tR

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2
new file mode 100644
index 0000000000000000000000000000000000000000..9e30b1010b2dba610bb115e87a2b744b09f88dd8
GIT binary patch
literal 214
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkm|d@<h>7hSUn)qLp{(dX0|R5r
zBL>D6MutaBY~^biI5`;BGNf7+l`-+LmH$uWC}QFW)&rZ#k;=qYZp9G_l}hI*N=yCE
zSj51@39?5WY|(!PMzDcQ3|fzv%2NNYz0bf|#KFkG*z)f`#HzI{44fQH3=ABMMH~tY
pE&J6O8LAkH7#JAWdVs|k9<^jLFfcMaS_^X6S_TFV1`dYF3;+q{IrRVl

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612
new file mode 100644
index 0000000000000000000000000000000000000000..f7363927c5c505b96b4c43fbf85269858221303c
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1U8wK6a;g3Ku@(*WsAwMW&tR`InuV^K>x
z!+(xdWekjmLKzr~w3zf;9x?s@&k?N0#FkpTIhBd6<<Z*mRF1MPhav_r;9ASTm}<q!
z#K)#t{y+6OM^RZR10#bL*ME>h7#=Awa5L~Qv4E7aFmQ5kGB7YQFfuSOwme$P!ocaA
znp#}MbOhCr)-8_`85o(^%9$DXQaOss?6v-b44d+3>2HSpMU0PHU;$E8rXj@il8u3Z
n;eV<!$T$wp9rkMtgVj11TOP47STk@itYzRV;$Yz5WY_@!7{6Py

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a b/test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a
new file mode 100644
index 0000000000000000000000000000000000000000..ee07f6fb1e3f3a120e03e576b609da37d082bfab
GIT binary patch
literal 405
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSXIWrcqo*Cu}F(azvYo4)Bpb*!Fo(=sl}U9nb=w$tu0UGD03)c00XYI
z42-E(tW11tn*URua}<@8GB7e|as3CmgW-_^12+Q?6B7d?NG&G^Cj$c`h|SpYXe|o^
zr*mp*aS_uIh#Rkfy~n^{-SQ}rfsu)=oSA_ywW!Qq>p#e>DUX)^X4qfE_^5^BKSX^|
znT8P4OExApE(QjM|EcBaSw&^md<x1SgE=^NFt9N&ar_5`AIK$a;GooCU~GBBxt2j4
y;!Os|M=g)mGITL;@iF}W&%j|ni(#!{uv!OW%Of@hYX%O6wG5m^91I+s3_AeLuWo7p

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85
new file mode 100644
index 0000000000000000000000000000000000000000..c2d133ee4d2445f7ee692cf3f70b2ac2ecbf2475
GIT binary patch
literal 366
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bJHtK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$`(M<0?<JN7cDj@wGZ*
zQA<0+e~wjU42*|D85oPSnDkp7DKh>4&k?N0#FkpTIhBd6<<Z*mRE{!-A_g$vTFbzg
zYQ@R~ayK8FX8Hfr=Nv_4r3{P=T3r7@j$wGDz`)JG!^8wq&ceXS!O6hD$iT?Jz}WI=
zEeivub82dF5z`S=hg!EhN@QSU0tdvZvQ##ZNmCvzwJv97;7ctkv)B3$75UAuzliZs
z3&($m{-QDsA*PpX3=9k$4F6M=LFRLC?yz5L7_8R8*z$;t!J2`CVJ!nELlFl92PeZ0
E05A??!2kdN

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e b/test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e
new file mode 100644
index 0000000000000000000000000000000000000000..816d9e2d55181c4b28f714f4434b00c459dc471a
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN!oa|wz`zJn&)D*4Eeivub82dF5z`T5PcSf8w>(N@V1$SjmDy|k|IM(!
yi1ASi$A6fZh8ELHHU<WU|EbC#Q#d$x*snDRR_kDFdBn!BmVvW~gMovSVFv&dM@~Ed

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77 b/test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77
new file mode 100644
index 0000000000000000000000000000000000000000..068dfb5944c83060b56ec715e11d8e509e856140
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7E^x9
zBc}iVIfC_=*iwr(r!ujXr*f2aITST8fB@H821YAZCO$UJvj3^iIf}|k85kL~xc-Ce
zWO$^&z|FwJ!~#;tzz8B4TOO@tVc>L5O)V~BI)dy81_tYvM~MuK5V4{%d#(S!8TJ=3
xK5F6k4-?bSVtUEOz`*c7RT*Ro2j>p^wFbdz9gHoH*cjF_a29beaBwp0004izPTK$g

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450 b/test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450
new file mode 100644
index 0000000000000000000000000000000000000000..d9d30e287b0367cf866de49b66b8e085eabbff34
GIT binary patch
literal 325
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EMz*>vSG(bvI?LkT*rWGM{tW|ui&REpKz|hX{pM!z1
zH<W>~NQ+6o<q^~W{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN
z42)&={~3!I{{R2~UyBRGVq$otz`)JG!^8sC!ob+_Xssp#2O|Ru1DMUi!1*FIwYZ4s
z2*gPoWgrhSFj%)dN@QS!h!vIDYyJN%wZDk*kw6Q_f0&?#7Sl^M1_p-zsmg0v7&tjN
cci68r3|8x4Y<a}Su$F<-s)&PugOgzg01={DVgLXD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7
new file mode 100644
index 0000000000000000000000000000000000000000..d59ec70afde25dcaf20fa1518aad3ed1fd7c80b8
GIT binary patch
literal 381
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69Zd0U$7HLs^D98do^1oHm-8})S@yb
zJ_QCghSdLei^`Z77>gK~*g)DP7#JU20qZU*(*P+=wFfDM7+3_+(GSwHR`InuV^IqO
zLp#HN4hF{FPzJ^#EhhbzM@;|!a|G)#v85JoPGw>%Pvt1<awuW|1Fp3Uj8?2nd~BNK
z|5KlH6qS`SFqYZ>XDnj)|NsAgEiMp?iQ$m~12+Q?6C+p)17pjhwVDhZj0`LcU^WW_
z?~Byb;v%LaU^g-8voZZoRkk+>*6S!@Vk_t1C<A$#fx)`vQ6d8)SPe%}nZ4Hk-%|UF
z7#|6=aQue~@}+_Uh@lJ=OiVA?7#JA-rz)>yVc_K8++n}g=s(y(2F4afhDU1|I5`-C
d)j-bdU~GBB#;}%w)2fJLErSOG0|zI=4gjptYxe*E

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83
new file mode 100644
index 0000000000000000000000000000000000000000..76d9ac8b1fba0de80d0198f67a30d6b741faa6a8
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|(ceu2p=k&REpa&hVduf$>l%17ndE
zlYYx1rvLvrg7ui#Qj0gIGO?AXa+GyB6fuAS*IEWfD^?~xHqG+?sn0oz%1Rj+8ML_m
zgY0B@q`<(<z{AACz`&ruzz9;$*z#yC3j?QfYHD#2(-9`HTR@J{`p>{%-SQ}rfe|8B
zRA#UB|2M<_BF0B89RFcr8d^***%%lY{--K~OyS_%VZYWiSgnJx<q;dhS_aM{4h9ZR
Gh8+MC3{F7+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d b/test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d
new file mode 100644
index 0000000000000000000000000000000000000000..df8b58ff9f2a19a9ae1b9936ecf93de1f10b1e57
GIT binary patch
literal 345
zcmWek*2qZA%S+8+U@}fEDoZV5;P}tP#8%Fi%E3`orlIwpiHU)&oR1^bUd@(?jjP-~
zwWy4VPl17rA@%>=qB151#v%qLHjqXM2F6EM*pRg{FffA5DJs(d=}fgRDpN$#xmNMD
zI%82wJHvmDRb>o}he8<`i?o>ZTOKho{r}GqtjENbTD&=xiLK?)+VWJ6GKV4tFyLCt
zz?f>q%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e
z%fi6voSIr(#B>DJk=8Ab5*Zko*vgq1_)?3??6v-b%$o9O>2C(9{Y8wAS~&hgG!&I-
u2r<26V_;zTpQ;Qpj)QZD{aV9dwGPIXM{Eq%3>*w=890kL7&tf?b^rjwwOc~~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb b/test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb
new file mode 100644
index 0000000000000000000000000000000000000000..095396d22a32ea0e0cb730b405b053bd7c407285
GIT binary patch
literal 379
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69Zd0U$7HLs^D98do^1oHm-8})S@yb
zJ~;+9hSdLei^`Z77>gK~*g)DP7#JU20qZU*(*P+=wFfDM7+9nL*3l2rvR3i6I%81_
z14BE*e+~x5-cSa{A}uEUmPbtg|7!*7F|nl<Z%$=mD^KMp>vAY!00XYI42)K+Onhvb
z<^NNka}<@8GBB3e|7R>>`2YX^e=RN$i;3Zp0s}V#4-+F;3j<@zqqUk09E=Ps3}7}3
z?~Byb;v%LaU?(x@voZZoRkk+>*6S!@Vk_t1C<FPKfx)`vQ6d8)SPe%}nZ4Hk-%|UF
z7#|6=aQue~@}+{qhXJI4=_MNj1H=DR<+UsfoE)4x?AIFo2V2L$*uu#0Xe|RL2SczL
c$dMh4Esxk3)-rHf6>+R(@L*uz;AGeV02Q}ur2qf`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5
new file mode 100644
index 0000000000000000000000000000000000000000..a30b54aad56adf2b99feb16b3e1a6dc46e210777
GIT binary patch
literal 344
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!5Lz|<GcYiM%qc3<0O?G%N7cDj@wGZ*
zQA<0+e~wjU42*|D85oPSnDkp7G5!C~5v<3=mRh_ym5Ht8(c1D<j<PO?A_g$vTFbzg
zYQ@UL$EI2SKlM3BQCTSiBZC&#e~?2M9w{(zGw?96fRwT@aB^@mFfcMOGB7Z<JX*`b
z!0DWtT3p0*1mQ@n{|pS)Esqiz7@640nHl&}If}~cwf=()oAPMsZ-)IvjE`D4{zEhr
wm1zhuy<}rxVECV^3^I;`bBFy}!(g=z#+FBH4Au-B3~L!Ui#QlKI2m>T03X&{vj6}9

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e b/test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e
new file mode 100644
index 0000000000000000000000000000000000000000..bdd17724b2f70aefba4c2476847defa77170c709
GIT binary patch
literal 756
zcmZQ7PAw`+En?vK&&0%5&X>x;QKq5wpNWZqt(>1D)n3h(iH)n=KDDTfiBExnjUn~_
z-J&uk2F4-=CN_{h2?oYTSHSv;$}~VqQ|%#2S)fYSD!x`{ENW?I_|L(>cqo*Cu}F(a
zzvU6r|Nk7pdTgo1n^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42%p~T>n8<
zGCWdX;AY@qVgajU1d)s_kJhp<a5|@^78fxcfqJ2+OhaAkKLdkx%cDdFMu=chnZ4Hk
z-wgYU7$3E8{D+BYXfeHHV_;zTpQ;QphJ$kl)Dx<h0aFAI89quv1{R2TLxu@CXc$Nj
z8ZCTbgBdgoWlVhFcmPEnTlxP~jv^+GU_B-_Q0m}-L=i%&%sLes9ZY3l7Gnzo0|N(R
z5r+c9qZWq$j0}uLpu_?)2AWtH7#LgDf|W2lVtWcoIT{R%k2u#dAQH!;mPczDx)`_^
z7#La@86Gh*Fsx<ZVBna=z(8EY*{?MSRs$0q9gHoH*cjF_Kq<~54h9ZRh8-{(0F3s<
A{{R30

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51
new file mode 100644
index 0000000000000000000000000000000000000000..babac6878a5c3e73a38d03c7d4d686338e0e889e
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!n8;7Bbh`_IJ0R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gY5qO#N?2?oYTSJ;rXGB7ZL%qc3<0O?G%N7cDj@wGZ*
zQA<0+e~wjU42*|D85oPSnDkp7DKh>4&k?N0#FkpTIhBd6<<Z*mRE{!-A_fKqMg|71
zwG51@R;)~XY?|f&Q=fAbm6b9uGH7xA2RVe{kpcrZ0}m4u0|NsC3j-$yCrA$?0|R5r
zqqQsyoX)AK#YId<P#tOA@+gskk%_IGnSn30sLWpLKgg^pkCy&s*k8o>sD<M{M14`2
uh7i+BHU<WU|EbC#(>OSH*snDVR_kDFdBnzG&A`F1mVvW~gMovSVFv(-!&^fD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713 b/test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713
new file mode 100644
index 0000000000000000000000000000000000000000..94190e3de8b6656d5dce70c0b97c9603490c8d8d
GIT binary patch
literal 232
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbna|NsC0(3VF`|Nj>=rLu7Z>uo-q%EVTl%2C$EP{aTRTx%H^S(*6Q
z%KxW6=O`*GWng5`;`+~6#K6nM@JNAyn}<P!pNofy5v-Vzfx%gbp}2_Y2oqa5Un&Pj
zQJIF;e+CA|mPd&Uj7)6hrKuc6W%gSCe>3baVtmxX@t=vUoF62np~du)je&vTf2#6Y
b76wiZ&K>q^4T9A=7+W5#W#BC0U|;|MUs*rc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1
new file mode 100644
index 0000000000000000000000000000000000000000..616d28aca4e2afdcf6fa250f2f610d3dd49e5319
GIT binary patch
literal 838
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aHdki42L6B}2#
zeJV&ZN2)!HTU5rxr@+9*kox~_Q5h2hV-W)r8^|6B2F6EM)+)YMXDn)IXZX*-z<4OM
z<q^~W{~W=3Ol+yen?VMpa+Gy3FfcGNFflMNFmSD9U}R<DV=Mo!`CPN8tdxO~L5u4@
z$V7%m3Jlx~JWMPMYzzzxj3C9%sj0<9Oh-Vjfq8|2fwARLA_F5ttf<Uh>;G?t{Y8wA
zS~&hQ;dLiCJc`ORKt4>hM^%dE2L{HXHCjyiSiRy<1acX~BUT`vXqNv^ea?aE6_{OG
zO!^?t{7+S0%fi6P!MVeJE!39=!FnBxEsxeRa29c}fK3GZ7$n5PzzOj<1H%y}Hmq@=
zjvfhYpzuIMI0FMCh(p-7tI9xe#=uyF#k(z!)*?dP8h5B8Jo}Oj63Gn69xewZ0OU|h
z#TjhSumOh$IJ`jVfDs(!pzw1}EzZSA4seGtGw`KyfD;5LIZb)A6p=1qE)-&V362hf
VU^P(Sr?N4C!=HhJlVOMQS^&}t-TnXo

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0
new file mode 100644
index 0000000000000000000000000000000000000000..982d5ba322d8d52b1cc4f2f4989c0e4ec1e346e6
GIT binary patch
literal 214
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tjOyB|NjgO
zj4h8C7}XgW9x<_%uVvumU|7qLYE@Lm#K%_tKb511i6dAKY$``86I*#IM<_z7EcHKQ
z5d+vFb+AqU85qIlF)=)1Dog#p_C5n=5eFj!W6M9NMQd3YI60UY7&sV<I20HjwJ<R-
lGE^}XF)%Q$^#BVpJZj-&U|?i;v=-#9wG2!g9RL3_000+SJlX&N

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276 b/test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276
new file mode 100644
index 0000000000000000000000000000000000000000..9c090441c0222537b7613cc2f4797768e4ebcd28
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#N|(fOMwXqv~9%_*$K@sHL6Z
zKgX&v2F63742(ruO!_U46q)}2=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?LwPI!B
zW791EpZc7msH~KMkwJ^=Kgb~rj}#cV8F-kOKuTE{I5{{O7#JBC85kH_9<60z;B-z+
zEiPg@g6c@?mPd&Uj7)6h%nW>~MP>F{|3PL=d9?I5!~P=1M=c!xA?l0DG=!L5vN13)
m{7+Q|na07n!+xz{uv!OW%Of@hYX%O6wG5m^91I+s3_AdNL0dWi

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1
new file mode 100644
index 0000000000000000000000000000000000000000..270798c8eb76fc0580dd2d0397172be4a94cfe4e
GIT binary patch
literal 320
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIc>;M09`_!T`CO!oQ
zHip#ycZ<rH7#NEfnAkviB^VeVT><MYD$`(M<0?<J2PuUZSA@{9R`InuV^IqOLp#HN
z4hF{FPzJ^#EhhbzM@;|!a|G)#v85JoPGw>%Pvt1<awuW|1Fp3Uj8?2nd~BNK|5KlH
z6qS`SFqYZ>XDnjS;sTLO4388TxEXkuSis5|7+W5#W#C|BU||3=S*$r<q^1@ZF&%-p
z2I4se2J4nbi42Sov7$12t^dEJ_7^ce5@_N04-?eTVtUEOz`*c7Re3E711AUP4*RtR
X!D=0hEsxk3)-rGwaWHUjGVA~Vb9`3h

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5
new file mode 100644
index 0000000000000000000000000000000000000000..3880e46ba30d1d136ed92c8985cfbf7b90b0b886
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKJg{r}GqtjENbTD&=xiLK?)+VWJ6GKV4tFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e%fi6v
zoSIr(#B>DJk=8Ab5*Zko*vgq1_)?3??6v-b%$o9O>2HSpMU0PHIQ~P_7nNxUF}-AC
pU|{&4sthuXgL8-dTEk$q4#t*8Yz)>691Lq2IEy$KI5-)0004`yTS5Q;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb
new file mode 100644
index 0000000000000000000000000000000000000000..bccfd303fded12ce7605cef154bcf1e2f60b086e
GIT binary patch
literal 461
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhok)xNx_
zjEPTyfsG;c|J|Z8CI-eL1}3($)FKH6#z$Ac`ijalpk|_|T&wt6ow2B;o#8(R1LL7k
z2F4;SCjFL2O#lCL1nV)er50~aWnwE&<tXc7C}IEuuC)w|R;)~XY?|f&Q=fAbm6b9u
zGH7xAXDni1WME=oW?<lE;9+6`t7Qa{j4hAWvM_Kur=}JcF&#nn1p|Y1%cDdFMu=EZ
z8ABNpAJ{gKZ`jKJr*afAft>*g1P+Kp5K?8<sUS<47#=Z|T?4TgTNoG^I2emK6c`@0
zF#Km^U@QU!3CI{|kT5VXwyXs!VR*#$6cn%;42+LB*D@f&;8Dw?wG3ShTnr2hEsPA0
z7#SGWGH@_(%wk}$*ZTjPVSf?hqZW?;Fc)huy<}rxVECV^4Duoe=MMX|2El3_j4hAY
Q7}hdy7I83ea5C%w0D!Z0-v9sr

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997
new file mode 100644
index 0000000000000000000000000000000000000000..794a50a9ce2a4dd13adc83197089725745a7d1e7
GIT binary patch
literal 299
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogNgA_C<9}W7L$I<
zBc}iVIfC`rQj0gIGO?AXa+GyB6frQcFhBs;S_VcdRwh0+&GP@L&pC?9N*Nd#w7C9*
ztYvtlz`)JG!vs;w2-3jV@@Op!1E+IpYH<<M5rjX~wf-|OShqY%WMG5{7M0m+{r}Cd
zzliZs3&($$n1&Y9OEv}uhX1L`AY(W<ci68r3s&o3Y<a}Su$F<dh=YNHlVJw{%6v{u

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee
new file mode 100644
index 0000000000000000000000000000000000000000..14d56dd6bf8caf8a9c20772d680b6b98215361c5
GIT binary patch
literal 212
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_nX60)cI5`;BGNf7+l`-+LmH$uWC}QFW)&rZ#k;=qYp2`tgR8|0$Dog#(
zSi}IfMjdR=e+EXdflLgKn95TBuf5N}S;WD}z}WKdKg6cBEDW3+Oyvw5j71y@43Aov
n7#JCrGZZl}Fs}6g2|i-rXyIgFU}Si-7UZzC3=A9`43ilE_<uTm

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304
new file mode 100644
index 0000000000000000000000000000000000000000..114700c26646bd30ecdeb746b8d4f65ffac7d1c2
GIT binary patch
literal 605
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aHdki42L6B}2#
zeJV&ZN2)!D3)Tl>fW(W+nD`VJ*cej(-z_R*Vqh#{U}6JVD8az^=*n8f*XoQ#E$s~d
zIT#oZg|<9m`v0FJSdWP<wRkhg#8i&5E(Qh$CI&FzTFb!5%EZT3{$KOCW>Hxw10#bL
z*M9{j28JTWM-1EyJRnCiFfcHJR6D1p78fxc0XYliCk6(_mPd&Uj7)40CsW61V8>y1
z8pyK@j}*X8V_{&!=`>KV7nRv-{r}CdzliZs3&($mvq3Szqz}^fKUH}x3j-$y=MJs^
z2ybA~hu2Tw_$?~a0C_*v9#ttMD(u%91nYG$wme$PzzL6*A`S+|qBUAf`dH(~p$HV*
Q3=E(kuwrFk;$zbU0Cf4D)&Kwi

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0
new file mode 100644
index 0000000000000000000000000000000000000000..4bb3e9fd5c1747b52ac2709676f2a8ade825d332
GIT binary patch
literal 322
zcmZQ7PAw`+En?vK&&0&0Ue1@w!BJGEq4l4MiGi)0&xs?|Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EM*g!gq$}~VqQ|&=YnIJ+49cvX|*QqlWwJ<QWGyLaZ
zVC)TLU@X#N(r<ah^#4CcupSdzYVqb&Cbsfaj<PO?A_g$vTFby_#l**^S^huuIY&`h
zDFb7f{eQ+H1}!cS$;9wTfq|QWhlvHOnt`$9(OOLg4n_tR1~8k2f%8RbYH<<M5r}gj
zeq&&;Zh4f*z{sQpabuai*8ks9`->PK3AAwhho}Sv0@F)21_p-zsmg0v7&tjNci68r
Y3|8x4Y<a}Su$F<dh=YNHGoN7x0FLig4gdfE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9
new file mode 100644
index 0000000000000000000000000000000000000000..68e78cd81e31447ba783d2c72519b09175a6370a
GIT binary patch
literal 23
ecmWek&PdG5OU+?eRhIgnv4~;Hqovji91H+xD+oXU

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a b/test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a
new file mode 100644
index 0000000000000000000000000000000000000000..6b3f2b97bba493b02023dfff72743239e81f88d2
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qv=|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@C<Y^Mp0X7Yq#6Esqiz7$Jg1W%gSCe>3ba
yVtmxX@gF9pp~du)je&vTf2uOb7!J-I_G=A-)jAkk9<ed3W#BC0VBp|n*Z}}fXiioD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0
new file mode 100644
index 0000000000000000000000000000000000000000..7b9d3a86e61aa6ddc073417c18ea6cf346bffe34
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lBTm1;7rReY_^Sk%(a@SlT$@lYrOW04k<
ze#;}K|Nl9H_1IF2H>WbOm8Wu)bvYC<fC1N921YAZCO$UJ^8cyNIf}|k85kL~xc-Bz
zWO$^&z|FwJ!~#~y2qGC<9<60z;B-z+EiPg@g7Aa7)_(>D>qjjNjENAzqB47}|Gydb
z7co9+;rI^|)6imi$;QCI@IO@<WDE!A4*RtR!D=0hEsxk3)-rGwaWHUjGVA~V=weOu

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243
new file mode 100644
index 0000000000000000000000000000000000000000..ad8031d5784d4e3b0f6c2916b32a39511073f2f2
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?oYTSHOCU$}~VqQ|&=YLB?5e6d`o1ReY_^Sk%J6(9ZCm
zgMqO(l!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3Ik
zMP;Q7jAi!!8H*VH|NsAAiwneJVtAy$z|FwJ#0u8Jz}WI=ttJBpBLfQqn9ah#`64y7
zxQOWp$VsUj9A#x1TK^dstXm!>GB85KipuP@{{NQRU&Q!GpoQZ<Oi)9M=_MNj1H=DR
j<+UsfoE)4x?AICwt93B8JYr*5%fM+>#KFM9$*=<e_wZRh

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad
new file mode 100644
index 0000000000000000000000000000000000000000..d8445c7bb8fc0f0ff0c95e7756ea054caa665ca2
GIT binary patch
literal 275
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}L9(3Bi6hls&6bIctK2@dsEmnEfq{*I
zIrabDqB151#v%qLHjq{c2F6EMz*>vSG(c)o?TgBo<RGRMfwVw$tW|ui&REpKz|hX{
zpM!z1H<W>~NQ+6o<q^~W{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C
z97ScN42)&={~3!Iw75Vd6T>3~25tr(CKj-A2F8|0YZ*8g8CV#=Ocn;t7pbYmMNqGS
dd<L?>3gj2I^8cwEMNAyQdPg8mg?gNU0RU}4MnC`n

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f b/test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f
new file mode 100644
index 0000000000000000000000000000000000000000..9a1d60d18840a361e33d6ae7aa31b292d6ee816c
GIT binary patch
literal 211
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmr=j17pi0
z21a#8hDS_n<!c!@IT+S5q*@h~aqyM1G5t?1V&Vwa0~^Va%EVTl$`M*r#>B@~{vTv;
z>VL)}2CyyaU~B#}FoMlvVtB+<mim9~eFn}V4n_vXmVf^t7OiDr;N)OpVBlaZ;!t3C
p)WXET$grHDh=D<Ctp`|;;ZX}G0|O(&qqQJ+tz}@~;9!`{004s0Ig0=Q

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749
new file mode 100644
index 0000000000000000000000000000000000000000..cd03dcdfc4d87c34e602ad35398c2f631ae752ce
GIT binary patch
literal 324
zcmZQ7PAw`+En?vK&%{>Fr@^6>TE<cIpNWZqt(=b|b(Wef6B}2#eQHq|6Q2SD8$;^<
zyG3P842(q#Ol%;15)6!wuCRf$rgCr;m1$`GXJB9~=Su~#K{`|IQFX3We67w{)Y8uI
z>;M1%|2Y^K4}~%?7HKi*w>)C{|DPjRkBKd{cylTfTg#)h<*6KHT@FPIV8FGOfzgVU
ziH}XQ{D10mj-s+s21W)guKysHFg#LV;AY@qVgadSVc_K8WME)qU}RumY<aYng@MyK
zHMO{i=?JPTty>-?GB7f+l`}Jdoolc4|2M<_BF0B8ke~p2L5S%k8v_Hw|5Rm=IUJlj
a?AICvt93B8JYr*5%fMO0!N9@Eumb?3{a42T

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f
new file mode 100644
index 0000000000000000000000000000000000000000..b4298ca8c6ed0973579bc0ebaaba135c9df8d68d
GIT binary patch
literal 460
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhok)xNx_
zjEPTyfsG;c|J|Z8CI-eL1|~L;MhOPSM_0fai^?>hhN384tN2=-v8bh;;Xelh<DpOn
z#v&~y{gy{e|NnCY>oKvV7H>{vVk=MODC=S<VgLiKwG50_tW11tn&tmfpK}zIl`=3g
zXmR~#EMj0}U}9iqVBlupVPXNRWdxCoEsxf+FmO7jrWO}59YOX61A}$TqeKQqh*)tM
zLm3kv*fx-N*vkK>auhLvodF63j#MVLR1SnpnRV)a#v&$$M@(hcz?Qc#Ffed17I7#r
zJZfS1&&a@71PT$5A<z(EU|?)n3s%DLi0vsTcr+LoA91c_K!iZcqqUD17`nI^7#La@
z86Gh*Fsx<ZVBna=z+kWS|2M<_BF0B89RDHi1%>EKHU<WU|EbC#4{~tsuwQEstk%KU
S@`#OLEdyr}2LlHu!wvvj#CF>N

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c b/test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c
new file mode 100644
index 0000000000000000000000000000000000000000..accca98d9da39481285b2510aee3f2c57e37c25e
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlutvs5SJ;qsGB7ZLj43M90BKCMN7cAi@wGZ*QA<0+
ze~wjU42*|D85oPSnDkp7G5!C~5v<3=mRh_ym5Ht8(c1D<j<PO?A_g$vTFbzgYQ@UL
z$EI2SKlM3BQdubjBZC&#e~>#E9w{(zGw?96fRwT@aB^@mFfcMOsxvUQJX*`b!0DWt
zT3p0*1l5t&Esqiz7@640nHl&}If}~cwf=()oAPMsZ-)IvjE`D4{zEhrm1zhuy<}rx
oVECV^3^I;`bBFy}!(g=z#+FBH4Au-B3~L!Ui#QlKI2m>T0R3}Yv;Y7A

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b b/test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b
new file mode 100644
index 0000000000000000000000000000000000000000..bcc82a00d586179450c68efe420c5f07d3a58d67
GIT binary patch
literal 344
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKj}|IZPu$HbOeyg8MLt>w|$@>GtpE{7rpFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFtLD?vM_LRa56A3GB7eQFt$8e%fi6v
zoSIr(#B>DJk=8Ab5*Zko*vgq1_)<BF%IvlNgAAMUXz6c;{Y8wAS~&hgG!&I-2r<26
qV_;zTpQ;Qpj)QZD{aV9dwGPIXM{Eq%3>*w=890kL7&tf?b^rh&)LXRx

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c b/test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c
new file mode 100644
index 0000000000000000000000000000000000000000..37ef2a660e674a0ff21288e4c6bb4c2d4ec8ee1a
GIT binary patch
literal 344
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKJg{r}GqtjENbTD&=xiLK?)+VWJ6GKV4tFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e%fi6v
zoSIr(#B>DJk=8Ab5*Zko*vgq1_)?3??6v-b%$o9O>2HSpMU0PHIQ~P_7nNxUF}-AC
qU|{&4sthuXgL8-dS}Vg~wGPIXM{Eq%3>*w=890kL7&tf?b^rk9hg*CA

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd b/test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd
new file mode 100644
index 0000000000000000000000000000000000000000..af6a83a11c87eeb73a5f1ab280df9b069b01880b
GIT binary patch
literal 330
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69Zd0U$7HLs^D98do^1oHm-8})S@yb
zJ_QCghSdLei^`Z77>gK~*g)DP7#JU20qZU*(*P+=wFfDM7+3_>(GS+LR`InuV^IqO
zLp#HN4hF{FPzJ^#EhhbzM@;|!a|G)#v85JoPGw>%Pvt1<awuW|1Fp3Uj8?2nd~BNK
z|5KlH6qS`SFqYZ>XDnj)|NsAgEiMp?iQ$m~12+Q?6C+p)17pjhwVDhZj0`LcU^WW_
z=Zn<T;v%La5I1p@fjr5;VBPX4k%18+R#axM_5Zij{vyUl0xcZ>VS*Z3OfT6O7#RMi
jDz9Z>;N;-kVZYWWSgnJx<q;dhS_V$5A`S))PKF%-+d*5f

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b b/test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b
new file mode 100644
index 0000000000000000000000000000000000000000..38bf1ad34ca63a61aa7d9e574fafab6029881650
GIT binary patch
literal 195
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72zi7mM-wMc`3@zIsFit6f&
z%|$Kk4F5S87!PqUFffF+JYxF)pCee0iLE$wb1D;Cc`8R)7XyP}az<iaUTO{l7;vp+
zU}R<DV=Mok%28BS%D~8=#q}R#Hp3$Y25ufk1_p-I)Z!whBZ&+QjQfiiAGL5WtSU<d
nDVg$UsWk(~e<rqaK9F851}1$CHU<WU|EbFMYYl?+I*J$ovFJ2N

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a b/test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a
new file mode 100644
index 0000000000000000000000000000000000000000..db3b2a2ae0827f9b9f529b3aa48819afce0cad00
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@C=@><I=2>y}4}42*24eC13WMP>F{|9>;=
zFJgSu!to!X4&+y+muw6S4F6M=L8fqU?yz5L5Uke0*z$;tVJ!n^5eEYYC&LZ^2a8S|

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243
new file mode 100644
index 0000000000000000000000000000000000000000..ad8031d5784d4e3b0f6c2916b32a39511073f2f2
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?oYTSHOCU$}~VqQ|&=YLB?5e6d`o1ReY_^Sk%J6(9ZCm
zgMqO(l!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3Ik
zMP;Q7jAi!!8H*VH|NsAAiwneJVtAy$z|FwJ#0u8Jz}WI=ttJBpBLfQqn9ah#`64y7
zxQOWp$VsUj9A#x1TK^dstXm!>GB85KipuP@{{NQRU&Q!GpoQZ<Oi)9M=_MNj1H=DR
j<+UsfoE)4x?AICwt93B8JYr*5%fM+>#KFM9$*=<e_wZRh

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index efbe8f9c0d..fb651015b0 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23344,6 +23344,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e"
@@ -24026,6 +24048,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
@@ -24290,6 +24334,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
@@ -24488,6 +24554,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd"
@@ -24576,6 +24664,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c"
@@ -24862,6 +24972,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9"
@@ -25260,7 +25392,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25282,7 +25414,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25304,7 +25436,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25326,7 +25458,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25348,7 +25480,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25370,7 +25502,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25392,7 +25524,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25414,7 +25546,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25436,7 +25568,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25458,7 +25590,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25480,7 +25612,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25502,7 +25634,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25524,7 +25656,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25546,7 +25678,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25568,7 +25700,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25590,7 +25722,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25612,7 +25744,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25634,7 +25766,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25656,7 +25788,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25678,7 +25810,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25700,7 +25832,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25722,7 +25854,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25744,7 +25876,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25766,7 +25898,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25788,7 +25920,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25810,7 +25942,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25832,7 +25964,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25854,7 +25986,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25876,7 +26008,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25898,7 +26030,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25920,7 +26052,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25942,7 +26074,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25964,7 +26096,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25986,7 +26118,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26008,7 +26140,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26030,7 +26162,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26052,7 +26184,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26074,7 +26206,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26096,7 +26228,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26118,7 +26250,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26140,7 +26272,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26162,7 +26294,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26184,7 +26316,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26206,7 +26338,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26228,7 +26360,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26250,7 +26382,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26272,7 +26404,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26294,7 +26426,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26316,7 +26448,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26338,7 +26470,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26360,7 +26492,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26382,7 +26514,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26404,7 +26536,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26426,7 +26558,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26448,7 +26580,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26470,7 +26602,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26492,7 +26624,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26514,7 +26646,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26536,7 +26668,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26558,7 +26690,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26580,7 +26712,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26602,7 +26734,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26624,7 +26756,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26646,7 +26778,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26668,7 +26800,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26690,7 +26822,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26712,7 +26844,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26734,7 +26866,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26756,7 +26888,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26778,7 +26910,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26800,7 +26932,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26822,7 +26954,711 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26844,7 +27680,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26866,7 +27702,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26888,7 +27724,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26910,7 +27746,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26932,7 +27768,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26954,7 +27790,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26976,7 +27812,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26998,7 +27834,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27020,7 +27856,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27042,7 +27878,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27064,7 +27900,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27086,7 +27922,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27108,7 +27944,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27130,7 +27966,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27152,7 +27988,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27174,7 +28010,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27196,7 +28032,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27218,7 +28054,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27240,7 +28076,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27262,7 +28098,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27284,7 +28120,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27306,7 +28142,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27328,7 +28164,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27350,7 +28186,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27372,7 +28208,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27394,7 +28230,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27416,7 +28252,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27438,7 +28274,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27460,7 +28296,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27482,7 +28318,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27504,7 +28340,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27526,7 +28362,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27548,7 +28384,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27570,7 +28406,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27592,7 +28428,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27614,7 +28450,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27636,7 +28472,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27658,7 +28494,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27680,7 +28516,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27702,7 +28538,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27724,7 +28560,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27746,7 +28582,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27768,7 +28604,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27790,7 +28626,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27812,7 +28648,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27834,7 +28670,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27856,7 +28692,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27878,7 +28714,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27900,7 +28736,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27922,7 +28758,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27944,7 +28780,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27966,7 +28802,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27988,7 +28824,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28010,7 +28846,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28032,7 +28868,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28054,7 +28890,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28076,7 +28912,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28098,7 +28934,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28120,7 +28956,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28142,7 +28978,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28164,7 +29000,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28186,7 +29022,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28208,7 +29044,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28230,7 +29066,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28252,7 +29088,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28274,7 +29110,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28296,7 +29132,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28318,7 +29154,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28340,7 +29176,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28362,7 +29198,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28384,7 +29220,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28406,7 +29242,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28428,7 +29264,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28450,7 +29286,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28472,7 +29308,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28494,7 +29330,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28516,7 +29352,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28538,7 +29374,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28560,7 +29396,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28582,7 +29418,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28604,7 +29440,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28626,7 +29462,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28648,7 +29484,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28670,7 +29506,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28692,7 +29528,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28714,7 +29550,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28736,7 +29572,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28758,7 +29594,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28780,7 +29616,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28802,7 +29638,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28824,7 +29660,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28846,7 +29682,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28868,7 +29704,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28890,7 +29726,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28912,7 +29748,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28934,7 +29770,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28956,7 +29792,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28978,7 +29814,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29000,7 +29836,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29022,7 +29858,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29044,7 +29880,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29174,6 +30010,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc"
@@ -29240,6 +30120,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
-- 
GitLab


From 52cf871cabb5715b1b461c16200f7c6ef22ff3c8 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 23 Apr 2016 22:54:21 -0700
Subject: [PATCH 163/525] Bug fixes

---
 src/core/ext/client_config/client_channel.c | 6 ++++--
 src/core/lib/surface/call.c                 | 3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/core/ext/client_config/client_channel.c b/src/core/ext/client_config/client_channel.c
index 94041c14d0..8a98a6bcbe 100644
--- a/src/core/ext/client_config/client_channel.c
+++ b/src/core/ext/client_config/client_channel.c
@@ -299,7 +299,8 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
     chand->resolver = NULL;
     if (!chand->started_resolving) {
       grpc_closure_list_fail_all(&chand->waiting_for_config_closures);
-      grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures, NULL);
+      grpc_exec_ctx_enqueue_list(exec_ctx, &chand->waiting_for_config_closures,
+                                 NULL);
     }
     if (chand->lb_policy != NULL) {
       grpc_pollset_set_del_pollset_set(exec_ctx,
@@ -397,7 +398,8 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
     cpa->on_ready = on_ready;
     cpa->elem = elem;
     grpc_closure_init(&cpa->closure, continue_picking, cpa);
-    grpc_closure_list_add(&chand->waiting_for_config_closures, &cpa->closure, 1);
+    grpc_closure_list_add(&chand->waiting_for_config_closures, &cpa->closure,
+                          1);
   } else {
     grpc_exec_ctx_enqueue(exec_ctx, on_ready, false, NULL);
   }
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 00b2b86f5c..fa12b6ea61 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -1063,7 +1063,8 @@ static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
   grpc_call *call = bctl->call;
 
   gpr_mu_lock(&bctl->call->mu);
-  if (bctl->call->has_initial_md_been_received || !success) {
+  if (bctl->call->has_initial_md_been_received || !success ||
+      call->receiving_stream == NULL) {
     gpr_mu_unlock(&bctl->call->mu);
     process_data_after_md(exec_ctx, bctlp, success);
   } else {
-- 
GitLab


From 1d11798c78226ab99d3e9e60c223c9ab3e38ac42 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 10:34:36 -0700
Subject: [PATCH 164/525] Expand corpus

---
 .../0542a0e5aeb1658cc965724bfced56770569263b  |  Bin 0 -> 316 bytes
 .../070c7005e63abba72c6bc1a0ee6d44e340f2d2be  |  Bin 0 -> 319 bytes
 .../0b6f0ea99a329e054032e6c292b99c3bcad0c9f2  |  Bin 0 -> 299 bytes
 .../0d16d6c2c128ac4ee7b596b763822b4194968533  |  Bin 0 -> 343 bytes
 .../16a9beb811f836a444172a5da9290b47d77c32ef  |  Bin 0 -> 299 bytes
 .../2a600cae342e8e9e23406bb1e76133f48d936766  |  Bin 0 -> 299 bytes
 .../2db3a358c43c179a728f0650a00be295e88f8060  |  Bin 0 -> 349 bytes
 .../42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04  |  Bin 0 -> 368 bytes
 .../45657516294c5426c490e6aa522a79077c972856  |  Bin 0 -> 299 bytes
 .../472adcbc2a1970f2392e596c28bd44087b8f3431  |  Bin 0 -> 345 bytes
 .../47e402f3386843e0055431750f30b710e10295dd  |  Bin 0 -> 326 bytes
 .../4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb  |  Bin 0 -> 347 bytes
 .../5677b3500e9353856c8d87fbe1476a22df4231f8  |  Bin 0 -> 345 bytes
 .../5939ec5fd8f4e02ff0720cfa3ef685876bb3549d  |  Bin 0 -> 299 bytes
 .../594d676c8c05d75ba8587d9e900850dff5e21ff8  |  Bin 0 -> 1008 bytes
 .../5be956066b72ea1799e333a7bd17fb0b8fc2b91c  |  Bin 0 -> 493 bytes
 .../6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2  |  Bin 0 -> 342 bytes
 .../70bd921a3d4700d49ad6b99e0cfee42c36a13b3a  |  Bin 0 -> 325 bytes
 .../72c363848fe754c23e1f9f2acc2f025666417d2d  |  Bin 0 -> 539 bytes
 .../77d4480781e1e1a9d5d5c02ff53fba10127f8b6a  |  Bin 0 -> 296 bytes
 .../7a0b2f8659484409af6a76d1df273b8dc66e3439  |  Bin 0 -> 344 bytes
 .../80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a  |  Bin 0 -> 295 bytes
 .../85220ed0c63891f376bee53c785b407fd9548f8b  |  Bin 0 -> 326 bytes
 .../8f8b66436bade06813ec9ed4fce6774914b73db3  |  Bin 0 -> 296 bytes
 .../91e2f574e7ceb7f69a93011aac68903cd014a6c7  |  Bin 0 -> 549 bytes
 .../9d91fac343dd8a7848746ca5472fb1452052bfb7  |  Bin 0 -> 344 bytes
 .../a6914c7bbe81fd2138bc20e63b27c0cadd0471ee  |  Bin 0 -> 346 bytes
 .../ab8c19341f57f87c38055a9aaee515f8e65a33f3  |  Bin 0 -> 553 bytes
 .../b23f1233d0e21c4aaaebe2fe5931903698b2408c  |  Bin 0 -> 512 bytes
 .../b29d3c87c76355ce07ea4d4c354bf9d40294abb3  |  Bin 0 -> 324 bytes
 .../b37f3e85a80b5dcde6b48b46f162418fd2ee83ec  |  Bin 0 -> 232 bytes
 .../b51853fe4f799f7f959922fda1b3500668a45157  |  Bin 0 -> 340 bytes
 .../c978dc651b961f2d48aad95b40ac761b3467f212  |  Bin 0 -> 276 bytes
 .../cf26c6969c0f649a2ccd780edb8b3dc314ff7701  |  Bin 0 -> 343 bytes
 .../d17e7451bcef39ce542d84f2539f9586ea35f21e  |  Bin 0 -> 318 bytes
 .../d194d6aa501f75ed24fc399ee594fb77341e5d38  |  Bin 0 -> 295 bytes
 .../d2956eabd7b8b9d6b136731a3a4fa077f184aa13  |  Bin 0 -> 342 bytes
 .../db7c4b56e701832634e61cc0b3ab5206fabf518d  |  Bin 0 -> 327 bytes
 .../e57acbf9e36c755cc50b00bc868c01ca1c1f6842  |  Bin 0 -> 344 bytes
 .../e5d120938961b8ed1e0f46e342683432b9081dd1  |  Bin 0 -> 343 bytes
 .../e6660a661f0adb7be809c558ca15573add24f686  |  Bin 0 -> 554 bytes
 .../eb9faf5efb229c562a6825f930b8316f2aff2864  |  Bin 0 -> 325 bytes
 .../f37b108d4dca7cdd24f464ad880a57aa038528ae  |  Bin 0 -> 319 bytes
 .../f59e8ceab587254d408a4af86cd938d896eb0b6d  |  Bin 0 -> 354 bytes
 .../f9540ce65b08ec33d9157d03bf5231b767460d4a  |  Bin 0 -> 176 bytes
 .../fae6e98220e0943926fe570bd32ea7f0dcd34feb  |  Bin 0 -> 297 bytes
 tools/run_tests/tests.json                    | 1436 ++++++++++++++---
 47 files changed, 1224 insertions(+), 212 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b b/test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b
new file mode 100644
index 0000000000000000000000000000000000000000..15ed709aa60099879f6ae8241daf474359744dde
GIT binary patch
literal 316
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuyO{*mPczDI2ajN7{E*x2F@3$sZ0<#2C&aGwEi<N
zShqY%WMG6ku*_cT|8J@NMU0OGS~&j01U0mnUa~PTF#JzdUdzJ3$-%k9eyvfkS_fmx
QBet~+oJAZA9Gnb00CY`J@&Et;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be b/test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be
new file mode 100644
index 0000000000000000000000000000000000000000..2ca90497528c900b52ecf0d7ce10dc1f2cd386b5
GIT binary patch
literal 319
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?A6sVm|J3IkMP;Q7
zjAi!!6^j_Oxc-A&!0<?cft!Jci3O~jfwAS$T1^HHMg|rJFq?&e^F?ZEaS_uIh;tx*
zV_>jud6dY&2oWnPv)B6nTWWt1<0F9<j{h)04K1dZYzzzx|5KIMvM_LRaPF{QYZR>3
U!PxSMjbSYVXAuVj2PeZ00Gb?CHUIzs

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2
new file mode 100644
index 0000000000000000000000000000000000000000..e165c8c6794db524ea1f4d4312e8c92b5d096f20
GIT binary patch
literal 299
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@C=@<cTx?85pcv9wjm`vZeBsGjSA^*=zm(
z&9J|S@lgxMe~7}OGL1D_FWDFv82+a!gN)(e++n}gAXu$~vE>mP!&(MTkfS&lI5-)0
F004o}Pm%xt

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533
new file mode 100644
index 0000000000000000000000000000000000000000..6ff033ed6274c9383afac6a0d05eaeea3374b2d9
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#N|(fOMwXqv~9%_*$K@sHL6Z
zKgX&v2F63742(ruO!_U46q)}2=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?LwPI!B
zW791EpZc7msH~KMkwJ^={~3@=7#=Awa5L~QF@e;wFmQ5kGB7YQFfuSOwme$P!ocaA
znp#}MbOhCv)-8_`85o(^%9$DXQj5y$wf_HSEMl1QXz6c;{Y8wAS~&hg)EAX$2r<26
qV_;zTpQ;Qpje~QC{aV9dwGPIXM{Eq%3>*w=890kL7&tf?b^rh*Yg`5Z

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef b/test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef
new file mode 100644
index 0000000000000000000000000000000000000000..3b40d05b74e3495a975cba861520c750582bc180
GIT binary patch
literal 299
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI&_ZCN_{h2?oYTSHSv;$}~VKQ|*yeYBH@=e67w{)Y8uIpM!z%P$&aqkrtDF
z%Oj@$|2cy7*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{xcRa
zFflw*VBlupVPXNRWc>gC|9=pRvE|WP76wk|)YRf4rXvV%sB8UaV6cAF!oZja5iBaR
z*ZTjPVSf?hqZW?;Ffk1+rk89C3=IEMl|jaEaPF{QYY?o~!PxSMjbSYVXAy@60|zI=
F4gfIOQKkR@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766
new file mode 100644
index 0000000000000000000000000000000000000000..c66d5d63e2c9c5b0235cae1a2b817e78bedc61fb
GIT binary patch
literal 299
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|(ceu2p=k&REpa&hVduf$>l%17ndE
zll~*7|Nl9H^_bXFi#Mk-v6ZKClyx~2F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#w7C8=
z7HKgsF+5UW;AY@qVqsulP+(yE|NsAgkS4~KM{8LaIGs~di;I|!FtL?erE-8Ar1hVH
z!Mf#9A_F56)Q$F9|9>;=FJgSu!toy_rlH03l8u3Z;eV<!$P^CF9rkNYg4H@0TOP47
PtYzRV;$Yz5WY_@!R-94}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060
new file mode 100644
index 0000000000000000000000000000000000000000..9108f0f1df36b6b76b96bfb9687d05c433743b95
GIT binary patch
literal 349
zcmWek*2qZA%S+8+U@}fEDoZV5;P}tP#8%Fi%E3`orlIwpiHU)&oR1^bUd@(?jjP-~
zwWy4VPl17rA@%>=qB151#v%qLHjqXM2F6EM*pRg{FffA5DJs(d=}fgRDpN$#xmNMD
zI%82wJHvmDRb>o}he8<`i?o>ZTOKjy{{PPrtjENbTD&=xiLHfW?f?J(|Cg6NN_8k=
z00XYI42-E(tW11tn&tmfpK}zIl`=3gXmR}qIfmhp0s}V#4-*qeDGLK92PXpqBLgD?
z17pjhwJZ#r&Z()zMNCIf9ctb3D3O7YiLIQOfiJbF%wFq1$gC-kmi}gt+F!)@sD<M{
yL_<-Th7i+BHU<WU|EbC#<2X2X*snDVR_kDFdBnzG&A`F1mVvW~gMovSVFv)DykDvS

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04 b/test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04
new file mode 100644
index 0000000000000000000000000000000000000000..b9b569f10c822bae0571ce3fae68c8e1a3c44ddb
GIT binary patch
literal 368
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bJHtK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!U|JV}^fE9of($Au(_mubDo?dX)w)*k
zwK`)_OFP4Vj#Xt0jE6!Q7>l%+^jjV&GX4M05v<3=mRh_ym5Ht8(c1D<jxvWL1~A}S
z%fOgw#mWS7I3Js4`Tx}C97ScN42%p~T>n9?VR)p#z|FwJ!~{~#!obPF$-uzKz{tSB
z*z#yC3j?QfYHD#2(-D|UAr7@}d6dY&$OH}vtyN{IY#^hiJX&g9&dk7<T2yAQ^&cwo
zn_+(u<D(Xi{}2O;$~1(SUa~PTFmN#ZPgMq4z`?o0eyu^US_fmxBQ^$W1`dX`44e!_
K91I+s3_Ac$++>UZ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856 b/test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856
new file mode 100644
index 0000000000000000000000000000000000000000..6b9c07e63dcce0ddc9047db39cbd5d3f4ea15cd0
GIT binary patch
literal 299
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|(ceu2p=k&REpa&hVdufiaYUu}F(a
z{}I#w{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42%p~T>lx1
zv>2Ee9w{(zGw?96FfcGEFfjiA|NlQo6JyJxwJZ#r&Z|;Wi;I|!FtL?erE-8Ar1hVH
z!Mf#9A_F56)Q$F9|9>;=FJgSu!toy_rlH03l8u3Z;eV<!$QTaJ9rkODgVj11TOP47
PtYzRV;$Yz5WY_@!9j{UK

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431 b/test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431
new file mode 100644
index 0000000000000000000000000000000000000000..703f60d9ae3e5e20bb70c361e1e4d558a469e0f7
GIT binary patch
literal 345
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKj}|IZPu$HbOeyg8MLt>w|$@>GtpE{7rpFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T15qA`S*7hDQnv+zdQSEFiTk44fRC3=E76j0_BnEsxf+
zFmO7jrWO}59YJ-ab<3kf21X{fa%Kj;RF0xDd#(Tf8H*UEJX-pjVSf?hqZW?;5Di6T
u8bVAj*%%lY{--K~jN{<kVZYWeSgnJx<q;c$H3J93S_aM{4h9ZRh8+N3Pg}hJ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd b/test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd
new file mode 100644
index 0000000000000000000000000000000000000000..c390193f63d9c79160bfbc8a1619112c43f3f2c5
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`c$yPOs=b;m6B}2#eQHq|6Q2SD
z8$;^<yG3P842(q#Ol%;%5)6!wu7LFxm1%&KrrLv)LX49_=vb@xTAi_|g@K`+;Xelh
zV{d2?BZC%`e#;}K|Nl9H^_bXFi#Mk-v6Yu{lyx~2F@OQrS_VcdRwh0+&GP@L&pC?9
zN*Nf-?Ef<sG5r7k|GyR&h{eS4NP&Tyfrp6+tc8KG<<VMA1`b9B76vezg@KRrMQUmh
z(-DZ1ILbgiWMHsvd6dY&2oWnPv)B6nTWWt1<0F9<j{h)04K1dZYzzzx|5KIMvM_LR
daPF{QYZ$E7!PxSMjbSYVr&SRL0|zI=4gg%PSxEo@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb b/test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb
new file mode 100644
index 0000000000000000000000000000000000000000..54856adc2c95505adaeaa321475345c5da7cabfc
GIT binary patch
literal 347
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0H_BL*fmkVXjx#z$A!m^6^|GB7ZL3@R$q0BKFNN7cGk@wGZ*
zQA<0+e~wjU42*|D85oPSnDkp7G5!C~5v<3=mRih~%Cx!V(c1D<j<PO?A_g$vTFbzg
zYQ@UL$EI2SKlM3BQCTSiBZC&#f5svPCWc1}4BQMnOe`R!EDW3+oD2+%42+Bn3=E7d
zkJhp<a5|@^78fxcfqK!ph~a-3gN9biqeKQqCbn{B2EJ5|qB47}{~+V0JX-pjVSf?h
zqZW?;5Di6T8bVAj*%%lY{--K~jN{<kVZYWeSgnJx<q;c$H3J93S_aM{4h9ZRh8+Nm
CfLopb

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8
new file mode 100644
index 0000000000000000000000000000000000000000..0ae5f8fb748fc83a2808c9b042e14db9e5437411
GIT binary patch
literal 345
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKJg{r}GqtjENbTD&=xiLK?)+VWJ6GKV4tFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e%fi6v
zoSIr(#B>DJk=8Ab5*Zko*vgq1_)?3??6v-b%$o9O>2HSpMU0PHIQ~P_7nMEH5Mp}C
r#=yYvKUEoI90%tP`?Xev!D=0hEsxk3tQj~M)-rGwaWHUjGVA~VVDMaE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d b/test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d
new file mode 100644
index 0000000000000000000000000000000000000000..416f83de394d4ebabd72d40b738d9d25a51b9dce
GIT binary patch
literal 299
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|(ceu2p=k&REpa&hVduf$>l%17ndE
zll~*7|Nl9H^_bXFi#Mk-v6ZKClyx~2F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#w7C8=
z7HKgsF+5UW;AY@qVqsulP+(yE|NsAgkS4~KM{8LaIGs~dixruUFtL?erE-8Ar1hVH
z!Mf#9A_F56)Q$F9|9>;=FJgSu!toy_rlH03l8u3Z;eV<!$P^CF9rkODgVj11TOP47
PtYzRV;$Yz5WY_@!IuB92

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8
new file mode 100644
index 0000000000000000000000000000000000000000..def1bd1ad8aa8dfcea97afc2c566ac5d67928fcf
GIT binary patch
literal 1008
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aHdki42L6B}2#
zeJV&ZN2)!HTU5rxRBq3~$Ce5aNwqI3W8za_U}H%Af48WNiGi_*fr)KjS!$661LLDB
zYZcYi8Jmk*+8O?HFfbkpZF$7>|362t9ur$}>SmDHsT^fp3{b$emVuF#iI1)Pe=0{&
zSt$b}gBI6+ka-M`6d1U9m{>vTQd5hIn2sbeFfi^fVtmxXfnhhu*AfuBU#l}>vpTgH
z*=i;RCXl%Z%Qc^CV%pBY!^FbC#=yY92vY0}aRn%BU;)d(z}WIAk%18+R#axM_5U{m
z#EJizu!Rxao#5ChD$@XkH+pccRYdUv17pz|Ehc?LC?a{qp$OzM1_qEvtU$r2S^huu
zKg>B=O!^ui=l@Stwtvo1RE`|FFb8Nc=|h#QWntjt;M`%q78LLdJWK|`dL4`{kJd79
z7ICnEtpNuENQi}j6A~H>3`dyQAc?|06~)8q&{To&G00VjG|9lg2;vY9f>mXpG{nGI
zge44G9<4=0g*CRQSPSw+5d$dEz=K6Yi|HjBBmpq|PgREdyBw4*kwY{U9;DB)q)l+@
zU|?VX2OB7jFoKf<$T;WJ;@l#pBOo7RaUU}SA1JNcYyAf$^eK;)BGL>jR)jz<WMKGj
W5Ud7@gH$#Ka5OM*a5C&rUJC%>qY7^T

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c b/test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c
new file mode 100644
index 0000000000000000000000000000000000000000..701a108e74299271df5fb9f67a24eee7ed976f23
GIT binary patch
literal 493
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSXIWrcqo*Cu}F(azlG_M;{X2~!Fo(=sl}U9nb=w$tu0UGD03)d00XYI
z42-E(tW11tn*URua}<@8GB7e|as3CmgW-_^12+Q?6B7d?NG&G^Cj$c`h|SpYXe|o^
zr*mp*aS_uIh#Rkfy~n^{-SQ}rff3|oK9HB~l^NK|nHl&}i^}Y^{)3F2@@VOAhW$m1
zk6JkXL$nr^X$UdBWMg9EVqjqSpIV-tRa9opr=Yx+gMpKQg>wfR0~6H8bxd0S85ls;
zGk^lE{6EMFCI&fBprsa-6@jEU*D`QG1A>9$KPU!3eqjSgh6YrDIwYVN7$3DfTFcPI
zz{SV#|33qV{VayHhQVqbj4hAY7_1pM7}hdy7I8onIWRDAa)5#X6aXBY3|u?@|7QRI
D@6d%{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2
new file mode 100644
index 0000000000000000000000000000000000000000..a49762b4d3450d9e1278eeb20106694c151484f4
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#N|(fOMwXqv~9%_*$K@sHL6Z
zKgX&v2F63742(ruO!_U46q)}2=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?LwPI!B
zW791EpZc7msH~KMkwJ^=Kgb~rj}#cV8F-kOKuTE{I5{{O7#JBC85kH_9<60z;B-z+
zEiPg@g6c@?mPd&Uj7)6h%nW>~MP>F{|3PL=d9?I5!~P=1M=c!xA?l0DG=!L5vN13)
m{7+Q|na07n!+xz%uv!OW%Of@hYX%O6wG5m^91I+s3_AdNSX(;)

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a b/test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a
new file mode 100644
index 0000000000000000000000000000000000000000..86d3175931e5b6718602c26c004034ce188fc5bf
GIT binary patch
literal 325
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EMz*>vSG(bvI?LkT*rWGM{tW|ui&REpKz|hX{pM!z1
zH<W>~NQ+6o<q^~W{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN
z42)&={~3!I{{R2~UyBRGVq$otz`)JG!^8&G!ob+_Xssp#2O|Ru1DMUi!1*FIwYZ4s
z2*gPoWgrhSFj%)dN@QS!h!vIDYyH11wZDk*kw6Q_f0&?#7Sl_RssB@z*Rn8ha&Ydj
aUuzhw*1_2Fh>c+_1E*CH2LlHu!wvuoR#`*<

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d b/test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d
new file mode 100644
index 0000000000000000000000000000000000000000..03662b9d7747b1ffd3b8f5182f34eba797b38d6b
GIT binary patch
literal 539
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlutvs5SJ;qsGB7ZLj43M90BKCMN7cAi@wGZ*QA<0+
ze~wjU42*|D85oPSnDkp7G5!C~5v<3=mRh_ym5Ht8(c1D<j<PO?A_g$vTFbzgYQ@UL
z$EI2SKlM3BQdubjBZC&#e~>#E9w{(zGw?96fRwT@aB^@mFfcMOsxvUQJX*`b!0DWt
zT3p0*1l5t&Esqiz7@640nHl&}If}~cwf=()oAPMsZ-)IvjE`D4K<YVC?THQv2?oYT
zSCIV2z<B8Y|Ns9(!G0@dN@e2+*4unIm5B}PGYu<{YZ(|oJ_Gp+?5!dsZ}BpL{l&u|
z!mDP>$HT-3R?pbL;4H*|=^aLxcS@n2f%pOx1^-i-S~&hQv6b_Kq%^dcUa~PTF#Jzd
Z289g==MMX|2El3_ps-@#EaG5b007rdlB)m!

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a b/test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a
new file mode 100644
index 0000000000000000000000000000000000000000..6926e26c806e1753709f28e7f4c6c3a56b8a0c51
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|(ceu2p=k&REpa&hVduf$>l%17ndE
zlYYx1rvLvrg7ui#Qj0gIGO?AXa+GyB6fuAS*IEWfD^?~xHqG+?sn0oz%1Rj+8ML_m
zgY0B@q`<(<z{AACz`&ruzz9;$*z#yC3j?QfYHD#2(-9^%O^{<iuF?9>z+m0-D3O7Y
z3F<(5t^dCn_7^ceYT@_~6VuRQddbGX!0<m+8DtCx=MMX|2El3_j4hAY7}hdy7I83e
Ia5C%w09E5oWdHyG

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439
new file mode 100644
index 0000000000000000000000000000000000000000..83f1f339d870e0f75b931dc6792e1cefdc88f35d
GIT binary patch
literal 344
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvr58k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!ko7V!FoFy!D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKj}|IZPu$HbOeyg8MLt>w|$@>GtpE{7rpFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFtLD?vM_LRa56A3GB7eQFt$8e%fi6v
zoSIr(#B>DJk=8Ab5*Zko*vgq1_)<BF%IvlNgAAMUXz6c;{Y8wAT3{hkRHh-s^pcH%
of#H9uGRQa%&K>q^4TIG>7+W5(F<3KjFsx<ZEaG6`;AGeV0E@C*3IG5A

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a b/test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a
new file mode 100644
index 0000000000000000000000000000000000000000..30dacaec32af596654671a928a1dc3bca50039b7
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN!oa|wz`zJn&)D*4Eeivub82dF5z`T5PcSf8w>(N@V1$SjmDy|k|IM(!
yi1ASi$A6fZh8ELHHU<WU|EbC#Q#d$x*snDWR_kDFdBn!BmVvW~gMovSVFv&drcOZs

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b b/test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b
new file mode 100644
index 0000000000000000000000000000000000000000..aeb5046fa21d65fa81ad1b2e6ab3aad9afec0e53
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?oYTSHOCU$}~VqQ|&=Y1K7&>tT>7gI@T(_R%a|~VPI%y
z_|L(>*c-~gSfs_I-|~p*|9_5PJtnr);?1c{Y~`sOWnB(M3}C>umVwcVm5Gl{v;2SR
zbB?02QU=B{`~QqZ4FCWC|F6XbVlgp1Qefa_;9+6~Yhhq)d9+rOfrF8Og#pZFVc>j`
znp#}MbOh?dvN8>={|pS)Esqiz7$IUsW%gSCe@pEzVtgdf!toy_sG-I5l8u3Z;eV>~
iS{4RQ4$d9+YYl_dIv86Xu`#S=;It~@VBp|n*Z}}P=UI#Z

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3
new file mode 100644
index 0000000000000000000000000000000000000000..ab0b0caffcc90668d6a82f64bd2414c5c1983120
GIT binary patch
literal 296
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAom9ABMt<G4~($4UogMsl-C<9}W7L$I<
zBc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{)6mf
zc%;C<&A`LN0#?ZgA{kpAtz}{0bWTkzE@E1C1lbo14Aw1=5*ZlTQu)f6IEu>bwf_HR
z*k8o>sD<M{L><VpOfT6O7#RMiDuayS;M`%q)*x7|gR$ii8^c-#&LR#54o-$00CmMq
A!T<mO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7
new file mode 100644
index 0000000000000000000000000000000000000000..89f012a7fab6204f3618681fd6124663b08847bb
GIT binary patch
literal 549
zcmZQ7PAw`+En?vK&%{>Fms-T3p{37M#>VhJRoUJkSg)gqiR~O;YEhYn7DHLl|KI-^
zTOKhmwlFe0Vqz;_%fQLOu$Cd!s;G>KkFETFDn}6$N3b5)NRCt{w(?YtP=r)j>VL)}
z2Cyya93TV#GcYnRFt$8mVtB+<mim9~eFn}d4n_vXmVf{MGcYiNq;y%B*q9(r(eEf?
zg6IZoW+-E1VqjolY++*KDo@oaDzgTe%#muZW(yLrPdx~-S%HC#A@%>=qB151u-zc9
zN-!`!y0TXBwK`)_OFP4V4hF_Up)HS?{{II#oh`L^b1D-fLn=pE7XuV<tz}?jg?X^7
zlz~Bu3*?izObm|{7`PdDm>3xt80IrLr=}JcF&zOpBb5W}#{XdNB{DEDLIjJ-?6v;?
zX4qfE_^1UM-e7f1`fLmg3_t(>|NmckEeiuD2j>p^wV=RfY<a||z`zCyScnfEG5r4z
z4t+?_D|j$4v85I<aB?s)FmNyyaVRi6YT5svk)evAh=GA|tp@`K<5~tz28M?m43Ank
x85kHD9<2q1>skf|4h9Z}$qZ$wMH(Oh&b17P@OaenXe~n*0~Z5G0|Un_1^_U<m_7gi

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7
new file mode 100644
index 0000000000000000000000000000000000000000..f5412a5783451f62956f0e7635cd6ba616815b76
GIT binary patch
literal 344
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtoj=V^Sz8gXvtW
z_*$K@sHL6ZKgX&v2F63742(ruO!_U46q)}2=LptgV#_VwoXW)3@@Q>&Do2?^5d#=-
ztz}?LwPI!BW791EpZc7msH~KMkwJ^=Kgb~rj}#cV8F-kOKuTE{I5{{O7#JBC85kH_
z9<60z;B-z+EiPg@g6c@?mPd&Uj7)6h%nW>~MP>F{|3PL=d9?I5!~P=1M=c!xA?l0D
vG=!L5vN13){7+Q|na07n!+x!mVX#^UW6L8p25SZmhP4cwMH~zqoD4ev>I++h

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee b/test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee
new file mode 100644
index 0000000000000000000000000000000000000000..5fee5335d078d6341563f7eb21478e67e2b0d82b
GIT binary patch
literal 346
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKJg{r}GqtjENbTD&=xiLK?)+VWJ6GKV4tFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e%fi6v
zoSIr(#B>DJk=8Ab5*Zko*vgq1_)?3??6v-b%$o9O>2HSpMU0PHIQ~P_7nNxUF}-AC
sU|{&4sthuXLxF*Fhy7YB!(g=z#+FBH4Au-B3~L!Ui#QlKI2m>T0F=sGoB#j-

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3
new file mode 100644
index 0000000000000000000000000000000000000000..5b75ff52bc834fd1f037c928e06ec65c57647c41
GIT binary patch
literal 553
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?oYTSJ=w=KsrGxQ|&=2L8e)86d^RMReY_^Sk%J6(9ZCm
zgMqO(l!38Gi%Gxb5%d559Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3Ik
zMP;Q7jAi!!8H*VH|NsAAiwneJVtAy$z|FwJ#0u8Jz}WI=ttJBpBLfQqn9ah#`65*?
zIU_MIFExh&tAAnMCEBwf&q0Dp>puenBPiU8$}|w3$M7}C&#TH97!SdHt;mGp?UqMt
zK|V+Jcq+Qj8Q>mHEiPg@0(C@LnFh!a)-8_`85kjAMP>F{|9?yEFJgQo(8BQ_Ca9qm
z`jU--f#H9u@>&)KP7cl;_G=A-)jAkk9<ed3Wl&(?=Cmr}VBp|nVBle50)-}66$1k!
H10w?fVgZs=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c b/test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c
new file mode 100644
index 0000000000000000000000000000000000000000..118202f932155ae8186861c3efc6b72ab30ad4b4
GIT binary patch
literal 512
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGhuUp`4E+)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{(2?oYTSJ)7mHU2X&FoH}fD$@YzOtnYVxmNMD
zI%82wJHvmDRb>o}he8<`i?o>ZTOKj}|IZPu$HbOeyg8MLt>w|$@>GtpE{7rpFyLCt
zz?f>q%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFtLD?vM_LRa56A3GB7eQFt$8e
z%fi6voSIr(#B>DVNUi@24Aw1=5*Zko*vgq1_)<BF%IvlNgAAMUXz6c;{Y8wAS~&iL
zG%z8B0+L@+If~E%LIV^KYZcXDzAMuZ0(lSNvEo#a$H2Y<xf6szz5@BF{6EMA=sx0M
zddbGX0P+>Y{fP_=j3AdW{7+S0%K~v9$g?}_*BS<^buhMo{h^`7q|e5{@Q4kh%zmvw
YuwF+IgEa#O1H)Pd&LR#54o-$00IFbzLI3~&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3
new file mode 100644
index 0000000000000000000000000000000000000000..f24ab1f61aebfb4dbbf03af3d147520f6be3ff8d
GIT binary patch
literal 324
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EMz*>vSG(bvI?LkT*rb!`mtW|ui&REpKz|hX{pM!z1
zH?)Y6L5oSh<q^~W{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN
z42)&={~3!I{{R2~UyBRGVq$otz`)JG!^8sC!ob+_Xssp#2O|Ru1BlJSz{mL_HMNN8
z2*gDkWg!1CFj%)dN@QS!h!vIDYyJN%wZDk*kw6Q_f0&?#7Sl^M1_p-zsmg0v7&tjN
cci68r3|8x4Y<a}Su$F<-s)&PugOgzg03GR9_y7O^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec b/test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec
new file mode 100644
index 0000000000000000000000000000000000000000..7df891c2210b074fa4e005c354e8b0c1bdce9ecd
GIT binary patch
literal 232
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`ReTm9>hm
z)ftOg+8O?HFfbna|NsC0(3VF`|Nj>=rLu7Z>uo-q%EVTl%2C#(VZ{IjTx%H^S(*6Q
z%KxW6=O`*GWng5`;`+~6#K6nM@JNAyn}<P!myd^u5v-W8fx%gbp}2_Y2oqa5Un&Pj
zQJIF;e+CA|mPd&Uj7)6hrKuc6W%gSCe>3baVtmxX@t=vUoF62np~du)je&vTf2#6Y
b76wiZ&K>q^4T9A=7+W5#W#BC0U|;|Mgvmfk

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157
new file mode 100644
index 0000000000000000000000000000000000000000..7bdf2e48cc8e65307c912d68b048e0efcc35338d
GIT binary patch
literal 340
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0Pj4hAWYBF#zGO#d!*-(;`g@N-$
zYHD#2(-DZPAiiQ?ux@#j$iT>?1$Di>*8ks9`->PK3AAwhho}Sv3)4$B1_p-zsmg0v
h7&tjNci68r3|8x4Y<a}Su$F<dh=YNHlYxU_2LOcYS_1$8

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212
new file mode 100644
index 0000000000000000000000000000000000000000..bf077fd225ff77084b1605ffa91bcb0a4479c47c
GIT binary patch
literal 276
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}L9(3Bi6hls&6bIctK2@dsEmnEfq{*I
zIrabDqB151#v%qLHjq{c2F6EMz*>vSG(c)o?TgBo<RGRMfwVw$tW|ui&REpKz|hX{
zpMyb@u{V@~u}F(azvU6r|Nk7pdQ5Do#hX)^*veBm%DNni7{GvQEd!$!D-$1^X8Hfr
z=Nv_4r3{Q^_Wv1+7__)RBoo6U1qN;g9wrvBat6khM{5~47#Ua?z)Thf&KIev#YIrR
efxHH?zzXCUw(|d}97RkV!Fop^ZiV`sfdK%e?nY?<

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701
new file mode 100644
index 0000000000000000000000000000000000000000..5398b2c9e5eadfac8890fc8c93a2c362bbe29151
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!m+En?vK&&0%5&X>wjRHmWzpNWZqt(=b|)n3h(iH)n=KDDTf
ziBI7@0~<r?|GPzHObm=g3`}fAWvN9H42+MiutBs!^fE9gLd^kbO|=JWh3j0a_*$K@
zsHL6ZKgX&v2F63742(ruO!_U46q)}2=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?L
zwPI!BW791EpZc7msH~KMkwJ^=Kgb~rj}#cV8F-kOKuTE{I5{{O7#JBC85kH_9<60z
z;B-z+EiPg@g6c@?mPd&Uj7)6h%nW>~MP>F{|Nk=<H8V_kwDdQ_{vyUlEgb(L8j8v^
tgqU8kF)%RvPgMpP$HBS7eyw4!S_fmxBQ^$W1`dX`44g$A3>=&cI{=AITv`AC

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e b/test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e
new file mode 100644
index 0000000000000000000000000000000000000000..0608163c26f6b1c3123115511c56473dc132e8b6
GIT binary patch
literal 318
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@ds7#Yjfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~Xi^`bzAchqobgWf;t<G4~!obkZ@SlT$
zxi^%7u}F(azvU6r|Nk7pdQ5Do#hX)^*veBm%DNni1Q;0@7#O(LGB8@PGV!r#mj6$E
z&QVlW%D`A=|DUmlL5mASGBG?-VBlupVPXNPW?*1!d9;>+gOPy+!en9Ke36=3T*Pz)
z;u?t87#OTu9wjm`Ld1&7?6v;?mfBy$_(-6I<3CJLLyPGp8v_Hw|5W9*EDW3+oIC8-
Y8U(9#Ft$8mV_3_;S;WD>!O5@#08t-Q<p2Nx

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38
new file mode 100644
index 0000000000000000000000000000000000000000..721137720fce93f73efc989bf697b8bd4f8fefcf
GIT binary patch
literal 295
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1TE8jH#_KuS~XQI)P$e67w{)Y8uIpM!z%P$&aqkrtDF
z%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921YAZCO$UJ^8cyNIf}|k85kL~xc-Ce
zWO$^&z|FwJ!~#~y2qGC<9<60z;B-z+EiPg@g6s(f2J4nbi42TvseI*397SdJTK|7D
z>@Q+`)WY!}q7LL&rk89C3=IEMl|iO(aPF{QYY?o~!PxSMjbSYVXAuVj2PeZ000?bP
A9RL6T

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13
new file mode 100644
index 0000000000000000000000000000000000000000..73c8d71e128fef9a2acda1e8a7c4b6f99bc27119
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+|DXDtqo}NufssLr>p#dL4388TxEXkuSU^fy7&tjN85kHD7#SECTOO@t
zVc>L5O)V~BI)ds*>y}4}j7)6h%nW>~97SdJTK_?2O?kBRH^crS#z!r%@F*(N5Mp}C
q#=yYvKUEoI8VBbN`?ZF_Y8{L%kJuQj88{f$GH@1gFmP}(>;M4ZF<RFE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d b/test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d
new file mode 100644
index 0000000000000000000000000000000000000000..69a3dfb35aea982f2f518a0ef9203df76b1a1c22
GIT binary patch
literal 327
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdSRoUJkSg)gqiR~O;DoB)}tmyym|BNk<
z7#Ld^86GjQm9J&s<X~9KkZM&_#>B@~{y&wYh>0Uu4{RhyDic$ADn}?nDlPRtV-W+`
z7Im;S{}~t=7#Ld~F)=)1Dog#p_C5n=6$c{&W6Qt){}~vVK~lObOl(YGm*{sCF+ntg
z^)i$(GBGf)Ft#wUah0cP6_r`@DKM~sTu{cuz*xlah~fW#urr}<^k86OOD$sH<X~c8
z;9xA`P+)k}vj0CLLlr|20|Vn)4+aj#ha3!#S~wXP7#SX|1=+opfq{d8lVLJLS!$66
hNPu%KgF0hTOFP4V4hF_YEsxeRbTKf3{J=4b0RWPhSy%u7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842
new file mode 100644
index 0000000000000000000000000000000000000000..e1c3566d6444b8047b108b3e6b757d0ea3070464
GIT binary patch
literal 344
zcmWek&PdG5OU+?mN=_{*OD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eLhITfPJ_!cKM_1S&Iys6M89<sD7#N`jf%K-@qv~C&_*$K@
zsHL6ZKgX&v2F63742(ruO!_U46q)}2=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?L
zwPI!BW791EpZc7msH~KMkwJ^=KVuOC6T>3~25tr(CMJ+l76wiZP6h@>21W)3#+FBG
zSr|B-Q&WqJn2x}l32~%#%cDdFMkcm$W(L00qB47}{~)ubJX-pjVSf?hqZW?;5cNf6
u8bVAj*%%lY{--K~Oyl6(VZYWOSgnJx<q;c$H3J93S_aM{4h9ZRh8+MScU!Lj

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1
new file mode 100644
index 0000000000000000000000000000000000000000..d17f0ba3063a465c5d5958f9a2c83933e17e933a
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!pjv}KS{WD^LFN>dX@GR5+N0`RtN2=-
zv8bh;;XlW!G6u#&p$v>gR!sUWj})2y|K|wSV`57!-ki$xq~+1t@>Gs8hav_r;9AST
zm}<q!#K)#t{y+6OM^RZR10#bL*ME>h7#=Awa5L~QF@cn_FmQ4*FfcMOGB7Z<JX*`b
z!0DWtT3p0*1nNex_ZS$gTOK7cFfy@~Gc)j|7M0m+{RbH}<<ZjL4Eu{1AGL7&ho~<q
w(-2~M$;QCI@IO@<WEuzO4*RuM2El3_j4hAY7_1pM7}hdy7I83ea5C%w05uC-K>z>%

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686
new file mode 100644
index 0000000000000000000000000000000000000000..511d681e059fa6ee1e2422e7aea85efaaeb850e8
GIT binary patch
literal 554
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?oYTSJ=w=KsrGxQ|&=2L8e)86d^RMReY_^Sk%J6(9ZCm
zgMqO(l!38Gi%Gxb5%d559Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3Ik
zMP;Q7jAi!!8H*VH|NsAAiwneJVtAy$z|FwJ#0u8Jz}WI=ttJBpBLfQqn9ah#`65*?
zIU_MIFExh&tAAnMCEBwf&q0Dp>puenBPiU8$}|w3NB6a53&_)}$`}|A!M&}>gyQd(
zM{7Y|NA`Ity4M-tK29wzVmbnKMOm2!$Q9Ntj}jReA!0>k_FDgcOYJXWd?e7q@gF9r
zp%wa)je&vTf2#6Y76wiZ&K>q^4T9A=7+W5(F|1`!VBqGoD&k<^;ACLnVPXOWCs-8&
J10w??0|4zKl8pcW

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864
new file mode 100644
index 0000000000000000000000000000000000000000..1592c1644ca4c51544ebd6a5212f331ad7c0ca37
GIT binary patch
literal 325
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EMz*>vSG(bvI?LkT*rb!`mtW|ui&REpKz|hX{pM!z1
zH?)Y6L5oSh<q^~W{~W=3Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN
z42)&={~3!I{{R2~UyBRGVq$otz`)JG!^8sC!ob+_Xssp#2O|Ru1DMUiz{mL_HMNN8
z2*gPoWgrhSFj%)dN@QS!h!vIDYyJN%wZDk*kw6Q_f0&?#7Sl^M1_p-zsmg0v7&tjN
cci68r3|8x4Y<a}Su$F<-s)&PugOgzg0G%^fr2qf`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae b/test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae
new file mode 100644
index 0000000000000000000000000000000000000000..72af82218bc48e72cd723b90aebfd4e06b8260e9
GIT binary patch
literal 319
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAYN+D(yA#|)&e67w{)WX2f&hVduf$>l%
z17ndElYR@&Bc}iVIfC_=*iwr(r!ujXr*f2aITSH~0oPiFWJW7iCO$UJ^8cyNIf}|k
z85qm#|1%abXmNo^CWc1}4BQMnOe|pa42&(0)-rG~f;b>13j^ni)YRf4rXvvdK>WtQ
zVBPX4k%18+R#axM_5Zij{vyUl0xcZ>VS*Z3OfT6O7#RMiDz9Z>;N;-kVZYWeSgnJx
S<q;dhS_aM{4h9ZRh8+NcrBw<5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d b/test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d
new file mode 100644
index 0000000000000000000000000000000000000000..de01141e5262f2e144f49d1d9d5b4fa5f95767f1
GIT binary patch
literal 354
zcmZQ#V`5@pE9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsF
zim%lfi(1+l{&O%e9{T_P|NqdIM@;|!7c-@@aRlpaKAg(LR-VdH*2Pf700vxZ85mia
z_}I$-r#|N>Dl27RWYFUJ&sfC3%f#?Vfq|QcL4;p~hlvran2~|OS%{&yi0KFuTRC4U
z2S-tvhSq-u2F8|0i42TPY~`h?97SdJTK|7D>@Q+`)WY$fiLIO;B&MOo^pcH%f#H9u
z@>&)KP7cl;_G=BwK{61#If|G#g7ui#ic^cqI3R8e1$h+YE{>wIRFI3ncB&)U$;9x8
zsVwzB$iN~FMh3<f1_lNW#v%>{hDR+7{~19+!@wA<*1_2FXzg0C48x-qP6o~*21bTQ
LYZ*8=K%N2sDkWaA

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a
new file mode 100644
index 0000000000000000000000000000000000000000..e61833c1944f7cbf9af6a37f91d38c7371cd4322
GIT binary patch
literal 176
zcmZQ7PAw`+En?vK&%{>Fm&#F8rlG~8&&KdyIn~}ESg)gqiR~O;DoB)}tmr=j17pi0
z2F4afhDS_n<!c!@IT+S5q*@h~F)jM@|NnnJw(|d}97RkV!FphGIZ~O}%B?s;i^`a$
zvz7l(=O{``{m)p$z{Cl%OC4<4e+EXdsZ0!7kC@6*|F6Bzz*)q>$iUe0@Be=W1_8#F
RM{8LaI5~ou81xu87y+dRH6s83

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb b/test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb
new file mode 100644
index 0000000000000000000000000000000000000000..02db76320cbc7ebe3428b0ac131b3ece8f9b88b1
GIT binary patch
literal 297
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmdTB)+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?>Z*tp75?NODkReY_^Sj67a&hVduf$>l%17ndE
zlYYx1rvLvrg7w%^i#Mk-v6ZKClyx~2F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#w7C9*
z>|}VPz`)JG!^8qs$p|7DTOO@tVc>L5O)V~BI)d<oy4HUN2J4nbi42So!J;yIt^dCn
z_7^ceYT@_~6VuRQddbGX!0<m+8DtCx=MMX|2El3_j4hAY7}nM>a29beaBwp0007xz
BPXqt}

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index fb651015b0..dd6eea9df3 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23498,6 +23498,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e"
@@ -23564,6 +23586,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f"
@@ -23762,6 +23806,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin"
@@ -23806,6 +23872,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24"
@@ -24114,6 +24202,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563"
@@ -24532,6 +24642,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
@@ -24730,6 +24862,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57"
@@ -25304,7 +25458,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25326,7 +25480,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25348,7 +25502,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25370,7 +25524,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25392,7 +25546,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25414,7 +25568,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25436,7 +25590,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25458,7 +25612,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25480,7 +25634,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25502,7 +25656,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25524,7 +25678,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25546,7 +25700,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25568,7 +25722,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25590,7 +25744,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25612,7 +25766,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25634,7 +25788,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25656,7 +25810,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25678,7 +25832,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25700,7 +25854,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25722,7 +25876,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25744,7 +25898,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25766,7 +25920,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25788,7 +25942,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25810,7 +25964,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25832,7 +25986,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25854,7 +26008,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25876,7 +26030,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25898,7 +26052,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25920,7 +26074,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25942,7 +26096,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25964,7 +26118,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25986,7 +26140,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26008,7 +26162,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26030,7 +26184,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26052,7 +26206,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26074,7 +26228,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26096,7 +26250,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26118,7 +26272,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26140,7 +26294,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26162,7 +26316,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26184,7 +26338,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26206,7 +26360,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26228,7 +26382,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26250,7 +26404,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26272,7 +26426,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26294,7 +26448,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26316,7 +26470,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26338,7 +26492,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26360,7 +26514,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26382,7 +26536,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26404,7 +26558,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26426,7 +26580,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26448,7 +26602,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26470,7 +26624,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26492,7 +26646,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26514,7 +26668,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26536,7 +26690,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26558,7 +26712,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26580,7 +26734,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26602,7 +26756,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26624,7 +26778,645 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26646,7 +27438,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26668,7 +27460,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26690,7 +27482,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26712,7 +27504,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26734,7 +27526,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26756,7 +27548,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26778,7 +27570,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26800,7 +27592,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26822,7 +27614,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26844,7 +27636,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26866,7 +27658,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26888,7 +27680,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26910,7 +27702,227 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26932,7 +27944,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26954,7 +27966,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26976,7 +27988,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26998,7 +28010,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27020,7 +28032,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27042,7 +28054,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27064,7 +28076,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27086,7 +28098,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27108,7 +28120,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27130,7 +28142,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27152,7 +28164,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27174,7 +28186,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27196,7 +28208,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27218,7 +28230,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27240,7 +28252,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27262,7 +28274,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27284,7 +28296,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27306,7 +28318,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27328,7 +28340,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27350,7 +28362,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27372,7 +28384,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27394,7 +28406,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27416,7 +28428,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27438,7 +28450,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27460,7 +28472,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27482,7 +28494,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27504,7 +28516,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27526,7 +28538,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27548,7 +28560,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27570,7 +28582,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27592,7 +28604,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27614,7 +28626,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27636,7 +28648,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27658,7 +28670,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27680,7 +28692,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27702,7 +28714,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27724,7 +28736,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27746,7 +28758,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27768,7 +28780,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27790,7 +28802,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27812,7 +28824,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27834,7 +28846,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27856,7 +28868,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27878,7 +28890,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27900,7 +28912,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27922,7 +28934,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27944,7 +28956,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27966,7 +28978,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27988,7 +29000,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28010,7 +29022,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28032,7 +29044,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28054,7 +29066,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28076,7 +29088,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28098,7 +29110,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28120,7 +29132,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28142,7 +29154,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28164,7 +29176,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28186,7 +29198,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28208,7 +29220,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28230,7 +29242,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28252,7 +29264,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28274,7 +29286,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28296,7 +29308,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28318,7 +29330,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28340,7 +29352,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28362,7 +29374,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28384,7 +29396,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28406,7 +29418,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28428,7 +29440,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28450,7 +29462,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28472,7 +29484,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28494,7 +29506,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28516,7 +29528,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28538,7 +29550,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28560,7 +29572,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28582,7 +29594,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28604,7 +29616,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28626,7 +29638,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28648,7 +29660,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28670,7 +29682,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28692,7 +29704,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28714,7 +29726,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28736,7 +29748,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28758,7 +29770,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28780,7 +29792,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28802,7 +29814,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28824,7 +29836,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28846,7 +29858,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28868,7 +29880,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28890,7 +29902,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28912,7 +29924,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28934,7 +29946,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28956,7 +29968,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28978,7 +29990,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29000,7 +30012,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29022,7 +30034,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29044,7 +30056,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29066,7 +30078,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29088,7 +30100,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29110,7 +30122,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29132,7 +30144,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29154,7 +30166,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29176,7 +30188,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29198,7 +30210,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29220,7 +30232,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29242,7 +30254,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29264,7 +30276,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29286,7 +30298,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29308,7 +30320,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29330,7 +30342,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29352,7 +30364,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29374,7 +30386,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29396,7 +30408,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29418,7 +30430,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29440,7 +30452,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29462,7 +30474,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29484,7 +30496,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29506,7 +30518,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29528,7 +30540,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29550,7 +30562,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29572,7 +30584,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29594,7 +30606,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29616,7 +30628,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29638,7 +30650,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29660,7 +30672,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29682,7 +30694,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29704,7 +30716,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29726,7 +30738,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29748,7 +30760,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29770,7 +30782,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29792,7 +30804,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29814,7 +30826,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29836,7 +30848,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29858,7 +30870,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29880,7 +30892,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29902,7 +30914,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29924,7 +30936,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29946,7 +30958,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb"
     ], 
     "ci_platforms": [
       "linux", 
-- 
GitLab


From 0477d7d72895e7d2b3b82c5caf78b53b9eb451f6 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 10:42:50 -0700
Subject: [PATCH 165/525] API dictionary

---
 build.yaml                                    |  1 +
 .../end2end/fuzzers/api_fuzzer.dictionary     | 27 +++++++++++++++++++
 tools/fuzzer/runners/api_fuzzer.sh            |  1 +
 3 files changed, 29 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer.dictionary

diff --git a/build.yaml b/build.yaml
index f5c86b6e34..7248753bca 100644
--- a/build.yaml
+++ b/build.yaml
@@ -1130,6 +1130,7 @@ targets:
   - gpr
   corpus_dirs:
   - test/core/end2end/fuzzers/api_fuzzer_corpus
+  dict: test/core/end2end/fuzzers/api_fuzzer.dictionary
   maxlen: 2048
 - name: bin_encoder_test
   build: test
diff --git a/test/core/end2end/fuzzers/api_fuzzer.dictionary b/test/core/end2end/fuzzers/api_fuzzer.dictionary
new file mode 100644
index 0000000000..c8dcc56dd1
--- /dev/null
+++ b/test/core/end2end/fuzzers/api_fuzzer.dictionary
@@ -0,0 +1,27 @@
+# tracers
+"api\x00"
+"channel\x00"
+"channel_stack_builder\x00"
+"connectivity_state\x00"
+"flowctl\x00"
+"http\x00"
+"http1\x00"
+"round_robin\x00"
+"secure_endpoint\x00"
+"tcp\x00"
+"transport_security\x00"
+
+# channel args
+"\x00grpc.census\x00"
+"\x00grpc.max_concurrent_streams\x00"
+"\x00grpc.max_message_length\x00"
+"\x00grpc.http2.initial_sequence_number\x00"
+"\x00grpc.http2.lookahead_bytes\x00"
+"\x00grpc.http2.hpack_table_size.decoder\x00"
+"\x00grpc.http2.hpack_table_size.encoder\x00"
+"\x01grpc.default_authority\x00"
+"\x01grpc.primary_user_agent\x00"
+"\x01grpc.secondary_user_agent\x00"
+"\x00grpc.max_reconnect_backoff_ms\x00"
+"\x01grpc.ssl_target_name_override\x00"
+
diff --git a/tools/fuzzer/runners/api_fuzzer.sh b/tools/fuzzer/runners/api_fuzzer.sh
index 3521489470..d1c1e7da0d 100644
--- a/tools/fuzzer/runners/api_fuzzer.sh
+++ b/tools/fuzzer/runners/api_fuzzer.sh
@@ -31,6 +31,7 @@
 
 flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048 -timeout=120"
 
+flags="$flags -dict=test/core/end2end/fuzzers/api_fuzzer.dictionary"
 
 if [ "$jobs" != "1" ]
 then
-- 
GitLab


From 29c20851aa6fc50357c9d48ac7f066be9dea9371 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 10:50:13 -0700
Subject: [PATCH 166/525] Expand corpus

---
 .../24df70902c288fcac060365c2e6f61269a3606b4  | Bin 0 -> 339 bytes
 .../2af4e625522d128d03252f35b5fa5094cbcebc9f  | Bin 0 -> 223 bytes
 .../950511efda7aea60b3bfae95e31683210a88792c  | Bin 0 -> 399 bytes
 .../a6f614d434a1fe2162f7872100baef21b2051b53  | Bin 0 -> 316 bytes
 .../acb49fc7f5d61f15e2e0b8f391678365381c5ab9  | Bin 0 -> 197 bytes
 .../ad8f14d76933f67a10d9e8442eaa1b88b2395cd7  | Bin 0 -> 382 bytes
 .../c76a1cca503160ca659aad6f7a05ca8fe5db439e  | Bin 0 -> 399 bytes
 ...h-ed7959740df2fdcf62626e370dcd7eb43963731b | Bin 0 -> 379 bytes
 .../f224ca8baea51bbc26a3814af9253483c66ad8f8  | Bin 0 -> 46 bytes
 tools/run_tests/tests.json                    | 198 ++++++++++++++++++
 10 files changed, 198 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4
new file mode 100644
index 0000000000000000000000000000000000000000..2ba0d07b297aed496f54833398679304fe215698
GIT binary patch
literal 339
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)brmsy0oPgvMk^*hHqG+?
zsn0oz%1Rj+%k2L%7BOgXfk-BXM+yww3_MIMVATwaEsxe}GH@_5urPqxP?D2{f%8Rb
zYH<<M5s0H8o?>9IZh4f*z{sQpb-caS|KC#kix?jXv~c`~s04)y(@Qo628REs%4=B|
gI5{|X*snDVR_kDFdBn!BmVvW~gMovSfrDWO04w)d!vFvP

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f b/test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f
new file mode 100644
index 0000000000000000000000000000000000000000..9ee25140a14581ee54ab7dc88328dae17823d6be
GIT binary patch
literal 223
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`O4Cy{I5r
zFE_CwJ~y?vI59mnJ|{IVy(EKyi7mBwb1D;Cc`8R)7ef&P7;vp+U}R<DV=Mok`kbSv
ztdxO|L5u4@$UKHe3Jlx~JWMPM3>pj!j0_CUsj0<9Oh=g5%K1_`IEu<NwEi<NFt$8O
zWMG7d6_wd*{r}CdzliZs3&($$n1&Y9OEv}uhX1L`Tx(evI5{|X*snDRR_kDFd9;>+
JvxtL%0RUYKIfwuN

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c b/test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c
new file mode 100644
index 0000000000000000000000000000000000000000..1b2a6ef8c24e7d768fd47c0c91e0a1fae5cb8806
GIT binary patch
literal 399
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zdTL$?!~eTQWlRhVVENp{iufXsn!MEHlK7;=<m~*kwD{a&hDTSx<`tD`FtKr!r`i{l
zG4VmHC{kcxV@Unqf48Vik!h{sYjwt=76yiPhW{K4jJ=@@j73^Z`Yn%`{{QC))?;Ez
zE#92U#8#flQP$;9!~h0dYZ(}=Sef|PG|T^|KIbSZD`j9Tv;WUn#PI+B|NmNCAQltD
zBLxO-1|B9xuoec!mPczf88{djSQx-;76#rIsj0<9Oh>?uV$x@0`k$(7ZxF24QN+Yn
z&cRUz3I_%T>y}4}42)nk97SdJTK|7b?Jr_{B+$a~A1cU~%2C9`z)%JXIHs3u3=9na
zQ<c}UC~$Ic?yz5L^dD>=17iy#!=tqfoE!|nY9Lp3Ft$8mV_3_;X;s9rmcfI8frFD_
F2LSQCc)0)o

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53
new file mode 100644
index 0000000000000000000000000000000000000000..f21a84f47ea188276951dfb1ba3aad7590ff3e03
GIT binary patch
literal 316
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuyO{*mPczDI2ajN7(h%b76#52si{m5IR>!LG_?LR
zFj%)dN@QS!I<U-M>;G@5{Y8wA1X?)$!vr<7m|n6mFfja2RbI=&z{$b6!+xz%uv!OW
R%Oke644g$A3>=&cI{-*WQGWmc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9
new file mode 100644
index 0000000000000000000000000000000000000000..65d0ca9459513bf0109f6002d235d2ddeef0e890
GIT binary patch
literal 197
zcmZQ#<0`jTWlAk8V&G$9D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&minKuh=GaW
z5fg;P*uucT!C1th!0@Prfib<PAX%@tI48a&u_!&YBt9=OH#I)LEVZa8GbNSbKO+NU
zkpcr71IUgtCI+xU42&&n!6q;~VtZOtmRh92!1#!BErU8^QA<0+e+~x5M=g)mGITL9
ZFmN$2Ftji-JYr;ESj)h{z%h$~0RRM2HO2q{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7
new file mode 100644
index 0000000000000000000000000000000000000000..31fae78a52565135b47958b5423c5fc8b6808800
GIT binary patch
literal 382
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zVtQ&`3B&)pMP*D3j71DgY#{9t42+MifOQv@X)v*Im8aSll`-)_3@lP$U}H%A-+#BL
zOp$4=;%jxrq80{*c832P42->@42(ruO!_U4nEwCg2-ag_OD*1<%EVTl%2C$kP{aTR
zTx%H^tyr1(*fh)kr#|N>Dl27REVKX5Sj6!E|NsA5Tp$(`!y^R-ZU!DEMz9tJ#+FBG
zH5oV<8CV#=Y!(LI7pbYmMNCJ)j$+bhWBQ+}Y;O>(*HOg8R?fju2J$rngLTWJL<UB%
z8jhked#(S!rS=ywJ`!l*_zxB2OXUFhouLdAPE0S^7#JA-rz)>yQQ+j@++n}g=s(y(
p2F4afhDU1|I5`-C)j-bdU~GBB#;}%w)2fJLErSOG0|zI=4giy&a5(?~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e b/test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e
new file mode 100644
index 0000000000000000000000000000000000000000..9714a3b5e7bafb14a1fd534b753766dfe2f597f4
GIT binary patch
literal 399
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zdTL$?!~eTQWlRhVVENp{iufXsn!MEHlK7;=<m~*kwD{a&h-`9dUU6wL16O&feNh<`
zAH<3x1qL>T)c^f=i^>$4)+)YMXDn)AU}$If&%wah8_K{~q{XD)@`&mGe~w^1Cbrb#
z&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10mj-s+s2F5b`|BOWp|NsC0uf+voF)=(+
zVBlupVPXVpVPI@|v{sXWgOP!S0nBD$;C+#rSX{((1nej#eKw~5smk^S!FnA<Ol;*G
z9A%(zU|_Ird6dY&2v);URA#UB|F_isBF0AoEgb)$f_$kQMNA9~WuSm#ddbGX!0<m+
zc`b_qCkN*a`?W^@!S*pQwlFe0TFb!6!4Rwla%Bf&%Of_1wG5nAMI37xJQx@_I2m>T
E0IZF9S^xk5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b
new file mode 100644
index 0000000000000000000000000000000000000000..59f77093f825af5618449826eaa6c626e4eb43ee
GIT binary patch
literal 379
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69Zd0U$7HLs^D98do^1oHm-8})S@yb
zJ~;+9hSdLei^`Z77>gK~*g)DP7#JU20qZU*(*P+=wFfDM7+9nL*3l2rvR3i6I%81_
z14BE*e+~x5-cSa{A}uEUmPbtg|7!*7F|nl<Z%$=mD^KMp>vAY!00XYI42)K+Onhvb
z<^NNka}<@8GBB3e|7R>>`2YX^e=RN$i;3Zp0s}V#4-+F;3j<@zqqUk09E=Ps3}7}3
z?~Byb;v%LaASXR#(r05*PgS<>&@%`wXJRYj;3xz6nSsH&<xwI7BS=juM^Tx**8ks9
z`->PK3AAwhhYIq6Bs8=bKpL1{vN13){7+S0%fi6P!MVeJt<it5bqtIxj0}&~GH`M*
e1gn7@*}>TIh>c+_1E*CH$65vt1_lmJh8+OxM{7+0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8
new file mode 100644
index 0000000000000000000000000000000000000000..98fb8a108d3fc7343a4bae26d3a428ce5ce05e32
GIT binary patch
literal 46
zcmZQ#E9Xn)C@Qm8X86yTUR02*my(*6SejE3pIBOwkzbTqQpv!;z}WI=EdwV90{~P0
B4sieg

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index dd6eea9df3..cb88e4570c 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -24532,6 +24532,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
@@ -24752,6 +24774,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62"
@@ -27678,6 +27722,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
@@ -28096,6 +28162,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
@@ -28228,6 +28316,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
@@ -29020,6 +29152,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
@@ -29394,6 +29548,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
@@ -30604,6 +30780,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
-- 
GitLab


From 734fb9f36b3f90109a29d82c745d53b79f364b57 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 11:00:07 -0700
Subject: [PATCH 167/525] Expand corpus

---
 .../0433cabb8c28820bda0a6eac35d17d120f1b6865      | Bin 0 -> 343 bytes
 .../253b8946a7cf403dd466f1685df2f741d4660a34      | Bin 0 -> 400 bytes
 .../66ac31199d08e7a3b066059cd409457a850847b2      | Bin 0 -> 220 bytes
 .../83c29132911949c65d508753420708e9a0ffd6ab      | Bin 0 -> 326 bytes
 .../af042d0ae8cd624acfa12788ffc0154e6f49394b      | Bin 0 -> 365 bytes
 .../bc96b9415e9bb48d27f37d91c51d10ec08139974      | Bin 0 -> 397 bytes
 .../bd4786be14d852c68e605eaefa782f79064f32e2      | Bin 0 -> 325 bytes
 .../c69863dd21c782e609d6ecdb9150f887a0f39989      | Bin 0 -> 228 bytes
 ...crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b | Bin 0 -> 135 bytes
 .../e33f7d7998fe6e12ecc4014c8434e4ca591371b3      | Bin 0 -> 326 bytes
 10 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865
new file mode 100644
index 0000000000000000000000000000000000000000..050767999a2d1b797fb15af3f99748df85ccdfb9
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;LE}Hisxk(~L!k_eMOsYyEsvP~|K|wSV`57!-ki$B*79g=c`8R)mqQT)7;vp+
zU`(}QW#VJgEdQVSoTI3$l!1{!i|aqgB@B-g7`PdDm{>qcSr|AuI2jli85kKD7+W5#
zWntiSPE9Q?VmgBAO6!(KiHuBa<;)CxsT@UR_FDfzW=(mt^f$x)BF0B8umCA4(-2~M
r$;QCI@IO@<WEuzO4*Ru+!D=0hEsxk3tQj~M)-rGwaWHUjGVA~VBhOm@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34 b/test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34
new file mode 100644
index 0000000000000000000000000000000000000000..4102118a52519caa7ec2173f695af9a535ad4d6d
GIT binary patch
literal 400
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zdTL$?!~eTQWlRhZ`P{^c_#%*+ywv29_@u<-?EJK}_}pR!u<qp4yyDVg2Cni{`=T-?
zK8O`X3Jh!vssH=$7L_S7tyO%j&REpKz|hX{pM!z1H<W>~NQ+6o<q^~W{~W=3Ol+ye
zn^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42)&={~3!I{{R2~UyBRGVq$ot
zz`)JG!^8;I!ob+_Xssp#2O|Ru1DMUi!22RKvABro2-s1YO!{n0|5KIi4TAMLikR5S
zIXKEd0l~mv-SQ}rff1~Tqo~YY>;G@5{Y8wA1X?)$Lk0O#If|GV7|K8)$Mlkofq~(F
zs`6SE1x^mm9rkOD{(~)KU~FMzc(j&*lY=2x?f?J($r*`xd8s)J44hU)9BUao7#KJ>
Hm+k-n2IP5R

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2
new file mode 100644
index 0000000000000000000000000000000000000000..dececd401d6789683dde25526078b9f93db5fca0
GIT binary patch
literal 220
zcmZQ#E9c`#wO32dNX*Mi&518ANlea;Pb$sKNl7hYU@T%_Vk;_3Es|hhd~{{4;%jxr
zqLy}s{~QdAheBH(G5!C~5v<3=mRh_ym5Hr9m80zc|NsBH7@&Y_EdwJf6CYdo|5T2m
zvQh>{1}(1tjNcfT7}!86c$gSLlyhooaS_uIkV8^AIEu<NwEi<NFt$8OWME)~2o{yu
zYyJPtu)m1$Q47a^n3#qZlRn6t|EbDrSr|AuICt2uH4N74U~GA`mVvW~gMk46$DluO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab
new file mode 100644
index 0000000000000000000000000000000000000000..405d28eaadd34879d82295b6ccf45444e55591b8
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?j=n^rC`fy^NBQ0wcYQg2d$P_>#n=oYeT@%&Jtq)V$>U
zl++>yMa9?Zj72RB4DAg6IT#pwLm3#0w3zf;9x?s@&k?N0#FkpTIhBd6Je8xY%b|z?
z47k=ZFj}!P@v&)^|4)6+QB+pSz*uJgpRtJH|NsC0wYWemCWc1}4BQMnOsrrn42&(0
z)@m|vFfy<(fY~ezoG(&Si;I|!Kz&$NrlIwpfx)`vQ6d8)M69UHUhDsFsr^Naj|5sc
w{=)<{w3uG9F)%RvPgP#a!obPFxx;>~VX#^UW6L8phP4cwRz(~P9Gnb009$ff%>V!Z

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b b/test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b
new file mode 100644
index 0000000000000000000000000000000000000000..8f4a63e7a86057ece4427b45d165983354b919c4
GIT binary patch
literal 365
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#Pb%_#p;?^rqUQ>Rqe&TAi_|
zrJdnF$Eq?0#zUbDj73^Z`Yn$Xng0Lh2-ag_OD*1<%EZ?4Xl;2aN0~zr0~m0vWnfIT
zVrAlE(=7iFu@CIh)aM*UWu**^3|d_OL9SwWq`<(<z{A7@*2UQJXe|RL2Ll5O11AS3
z0|O%iBLf3SkcENMIW@Joi0KH#ESTG^TOK7cFfy@~Gc)j|7M0m+{Rf#k<<ZjL4Eu{1
yAGL5G>=t5r$;QCI@IO^~E!gxO_G=A-)jAkk9<ec4GjK4hW#BC0VBp|n*Z}~A`(U&H

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974
new file mode 100644
index 0000000000000000000000000000000000000000..d7eb001092a6af7ec0fadc007a6fb4bbdd3c973d
GIT binary patch
literal 397
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zdTL$?!~eTQWlRhVVENp{iufXsn!MEHlK7;=<m~*kwD{a&h-`9dUU6wL16O&feNh<`
zAH<3x1qL>T)c^f=i^>$4)+)YMXDn)AU}$If&%wah8_K{~q{XD)@`&mGe~w^1Cbrb#
z&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10mj-s+s2F5b`|BOWp|NsC0uf@e!#K6Sx
zNP&Tyfrp6^tb>8E<<VMA1`ZGp#AIRMeUX}2T*Pz)>?9_AHm3in%Jv4qdL2bfY~>sr
zWuQ=CV6bj^l*qscR>M(LX0P@Cx77Y3#zz7z9RHz$e5o8oObiTVpkQNq$;QCI@IO^~
zEsFvt2j>p^wMPFLKvpv_wlFe0TFb!6!4Rwla$^T$%Of_1wG5nAMI37xJQx@_I2m>T
E0AZqdR{#J2

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2
new file mode 100644
index 0000000000000000000000000000000000000000..9f5433908f9c6f44fc259ed648ddf66cfc890e89
GIT binary patch
literal 325
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EMz*>vSG(bvI?LkT*rWJv7q!$$=>t&Rb6d37c6eK2R
z$Co4~<)p?JXI7=^rKBe3r=%7!=rOUS7H>{vVk=MODC=@4VgLiKwG50_tW11tn&tmf
zpK}zIl`=4v+5cxOV)+06|9>qm5Q~Z7kpcrZ0}m4$SPKJV%cHfL3>=IMEDT^a3j^ni
z)YRf4rXvt1ag>2P$iQIT@+gsk5h7MpX0P@Cw$%P2#zz7z9RFd08d^**L8kssRbI=&
fz{$b6!+xz{uv!OW%Of_1wG5nAMH~zqoD4evZMa#;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989
new file mode 100644
index 0000000000000000000000000000000000000000..52b683c1cafc865ee819f7580549f03139e0f94e
GIT binary patch
literal 228
zcmZQ#<0`jTWlAk8V&G$9D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&minKuh=GaW
z5fg;P*uucT!C1th!0@Prfib<PAX%@tI48a&u_!&YBt9=OH#I)LEVZa8GbNSbKO+NU
zkpcr7L3LoaFo5l0U~E|nwt(Rg+tZ@5)FKTA#z&lM8PpkzTG|=@b1*PIYI(Glp^J%u
Yfs28Gp@os*5hDY`S_TdVj#&&00BBo5m;e9(

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b
new file mode 100644
index 0000000000000000000000000000000000000000..a0e609bdb1713047c4be139d1488079ba5ddbf36
GIT binary patch
literal 135
zcmZQ#<0?<JFDhf=Q($0YNd14eh>3x*h=GZ%s4TTegMsnUm9^^Xj72T&4F5S87!S2P
zV*3A|BUq1#tvI!4b1D;Cc`8RySr-EYaIIxvWSYWO{vRZm%D~9L!1W(w7{en425ue^
eeh`PTWi12ee!;iwj71y_k6IWR9<62IU;+RZ)+Ijx

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3
new file mode 100644
index 0000000000000000000000000000000000000000..6b3cf73f16ad7ba1231238cd041f13496c7824f9
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?j=n^rC`fy^NBQ0wcYQg2d$P_>#n=oYeT@%&Jtq)V$>U
zl++@IwTiFR8H-vN7}^>Bb1*RWhB7b~X))=yJYxF)pCee0i7mBwb1D;Cc`8R)mqQT)
z7;vp+V6<Xo;$zb+|DXDtqo}Nufw9c~KVuQY|NsC0YjJ^CObm|{7`PdDm{`GD7#Ld~
zt<_}UU}Run0JB*bIA5fu78fxcf%>qlOhfBG1A}$TqeKQqh*(jXz1IKVQu~V-9|^Q@
x{D%o@XfeHHV_;zTpQ^l;g@KcUbBFy}!(g=z#+FBH3~L!Ut%^7pI5-)0007fATv-4B

literal 0
HcmV?d00001

-- 
GitLab


From a92ebc8352019091fa54d1f569aab0bc449c7946 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 11:43:24 -0700
Subject: [PATCH 168/525] Fix test bugs, expand corpus

---
 .../transport/chttp2/transport/hpack_parser.c |   2 +-
 src/core/lib/transport/metadata.h             |   1 +
 test/core/end2end/fuzzers/api_fuzzer.c        |  74 ++--
 .../07aa7d6c71878eb78b25ca12d79082f70ae7f64c  | Bin 0 -> 343 bytes
 .../3465fb573ac3c59a0804aadeba2f205870abcc3d  | Bin 0 -> 342 bytes
 .../595603f4ed37e3716cbe53b3ef180e5cdf8005f0  | Bin 0 -> 223 bytes
 .../6186bfc21ff7df3982e5d9757e5c7160da0f493a  | Bin 0 -> 390 bytes
 .../8a912877743b165b233303efaf502f5092b3c5b0  | Bin 0 -> 570 bytes
 .../a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba  | Bin 0 -> 342 bytes
 .../bc6770a9bad24599ea4970735e9b17702a12b651  | Bin 0 -> 231 bytes
 ...h-7ca23a3e10cdbf579cf81a50e51af358f86631eb | Bin 0 -> 429 bytes
 .../d712d007679af5438c7bda723ddc724c2e57b0c1  | Bin 0 -> 405 bytes
 tools/run_tests/tests.json                    | 418 ++++++++++++++++++
 13 files changed, 460 insertions(+), 35 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1

diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c
index 93c3e6d8b4..687936bfd3 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c
@@ -639,7 +639,7 @@ static int on_hdr(grpc_chttp2_hpack_parser *p, grpc_mdelem *md,
     }
   }
   if (p->on_header == NULL) {
-    grpc_mdelem_unref(md);
+    GRPC_MDELEM_UNREF(md);
     return 0;
   }
   p->on_header(p->on_header_user_data, md);
diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index e29e8df2c9..713d9e6782 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -120,6 +120,7 @@ void grpc_mdelem_set_user_data(grpc_mdelem *md, void (*destroy_func)(void *),
                                void *user_data);
 
 /* Reference counting */
+//#define GRPC_METADATA_REFCOUNT_DEBUG
 #ifdef GRPC_METADATA_REFCOUNT_DEBUG
 #define GRPC_MDSTR_REF(s) grpc_mdstr_ref((s), __FILE__, __LINE__)
 #define GRPC_MDSTR_UNREF(s) grpc_mdstr_unref((s), __FILE__, __LINE__)
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index c1c5966801..5ccaa784a4 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -143,19 +143,6 @@ static grpc_byte_buffer *read_message(input_stream *inp) {
   return out;
 }
 
-static void read_metadata(input_stream *inp, size_t *count,
-                          grpc_metadata **metadata) {
-  *count = next_byte(inp);
-  *metadata = gpr_malloc(*count * sizeof(**metadata));
-  memset(*metadata, 0, *count * sizeof(**metadata));
-  for (size_t i = 0; i < *count; i++) {
-    (*metadata)[i].key = read_string(inp);
-    read_buffer(inp, (char **)&(*metadata)[i].value,
-                &(*metadata)[i].value_length);
-    (*metadata)[i].flags = read_uint32(inp);
-  }
-}
-
 static int read_int(input_stream *inp) { return (int)read_uint32(inp); }
 
 static grpc_channel_args *read_args(input_stream *inp) {
@@ -366,6 +353,11 @@ typedef struct call_state {
   int pending_ops;
   grpc_call_details call_details;
 
+  // array of pointers to free later
+  size_t num_to_free;
+  size_t cap_to_free;
+  void **to_free;
+
   struct call_state *next;
   struct call_state *prev;
 } call_state;
@@ -403,11 +395,42 @@ static call_state *maybe_delete_call_state(call_state *call) {
   grpc_metadata_array_destroy(&call->recv_trailing_metadata);
   gpr_free(call->recv_status_details);
   grpc_call_details_destroy(&call->call_details);
+
+  for (size_t i = 0; i < call->num_to_free; i++) {
+    gpr_free(call->to_free[i]);
+  }
+  gpr_free(call->to_free);
+
   gpr_free(call);
 
   return next;
 }
 
+static void add_to_free(call_state *call, void *p) {
+  if (call->num_to_free == call->cap_to_free) {
+    call->cap_to_free = GPR_MAX(8, 2 * call->cap_to_free);
+    call->to_free =
+        gpr_realloc(call->to_free, sizeof(*call->to_free) * call->cap_to_free);
+  }
+  call->to_free[call->num_to_free++] = p;
+}
+
+static void read_metadata(input_stream *inp, size_t *count,
+                          grpc_metadata **metadata, call_state *cs) {
+  *count = next_byte(inp);
+  *metadata = gpr_malloc(*count * sizeof(**metadata));
+  memset(*metadata, 0, *count * sizeof(**metadata));
+  for (size_t i = 0; i < *count; i++) {
+    (*metadata)[i].key = read_string(inp);
+    read_buffer(inp, (char **)&(*metadata)[i].value,
+                &(*metadata)[i].value_length);
+    (*metadata)[i].flags = read_uint32(inp);
+    add_to_free(cs, (void *)(*metadata)[i].key);
+    add_to_free(cs, (void *)(*metadata)[i].value);
+  }
+  add_to_free(cs, *metadata);
+}
+
 static call_state *destroy_call(call_state *call) {
   grpc_call_destroy(call->call);
   call->call = NULL;
@@ -688,7 +711,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
             case GRPC_OP_SEND_INITIAL_METADATA:
               op->op = GRPC_OP_SEND_INITIAL_METADATA;
               read_metadata(&inp, &op->data.send_initial_metadata.count,
-                            &op->data.send_initial_metadata.metadata);
+                            &op->data.send_initial_metadata.metadata,
+                            g_active_call);
               break;
             case GRPC_OP_SEND_MESSAGE:
               op->op = GRPC_OP_SEND_MESSAGE;
@@ -702,7 +726,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
               read_metadata(
                   &inp,
                   &op->data.send_status_from_server.trailing_metadata_count,
-                  &op->data.send_status_from_server.trailing_metadata);
+                  &op->data.send_status_from_server.trailing_metadata,
+                  g_active_call);
               op->data.send_status_from_server.status = next_byte(&inp);
               op->data.send_status_from_server.status_details =
                   read_string(&inp);
@@ -751,30 +776,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
           op = &ops[i];
           switch (op->op) {
             case GRPC_OP_SEND_INITIAL_METADATA:
-              for (size_t j = 0; j < op->data.send_initial_metadata.count;
-                   j++) {
-                gpr_free(
-                    (void *)op->data.send_initial_metadata.metadata[j].key);
-                gpr_free(
-                    (void *)op->data.send_initial_metadata.metadata[j].value);
-              }
-              gpr_free(op->data.send_initial_metadata.metadata);
               break;
             case GRPC_OP_SEND_MESSAGE:
               grpc_byte_buffer_destroy(op->data.send_message);
               break;
             case GRPC_OP_SEND_STATUS_FROM_SERVER:
-              for (size_t j = 0;
-                   j < op->data.send_status_from_server.trailing_metadata_count;
-                   j++) {
-                gpr_free((void *)op->data.send_status_from_server
-                             .trailing_metadata[j]
-                             .key);
-                gpr_free((void *)op->data.send_status_from_server
-                             .trailing_metadata[j]
-                             .value);
-              }
-              gpr_free(op->data.send_status_from_server.trailing_metadata);
               gpr_free((void *)op->data.send_status_from_server.status_details);
               break;
             case GRPC_OP_SEND_CLOSE_FROM_CLIENT:
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c b/test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c
new file mode 100644
index 0000000000000000000000000000000000000000..e87065df42b1e613afe3153427adf0727157e647
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|6K;AqB6!J1|~L;J_!cKM_1U8wK6a;g3Ku@(*WsAwMWufRK~Pc@wGZ*
zQA<0+e~wjU42*|D85oPSnDkp7G5!C~5v<3=mRh_ym5Ht8(c1D<j<PO?A_g$vTFbzg
zYQ@UL$EI2SKlM3BQCTSiBZC&#e~?2M9w{(zGw?96fRwT@aB^@mF)%VPGB7Z<JX*`b
z!0DWtT3p0*1l5t&Esqiz7@640nHl&}If}~cwf=()oAPMsZ-)IvjE`Di0a8?^A;k2O
qje&vTf2uObI1bJo_Dl>63>}OukJuQj88{f$GH@1gFmP}(>;M4yC0bwr

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d b/test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d
new file mode 100644
index 0000000000000000000000000000000000000000..58f59a48141f612f767a60964e63ccd8f37fde30
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+|DXDtqo}NufssLr>p#dL4388TxEXkuSU^fy7&tjN85kHD7#SECTOO@t
zVc>L5O)V~BI)ds*>y}4}j7)6h%nW>~97SdJTK_?2O?kBRH^crS#z!r%@F*(N5Mp}C
q#=yYvKUEoI8VBbN`?W^FY8{L%kJuQj88{f$GH@1gFmP}(>;M4ZNLttc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0
new file mode 100644
index 0000000000000000000000000000000000000000..ceee8e5b32d4ac9a568b3e0f52acf965c6e04880
GIT binary patch
literal 223
zcmZQ#Vqh!h<4Cnvvt?rADz{H9Dr4ePU|?fN{eQQpjERA<h=GZ%s4TTef`O4Sy{I5r
zFE_CwJ~y?vI59mnJ|{IVy(EKyi7mBwb1D;Cc`8R)7ef&P7;vp+U}R<DV=Mok`kbSv
ztdxO|L5u4@$UKHe3Jlx~JWMPM3>pj!j0_CUsj0<9Oh=g5%K1_`IEu<NwEi<NFt$8O
zWMG7d6_wd*{r}CdzliZs3&($$n1&Y9OEv}uhX1L`Tx(evI5{|X*snDRR_kDFd9;>+
JvxtL%0RUaTIf(!O

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a b/test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a
new file mode 100644
index 0000000000000000000000000000000000000000..45ec1dc83a09f75d4d6bbcd1df1953bbab5a218d
GIT binary patch
literal 390
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#N|(fOMwXqv~Ay@4w<}b;hEW
zc832PtI8M{4}~%?7HKi*w>(m0`v0FJSdWP<wRm$X6I;upwdJWCWe!CQV8FGOficyJ
zm5Gl{v;2SRbB?02QU*o_Ew29{r!YKHVBlupVPXO)Wntjt;ACK6WME`qU~GA`mW6@S
zIW@Joi0KHbGp$=5B{DEFv6VA3@TC@&*=zj=nKk8+>TibqMU0PHIQ~P_7nNxUF}-Ai
z_=bUj;eV<!$V?8-9rkMtgVj11TOP47STk@itYzRt^(-`)I2brM89;%xLjx3AYt>=?
GX8-^eBx%L~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0
new file mode 100644
index 0000000000000000000000000000000000000000..1e978a110be602933d2e4948a125f0c8024c9cc8
GIT binary patch
literal 570
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsKJ7y{I5rFE_Cwz9=<0KQAvexg<U*F*!RwEiFE`m?8B)V^J9s17nd00}~s_
zTnProM_1U8jb>nA1ldzmrU5cJ)gESY>i@e%WlU=oU#l|~wX`$*=U7$7z<4N>sob7}
zk1ZAA4zOwl#v&~y{gy{e|NnCY>oKvV7H>{vVrzM{wmg-itjmGFhye_^)-o`rTCp<m
zv1yk7Pkqi&R94Es$e_jbpRtI6iQ$m~12+Q?6AMTw3j-$yCj$c`10w?iW6PtpEDW4r
zzd~HZ08-DET$Wm-0rJaQMRj$?W{3+J7!PqUFffE7+)|thatqiY3=Hrv23f)Yau3Kg
z<^NN$xP^z2fq@}4wYZ4sNFoCR<NhMXM=cx-tI9wD$}r{8Qfqhw6_sf*FzIVJLlmQi
ztaZzyL`EjIa%NCW@qz5I*ZL3g@RUbOe>3baVw~3ki{~PS|EbFMYYl?+I*J&|G=!L5
ovN14##6aHX;M`%q)-YJDgR$ii8-q0i2g6zh&LR#54o-$009(bHrvLx|

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba b/test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba
new file mode 100644
index 0000000000000000000000000000000000000000..219182e02901c79e66f495695a02959db76fc7bd
GIT binary patch
literal 342
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0P3=E7dkJf53a4<5kK-f@{lZAov
zMQUns5z`TfyCD8zV6bj^l*quyqy=@qz1IKVQu~V-9|^Q@{D-In1q{<mHU<WU|EbDr
iSr|AuICt2uH4IkkU~GBB#;}%wvxtL%gOh=SVFv*6#aaUZ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651
new file mode 100644
index 0000000000000000000000000000000000000000..57a17c105d1ce36d35a57d577d3f8a6f76b8cbbd
GIT binary patch
literal 231
zcmZQ#<0`jTWlAk8V&G$9D^KMpDr4efEB~L$QN+X%tjEMwoLW@Ik%}f&rj^Rb@Sm}W
zfr;S}Q&}pA#n{5Yz`<C=p}_E{g@G}>s32LdxHu=iB(W$xwIn_-F*h|nzbv(=C^IFM
z;Xfk-W03*_8-oS`bztW(fbC&mY*`DofZ-9_)1tD}A_lPD<kY<4(qe}H91M()S{|)s
c=wf1E;9_84Xklb{#K^#~mVtwTV-^Dg0O_ql?*IS*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb
new file mode 100644
index 0000000000000000000000000000000000000000..9618323b35872301aaf5e956c64da67a29a618cd
GIT binary patch
literal 429
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69Zd0U$7HLs^D98do^1oHm-8})S@yb
zJ~;+9hSdLei^`Z77>gK~*g)DP7#JU20qZU*(*P+=wFfDM7+9nL*3l2rvR3i6I%81_
z14BE*e+~x5-cSa{A}uEUmPbtg|7!*7F|nl<Z%$=mD^KMp>#{0h00XYI42)K+Onhvb
z<^NNka}<@8GBB3e|7R>>`2YX^e=RN$i;3Zp0s}V#4-+E;0|R4vQ9-g^acXjYUP@w7
zWqfIIYEgV*dTL$?$UMfDM{6}1I2ajN7#Kio7Ty=Bsl`Q1N5HOS(r07(pQ>zc5Ukfx
z#Kcz4!BGYZ4h9D6mPd&Uj9@h!MP>F{|9?yEFJgQo(8BQ_D#(`#4mt*q2Bw#63=9na
zQ<c}UFmQ5k?yz5L^dD>;17iy#!=tqfoE!|nY9RM_Ft$8mV_3_;X;s9rmcfI80csk=
Shad+sa0qa4GVBlt)&l@uTYMe>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1
new file mode 100644
index 0000000000000000000000000000000000000000..81295b8c9f6c5777d27faaa7b53a24c514bd8180
GIT binary patch
literal 405
zcmZQ7PAw`+En?tM|Ift4R?e5o!BJGEq4l4MiGhtVond-<Q9-g^MoCG5kzP)Ies*F;
zYGO)!Qe{bMF#{6=BUm;!u_C@GH90>oFEzO&J}EIdJ3lQgKDU?wESsE~S6o`mz*U}V
zUsT4#2eG3_fq{)7^?(1}qB2FMwTiFR8H-vN7}^>Bb1*RWhB7b~X))=yJYxF)pCee0
zi7mBwb1D;Cc`8R)mqQT)7;vp+V6<Xo;$zb+|DXDtqo}Nufw9c~KVuQY|NsC0YjJ^C
zObm|{7`PdDm>9uY7#Ld~t<_}UU}Run0JB*bcweL@78fxc0Xs^QNuQ1Bf2y**L9kv&
z5ffWE2S*twBp4X1TOK7cFoG3v6qVU){r@eszliaXKnurzs32b|M-dYPLm4ROm|n6m
zFfja2RbI=Yz{$b6!+x#Nf3SrNj4g}|kJd79rZO-va4-a`{r~?zIU_MIFExjOfzzsp
OV=aRR0|N)=(j5Q=xp&3@

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index cb88e4570c..bd9d4eae1c 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23454,6 +23454,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451"
@@ -23608,6 +23630,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f"
@@ -24554,6 +24598,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
@@ -25148,6 +25214,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
@@ -26160,6 +26248,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
@@ -26336,6 +26446,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
@@ -26424,6 +26556,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
@@ -27172,6 +27326,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
@@ -27436,6 +27612,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
@@ -28184,6 +28382,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
@@ -28360,6 +28580,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
@@ -28822,6 +29064,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
@@ -28844,6 +29108,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
@@ -28910,6 +29196,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
@@ -29130,6 +29438,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
@@ -29416,6 +29746,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
@@ -29900,6 +30274,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
@@ -30274,6 +30670,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
-- 
GitLab


From 839b65cee785b7eb4c2ea754a0cee69f4d13cd47 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 11:51:44 -0700
Subject: [PATCH 169/525] Expand corpus

---
 .../064d3beeef29a647deb1b345426ea7212de71cfe  | Bin 0 -> 342 bytes
 .../1c6e5ad8dbff133707cc85b05a0057abf55d08ad  | Bin 0 -> 288 bytes
 .../30694ac08ff5a6a10cc781b9042c89f4019cfe0a  | Bin 0 -> 493 bytes
 .../4449ec3eda232c394fad83e34b002e9bb46862e1  | Bin 0 -> 349 bytes
 .../52dba1b997f903c5fa3d7da71421b36d96d9f55c  | Bin 0 -> 345 bytes
 .../655b880459e6e00100727af9df52b64f6d77a653  | Bin 0 -> 297 bytes
 .../767c4f399ccca740ea3032eeade86851f12e7f9a  | Bin 0 -> 405 bytes
 .../767d136ac4b3e33d9aa5320d941693e09648e59b  | Bin 0 -> 353 bytes
 .../820d5ba2e9d91563dae39a1b02833fbef1e6d8f1  | Bin 0 -> 343 bytes
 .../90cd72030567bddbce06152fa0af1a024d542fa7  | Bin 0 -> 255 bytes
 .../9c0911c1a4b91f842670082c14af67d1f4b7bb6f  | Bin 0 -> 571 bytes
 .../c837e4dc49146de843c9556c1b3c886abb552db7  | Bin 0 -> 343 bytes
 .../c9bda5eb1a93526b4809d147647cc78452988e29  | Bin 0 -> 324 bytes
 .../d8bbba8dd44b71161c835cb09610e47401de44e3  | Bin 0 -> 341 bytes
 .../e8c24e95b095fee6053a49f51326479b60949424  | Bin 0 -> 326 bytes
 .../f97d97545054500e8035ac3c73957d0f75b2715b  | Bin 0 -> 343 bytes
 .../fc37856ff6d7a1cce83efad8cc7727f5aac44200  | Bin 0 -> 136 bytes
 ...t-0fa0559576ad2a45b06d0bfb84115963d7d48206 | Bin 0 -> 397 bytes
 ...t-f1536451f002afe7a6ff34a3755026e4ace1fee3 | Bin 0 -> 624 bytes
 tools/run_tests/tests.json                    | 418 ++++++++++++++++++
 20 files changed, 418 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe b/test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe
new file mode 100644
index 0000000000000000000000000000000000000000..1ca4fad3d71e18c590706474f9b69654713dc331
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#N|(fOMwXqv~9%_*$K@sHL6Z
zKgX&v2F63742(ruO!_U46q)}2=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?LwPI!B
zW791EpZc7msH~KMkwJ^=Kgb~rj}#cV8F-kOKuTE{I5{{O7#JBC85kH_9<60z;B-#S
zD=uO>g6c@?mPd&Uj7)6h%nW>~MP>F{|3PL=d9?I5!~P=1M=c!xA?l0DG=!L5vN13)
m{7+Q|na07n)_zB@ky;01%Of@hYX%O6wG5m^91I+s3_AdR3tL10

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad b/test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad
new file mode 100644
index 0000000000000000000000000000000000000000..031f444506f9ac41af0edf0aa9983a12ebe2e84d
GIT binary patch
literal 288
zcmZQ#V^U^FRY)%?NY+bE%_}Y~X5c6)V=8A;WwPf=Eh}Q+V`3{$<tQp+U|?YQpUP3h
z#1X8=#8#YIRK}4Cm15#!D+fuHX{9nU{AVm;U}AX0RF(>2F}5%;a4;5eC@?%~VPFK?
zQe2!9Uy@jqo>~&0mzbLxpI??*RFs*L%J83&fw4$|fsH`}q)rW_&i+4R5q7ny3?M~%
zDXD3Rr8y<>iKQhO`9+x}m0;I1fZf2r*s>OEIm08ir$uF{MG!4eU;gJ{U~GA`mZ6J@
ffq{#GfuV(w;SnPP!&(Lo1_j0zj#&&0k3ehy<5pC8

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a b/test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a
new file mode 100644
index 0000000000000000000000000000000000000000..735ac9711e25039974df4cb5185b3b70d549a7f0
GIT binary patch
literal 493
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmPw4O+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEA}b9hHm>qidsLlk
z6<@0}7PYi9{O4Fz#=v+el!38Gi%GwQ>5=09{~W=3Ol+yen^T$CS{|(}Pvt0cC}RKv
zuC)w|saC8^d~BNkQ=fAbm6b9uGH7xA2f2gckpcrZ0}m4u10zT+CkH1310#sd*z#yC
z3j?QfYHD#2(-DXpuYkSBz+m0-D3O5?<YhjPm+h4q*vgq1_)?3??6v-bjGgjm>2HSp
zMU0PHIQ~Pl7L{oTF}-ACV&h_9VECU}o}N`yX3eLdyq1H3lYxbE2O9$u)W>y9TK^ds
zK-M#W0<HW%$O<L~IZ&Xb7L^r&q&U|ya6kisf#W|Y20(sc14o7i10%~L&b18ckbq)f
zeAM!2EkhRr7azm_{|p@Vvl!MI1gmv0wmf2Eux8+3Sj)g!!~s#{z`(%C0SX3C0B~?J
KaP9d2p8)`fuY|Jz

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1
new file mode 100644
index 0000000000000000000000000000000000000000..9536b251a60b81268461db87e896f876dd12d7af
GIT binary patch
literal 349
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#-yjfz{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+832E@j=WjLg-kl_*$K@
zsD*){o#8(R17mL}17ndElYYx1rvLvrg7uh~+{!ih*iwr(r!ujXr*f2a6)}JT*IEWf
zD<(cR&GP@L&pC?9N*Nf-?Ef<sF=%mtNG66y3Jlx~JWMQL)eMX+kJf53a4<5kFo4-m
zl9Ppj^F?ZEaS_uIh|3^8V_>jud8Em}$fO1JfxXuM-%|UF7#|6=Xr^*>6oqMM-DhCn
qY<Z+B!XV7S2?{Z&N)0Whmuw6S#i_}qMXB+rc_{_?nRz7)9gF~trd`DV

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c b/test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c
new file mode 100644
index 0000000000000000000000000000000000000000..94f82bb2dccbb636ee7e8b1a5dc939e2a4d6cb71
GIT binary patch
literal 345
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#N|(aFw$$rP`zFT&wt6ow2B;
zo#8*nsxk(~L!k_eMOsYyEsqqL{{QC))?;EzE#7RM%EZ?4Xl;2aN0~zr0~m0vWnfIT
zVrAlE(=7j=`kbSvtdxO~L5u4@$R!Mq6d1S}c$k<#N?8~<IXD>@7#SED7#Ld~tz}{0
zbWTkzE@C=@<Vr?{{|pS)Esqiz7@640nHl&}i^}Y^{)0@L@@VOAhW$m1k6JkXLv$3C
vX$UdBWMg1p_@Al_GLM6Ehy7Z^V6_g$mPc$1)(jjBYZ*9;I2brM8Fl~wRdri-

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653 b/test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653
new file mode 100644
index 0000000000000000000000000000000000000000..abc292999f15b92b941965eadaf31a66f6d4332a
GIT binary patch
literal 297
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPU3fsG;c
z|J|Z8W(Fn(#v%qLHjq{c2F6EMz*>vSG(d_|?LmqaV2YX6D!x`{ENW?I_|L(>cqo*C
zu}F(azvU6r|Nk7pdQ5Do#hX)^*veBm%DNni7{GvQEd!$!D-$2v^Hh#<&HqJZr3{P=
zT3r7@b}~FtVBlupVPXNRWCW3nEsxf+FmO7jrWO}59YOX61A}$TqeKQqh*(jXz1IKV
z4Eu{1AGL7&hly!uF}-ACU|{&4sthuPgL8-dT7zJ<4#t*8Yz%7|IEy$KI5-)0001mq
BP9^{V

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a b/test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a
new file mode 100644
index 0000000000000000000000000000000000000000..62e3aa3fe4189ffe6e67c3862f6d4167e19a0e9a
GIT binary patch
literal 405
zcmZQ7PAw`+En?tM|Ift4R?e5o!BJGEq4l4MiGhtVond-<Q9-g^MoCG5kzP)Ies*F;
zYGO)!Wl3r=0}}%SSTZ-UB0f1kFS)d+C^fGnzPO|)H8HoCp%@~YoSIi$TFk&zo@!rI
z#>5A)qDX;(jUn}a|J|Z8MW(fiuhkigS{NAG8UAxHF!qKrFcxVs>9;&$`v0FJSdWP<
zwRm$X6I*#IM_HFc5d#=-tz}@eVrAlE(=7j=`kbSvtdxPV%>F-P5ySug|Nm=ofmloo
zj}#cV8F-i&!CDv?TOO^|WZ+<AU||5WSr~X<q$U;@F&zOrN|Q;Sjp=`?vb{mDUPloV
zTR8_u87Lqa7_3_!B{DFA6>$`m*=zm(Ew#Uh@sU6a$A73GUn)lt69YpTDCC%4vN13)
z{7+S0%c8)^!MVeJt<it5g$#@>j0}&~GH|9cFfed11gri3|35h+F)uGQhk=39s)%DP
Ng9ifx2j^0&9RSK=cZL7}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b b/test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b
new file mode 100644
index 0000000000000000000000000000000000000000..932db9f7b06e90540eeafcf3ccbea7487052c342
GIT binary patch
literal 353
zcmWek*2+lC%S+8+U@A^6DoZV5;P}tP#8%Fi%E3`orlIwpiHU)&oR1^bUd@(?jjP-~
zwWy4VPl17rA@%>=qB151#v%qLHjqXM2F6EM*pRg{FffA5DJs(d=}fiXf~s|`;%jxr
zqLy}s{~W8z7#I(QGB6ftG3mEFQe^u7pCee0i7mBwb1D;C%cHgBsT^evMGRoTwU&V~
z)rysgk4>}uf9i9NqOwv3Mg}de{~(tzJW^obX5e9B0xM-;Vc_K8WME)qU}RumY<aYn
zg@MyKHMO{i=?JPjty>-?GB7f+l`}K&r52UhYyAhAHs#UM-wgYUtQa4)aQug8C@Rws
yVtUEOz`*dIk0DhVWFUtE1LqF=wN{3~Y8{L%kJuQj88{f$GH@1gFmP}(>;M1`B3!}%

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1
new file mode 100644
index 0000000000000000000000000000000000000000..7bd4f7a6c893725afe8c7ef977defb6da20b2327
GIT binary patch
literal 343
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0P3=E7dkJf53a4<5kK-f@{lZAov
zMQUns5z`TfyCD8zV6bj^l*q`)qy=@qz1IKVQr7#67#|6=aQufT1%(XLOEv}uhX1L`
jYgrgLIXHLNuQd!->tJko#Ky3efwPE%frFEQgJA~%OBGr_

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7
new file mode 100644
index 0000000000000000000000000000000000000000..9b48e688892de4f00e59e2d85083dee9c997f10e
GIT binary patch
literal 255
zcmZQ#<0`jTWlAk8V&G$9D^KMpDq~<^VECWPQN+X%tjEMwoLW@IkqVV!;$tfZNtJ1(
zGBW&UEMj0{c*Ine3Su#~Ffed17I7#rJZfQJOfM=()+;W~i7!bkN>43`&r8frjn6Mj
zEh@@PNoDxY$iP^nz`(|!K|oz9#GsVaw8YY!lK8~Zl8pSK%#un5j-oOq2C)4Mj4f-y
z7Bf6zds<YMTEqZ0GdVS{xU`tzKL-Qjqn1Z&8M>Gl7`PZ17+M$^9x*a7tYzR};F!h0
F008csOKJcB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f
new file mode 100644
index 0000000000000000000000000000000000000000..09c1a72f39e87d752cd15bbd23f664d7127f75f3
GIT binary patch
literal 571
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsKJ7y{I5rFE_Cwz9=<0KQAvexg<U*F*!RwEiFE`m?8B)V^Ntk69Z$B2m=!v
z$Y2Qu#z$A!kj-XbU<6rIRHgwkI@KO#bn5@RMP*ED6<@0}7PYi9{O4Fz#=v+el&RdF
zgO4p0;t;TE2F4;SCjFL2O#lCL1nV)er50~aWnyc2w6;8zqpZt;zlZ@0xYjZ-rdqKw
z@v&)^|4)6+QB+pSz{sG*^`Ehbfr;Uf0s}V#4-*SWDGLK92PXpqBLgD?17pjhwJZ#r
zV9!Ea!~jyymRy!vqyh5FT19nr#%72M85j?7FfcHLBHU7(3UUkBAq))gKn7XD0CEq=
zHRb<PvABhYk%56BHMO{i=}0021LOW8#z!q246DjOA<8i2(Nb%83>B4WF)-<CI71Yp
zhOBkVqeMm~wsK}rRPllAvDf+!^6->LOMf%$FJhe60*mM(hX1L`_G=A-^*V|e$~1(S
pUa~PTfW$!F=iuC7zt%8Vt%I@U5gUUw0|&!e2F@Z51`bY!9RTIfn&JQe

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7
new file mode 100644
index 0000000000000000000000000000000000000000..4073984e0ea26298c2c490c431dd5e48d66f2a20
GIT binary patch
literal 343
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$1{}e9Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoaADd?R
z|J3IkMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-jt1_s8KM{6}1I2ajNAZ#ef$-=<-
zA~m(Ri0KH(T_RBbGB8-TJW6C>WYU7V-(KtgZ>jx7jE@9bIQ}!Sm0LkWfaxV00|UeV
lROPiS44fRCJM7mQ2CH>2wmf2ESj)g!#KFM9$-u#|0|1VqSsefX

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29
new file mode 100644
index 0000000000000000000000000000000000000000..3b389cbd6952a27c786c7b63be61d0031739fe86
GIT binary patch
literal 324
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21ds8qJm_-f}+ga#G=ah(&E&j_{8+oyb^{YkOr`1MoCG5
zkzPhYVsdtTNn%n?YJ72KRjOV}YI1%`Y7v7T6I*KW=2RxO@>GtpE{7rpFyLCtz-YzF
z#K)#t{y+6OM^RZR17n%}f5sw)|NsC0*Wv=Pm>3=@FmN;QFtLHPFfg_}TC2&x!N|bE
z0A{l=aK1=QEiPg@0`*@R$bSqB)-8_`85kjAMP>F{|8Gm}FJgQo(8BQ_Ca9ss^b%z1
l|5W9*EDW3+oIC8-8V0L%Ft$8mV_3_;X;s9*z`@C|0|2toTvh-8

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3
new file mode 100644
index 0000000000000000000000000000000000000000..46940bb22a11852ec7ea8517a43432ec6900febb
GIT binary patch
literal 341
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#N|(fOMwXqv~9%_*$K@sHL6Z
zKgX&v2F63742(ruO!_U46q)}2=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?LwPI!B
zW791EpZc7msH~KMkwJ^=Kgb~rj}#cV8F-kOKuTE{I5{{O7#JBC85kH_9<60z;B-z+
zEiPg@g6c@?mPd&Uj7)6h%nW>~MP>F{|3PL=d9?I5!~QD97LNZA<wa#0LQF5&7#JA-
lrz(RC<KWz3zt%8Vt%I@U5gUUw0|&!e2F@Z51`bY!9RU7yT3`SG

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424
new file mode 100644
index 0000000000000000000000000000000000000000..cbd97affbe09488960fa816ba959600e04d5688d
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&uk2F4-=CN_{>2?j=n^rC`fy^NBQ0wcYQg2d$P_>#n=oYeT@%&Jtq)V$>U
zl++>yMa9?Zj72RB4DAg6IT#pwLm3#0w3zf;9x?s@&k?N0#FkpTIhBd6Je8xY%b|z?
z47k=ZFj}!P@v&)^|4)6+QB+pSz*uJgpRtJH|NsC0wYWemCWc1}4BQMnOsrrn44f^G
z)@m|vFfy<(Ffg_}TFb(~`64y7xQOWp)Q4qd8e0Du7_3_!B{DEV#EQ!7wf_H>+F!)@
yNT7w|KTJ?Vi|HjB0|UeVRArDc9GpAs*BS<^buhL(Vq;j#$Z1u?!N9@Eumb>Zj9@wd

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b b/test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b
new file mode 100644
index 0000000000000000000000000000000000000000..bf9498167827596b45db26666e5626d010e4ec5b
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|6K;AqB6!J1|~L;J_!cKM_1U8wK6a;g3Ku@(*WsAwMWufRK~Pc@wGZ*
zQA<0+e~wjU42*|D85oPSnDkp7G5!C~5v<3=mRh_ym5Ht8(c1D<j<PO?A_g$vTFbzg
zYQ@UL$EI2SKlM3BQCTSiBZC&#e~?2M9w{(zGw?96fRwT@aB^@mF)%VPGB7Z<JX*`b
z!0DWtT3p0*1l5t&Esqiz7@640nHl&}If}~cwf=()oAPMsZ-)IvjE`Di0a8?^A;k2O
qje&vTf2uObI1Ww*h8^}y3>}OukJuQj88{f$GH@1gFmP}(>;M4wGg@E(

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200
new file mode 100644
index 0000000000000000000000000000000000000000..54fb7270fc54f7ac8f7ff380b86e13422c2fb2c5
GIT binary patch
literal 136
zcmZQ#E9X;BP0PtIPcF$}uvfEXVBBBC_^4&A1_K8Z8&`QMM^PCQp8^A0`F{{IRh@y6
zsfevOwFsmUBx0}3p!J`DfwAS$T86Sz&LS|2gR#higMs6BI|D;{Q9-g^Zem4zZfbFH
cVtQ(PPHJ9yNe08C7LX1O1_nk34h8`R07Swkd;kCd

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206
new file mode 100644
index 0000000000000000000000000000000000000000..8a2aa7d2ce2373599fe1bf3f25458012d5acaeb1
GIT binary patch
literal 397
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zdTL$?!~eTQWlRhVVENp{iufXsn!MEHlK7;=<m~*kwD{a&1_qGs<kY<4(qaa#@>Khx
zGA2HV6-5dRYz(RY`|lQ&DKf29e67w{)WX2f&hVdufw4D~fw4%7Nx$V0)Bpb*!Fo(=
zsl}U9nb^uxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^W%mCWix~d@|Nmc$i?N7-
ziQ$m~12+Q?6C+p$17pjhwVDhZARdUx!od3?HL<ve=?K_KO!{n0|5KIi4TAMLikR5S
zIXKEdp}@dk-SQ}rff1~Rqo~YY>;G@5{Y8wA1X?)$Lk0O#If|GV7|KAw#`Kbnfq~(F
zs`6SE1x^mm9rkOD{xg8AW?*b#WO%fefs=zFSPkUH4#t*8Yz%7|IIW5})-rf7FmP}(
G>;M4fb$9Rp

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3
new file mode 100644
index 0000000000000000000000000000000000000000..74ce06a70f854d71b79ee36a3b464baa839ef6b1
GIT binary patch
literal 624
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XGVdQm~LUT$JVd{Jt0eqLT`a!Gtr
zVsdtVT3UQ=F#`i5e);qwt%78|<kY<4(qaa#@>KhxGA2HV9YqQZYz(RY`|lQ&DKf29
ze67w{)WX2f&hVdufw4D~fw4%7Nx$V0)Bpb*!Fo(=sl}U9nb^uxIm)^miWtCvYb^t#
z6)O`Tn`Zg{)aM*UWu**^W%mCWix~d@|Nmc$3&dh#c%;C<&A`LN2-d>D*z#ztCIbf}
z0}BI~&BDO@A~mtNi0KH}QJPHpY)t=CmF*3J^*V}}*vdIL%0MB(z+m0-D3O5?tcati
z%wFsNZ>jx7jE@9bIQ~Ng`BFKGm>3w!Ktad!l8u3Z;eV>~S{4OP4$d9+YmNScEo5M9
zVPtr;mVuLlAz1DI|NqGuiFtWeISdS(Rz)0Z89*Uk&c~5zuV%}{##L^g3JNYrINdEO
zV`5+|Vqjte#gzmDBO+#UQ;Ule(^KPfQuESFG8j+-ivcOHKw$+BDn15C2zf9taBwb#
zhZ73}g9ZZwBLjnTYAQTfpy>hZ1GG?J*uSHQ@ev{v$~3g#p66Q2!T|BTL9ki}DCikD
Ii#Qk<09k3V{Qv*}

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index bd9d4eae1c..5a0fddd6fe 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23586,6 +23586,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin"
@@ -24400,6 +24422,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
@@ -25038,6 +25082,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d"
@@ -25654,6 +25720,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
@@ -26028,6 +26116,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
@@ -26534,6 +26644,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
@@ -26974,6 +27106,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
@@ -27326,6 +27502,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab"
@@ -27832,6 +28030,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7"
@@ -28052,6 +28272,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
@@ -29504,6 +29746,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
@@ -29548,6 +29812,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
@@ -30296,6 +30582,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
@@ -30890,6 +31198,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
@@ -31506,6 +31836,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36"
@@ -31616,6 +31968,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
@@ -31726,6 +32100,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
@@ -31770,6 +32166,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
-- 
GitLab


From db6011fba6ee5437e016831f8eee7fcc73f0a5f9 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 13:03:11 -0700
Subject: [PATCH 170/525] Fix inf loop

---
 src/core/ext/client_config/subchannel.c | 7 -------
 test/core/end2end/fuzzers/api_fuzzer.c  | 2 +-
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/src/core/ext/client_config/subchannel.c b/src/core/ext/client_config/subchannel.c
index 125a291f21..c925c28c67 100644
--- a/src/core/ext/client_config/subchannel.c
+++ b/src/core/ext/client_config/subchannel.c
@@ -135,8 +135,6 @@ struct grpc_subchannel {
   int have_alarm;
   /** our alarm */
   grpc_timer alarm;
-  /** current random value */
-  uint32_t random;
 };
 
 struct grpc_subchannel_call {
@@ -297,10 +295,6 @@ void grpc_subchannel_weak_unref(grpc_exec_ctx *exec_ctx,
   }
 }
 
-static uint32_t random_seed() {
-  return (uint32_t)(gpr_time_to_millis(gpr_now(GPR_CLOCK_MONOTONIC)));
-}
-
 grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx,
                                         grpc_connector *connector,
                                         grpc_subchannel_args *args) {
@@ -332,7 +326,6 @@ grpc_subchannel *grpc_subchannel_create(grpc_exec_ctx *exec_ctx,
   grpc_set_initial_connect_string(&c->addr, &c->addr_len,
                                   &c->initial_connect_string);
   c->args = grpc_channel_args_copy(args->args);
-  c->random = random_seed();
   c->root_external_state_watcher.next = c->root_external_state_watcher.prev =
       &c->root_external_state_watcher;
   grpc_closure_init(&c->connected, subchannel_connected, c);
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.c
index 5ccaa784a4..b133a948ee 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.c
@@ -264,7 +264,7 @@ static void do_connect(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
 
 static void sched_connect(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
                           grpc_endpoint **ep, gpr_timespec deadline) {
-  if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) <= 0) {
+  if (gpr_time_cmp(deadline, gpr_now(deadline.clock_type)) < 0) {
     *ep = NULL;
     grpc_exec_ctx_enqueue(exec_ctx, closure, false, NULL);
     return;
-- 
GitLab


From 60beb8615466bd790f52244b4bda6d6d2e24aef7 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 13:11:26 -0700
Subject: [PATCH 171/525] Expand corpus

---
 .../0539bf31b2310091ce30d0123142d63589939105  |  Bin 0 -> 48 bytes
 .../143789594154049441d565b65ce725fc4f8c12bc  |  Bin 0 -> 342 bytes
 .../1e7d2d8f6109f4c02815ce8582c799134f2ff5dc  |  Bin 0 -> 295 bytes
 .../2e82bfb7e8eede401ce75f6afe8c15ffd06130db  |  Bin 0 -> 23 bytes
 .../2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f  |  Bin 0 -> 570 bytes
 .../364f77bffd55805e2be9d2b3a071012e8fc3a083  |  Bin 0 -> 295 bytes
 .../490f5aa97dc05ef1ce089fa9d4fd377bacafcf18  |  Bin 0 -> 22 bytes
 .../4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6  |  Bin 0 -> 428 bytes
 .../50841095cafd9f9de6684fb3d89cd5fe148494ef  |  Bin 0 -> 264 bytes
 .../5a85c9bd6a6d7a2f753dd315e4747fc0249c8799  |  Bin 0 -> 264 bytes
 .../64c572e594c2d491a902e8fdff7b617ac0c6881b  |  Bin 0 -> 330 bytes
 .../74b69a49c2df95009ff18d820bbe7fe6ae797aae  |  Bin 0 -> 327 bytes
 .../792276ed826b9078ecfbd51e0136962f5e10ed6e  |  Bin 0 -> 345 bytes
 .../7be89fb64b3d931387e8a5b1ef51bf9cda18006a  |  Bin 0 -> 341 bytes
 .../8c501e1c87c42c4b7765ab027bd537ef72656605  |  Bin 0 -> 342 bytes
 .../b3b9e307ce3af6fa515a33668374e15fcc909ae5  |  Bin 0 -> 348 bytes
 .../b4037205abce710935a93d656f69928ecc814b50  |  Bin 0 -> 353 bytes
 .../c343ddb31042500e460861abc70e98ce3088ceed  |  Bin 0 -> 340 bytes
 .../c53efcb830c4ae5cba7b3e0803635445e1469103  |  Bin 0 -> 349 bytes
 .../c7c13a37189ce2482f5517f6ef0903431194e11b  |  Bin 0 -> 323 bytes
 .../cc7087fd7c7398e7c2afe3fb03e705262b5e843a  |  Bin 0 -> 272 bytes
 ...h-212c3b09f310867e1e8ffa7faecac75c12f4cda3 |  Bin 0 -> 180 bytes
 ...h-2f1092c48db455fbe1ae5e275f8d221dc8c52f00 |  Bin 0 -> 327 bytes
 ...h-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf |  Bin 0 -> 144 bytes
 ...h-916f6ab61cd358be9a241e2eb09851f700335eda |  Bin 0 -> 408 bytes
 ...h-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a |  Bin 0 -> 463 bytes
 ...h-ba2c1509ff87865d9e23c056b9c7fe2732825ef0 |  Bin 0 -> 407 bytes
 ...h-cce6ffed471344173c135e536b454f469bd07e03 |  Bin 0 -> 346 bytes
 ...h-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738 |  Bin 0 -> 383 bytes
 ...h-e7930097a989131890a316b0b1ed85801699562b |  Bin 0 -> 345 bytes
 ...h-ed3086c0ca03a427fca1817b52a4d6530fb4096b |  Bin 0 -> 82 bytes
 ...h-f8bf4b7d89c07d661b695a3e4fdf269b853fe168 |  Bin 0 -> 406 bytes
 ...h-fb41c97305a2c94d367e40863dc046c8f78a57c9 |  Bin 0 -> 577 bytes
 .../d4caa070bca058455b68c7b96961e3ca0f151b32  |  Bin 0 -> 362 bytes
 .../d913cc4e8f2900d7035d196fd62707cf1194e02b  |  Bin 0 -> 362 bytes
 .../deeec423355ed885b906c6770c96d3f17583fdf3  |  Bin 0 -> 314 bytes
 .../df8ef8bf4069afd375066fbb74cbe137f73db829  |  Bin 0 -> 344 bytes
 .../e23c0abb4f625880dbae1cc81ce5b146992f5d36  |  Bin 0 -> 326 bytes
 .../e4ba9f46387c5687fb9003724893c0b199debf2d  |  Bin 0 -> 343 bytes
 .../eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7  |  Bin 0 -> 321 bytes
 .../ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8  |  Bin 0 -> 263 bytes
 .../f0e8450c85a3c6dfaa50ee65399270c59a127088  |  Bin 0 -> 339 bytes
 .../f0ee077bc982be02a547d81d85e5c69e36fe38fc  |  Bin 0 -> 267 bytes
 .../fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4  |  Bin 0 -> 406 bytes
 tools/run_tests/tests.json                    | 1366 ++++++++++++++---
 45 files changed, 1167 insertions(+), 199 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105
new file mode 100644
index 0000000000000000000000000000000000000000..37bb90ddf418464883d2f67d403df4ff851d38b6
GIT binary patch
literal 48
zcmWekEXZVFVk_t4NVQi>&PdG5OU;QdE=f$zPPK|pD$PvIEX&MENiAYvEMj0{E2#tk
DW62Kl

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc b/test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc
new file mode 100644
index 0000000000000000000000000000000000000000..9091ea32a8ac2d786a6d4a4b02f66931a5036f73
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D82fvKF2Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+|DXDtqo}NufssLr>p#dL4388TxEXkuSU^fy7&tjN85kHD7#SECTOO@t
zVc>L5O)V~BI)ds*>y}4}j7)6h%nW>~97SdJTL1qm7BNhDwDdQ_{vyUlEwJz?D$@{R
sddbGX!0<m+8Dts<=MMX|M!{+wjE`E_7_1pM7}hdy7I83ea5C%w0O;;o_y7O^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc
new file mode 100644
index 0000000000000000000000000000000000000000..4b9572f12a4359f98c79dd11d4a3378db2a422d8
GIT binary patch
literal 295
zcmWekEXZVFVk_t4NVQi>&PdG5OI43AE=f$zPPK{$iKlXK6qRXc{byogfU2@(V&f{e
zPc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lfi(1+l{&O%e9tv%F#Pt6^
zN3b3fTWay<R3^6aRF1MPh9U+q;9ASTXvNCJ$EI2SKlM3BQCTSiBZC&#e~^g`j}#cV
z8F-jj7#J8C7#Ouc8W>w1tz}{0bWTkzE=nrRWIBTEOa=z)mPd&Uj1aM+GJCE6zZv!y
zF+OVH_zx4)&|*r>tjo+vEn;9SddbGX!0<m+8Dt~}=MMX|1`JGWCBbSPl^}Z<IEy$K
HI5-&q_V-V$

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db b/test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db
new file mode 100644
index 0000000000000000000000000000000000000000..84125995fdfca27b9c1c2da72429e6cd3c23da4f
GIT binary patch
literal 23
ecmWekEXZVFV#rIivdS#WEUAnyPAo}fU;qG4hz8aG

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f
new file mode 100644
index 0000000000000000000000000000000000000000..818728ac8063073c277015b739ce1a2d3cc06581
GIT binary patch
literal 570
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsKJ7y{I5rFE_Cwz9=<0KQAvexg<U*F*!d!EiFE`m?8B)V^Ntk69Z$B2m=!v
z$Y2Qu#z$A!kj-XbU<6rIRHgwkI@KO#bn5@RMP*ED6<@0}7PYi9{O4Fz#=v+el&RdF
zgO4p0;t;TE2F4;SCjFL2O#lCL1nV)er50~aWnyc2w6;8zqpZt;zlZ@0xYjZ-rdqKw
z@v&)^|4)6+QB+pSz{sG*^`Ehbfr;Uf0s}V#4-*SWDGLK92PXpqBLgD?17pjhwJZ#r
zV9!Ea!~jyymRy!vqyh5FT19nr#%72M85lVj7#KnkPAN_WIR)$v1_pQ-gX~}cIS1sJ
z^8cw=oWjG%z`&52T3p0*B$0uEaeooxqZST^Rb`+6Wtj44sWm);ipsPYnDjNAA&OB0
z*1F|UA|n%9IWs7x_(1m9YyAiLcgmxszZv!yG0tm&#d8tE|5RoBwFbd@9YqXf8bVAj
o*%%l=Vj$mhaPF{QYZ$E7!PxSMjlr6MgJCTLXAuVj2PeZ00N!t!Bme*a

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083 b/test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083
new file mode 100644
index 0000000000000000000000000000000000000000..720baf725d3b55314586051a99f205dd44186dd2
GIT binary patch
literal 295
zcmWekEXZVFVk_t4NVQi>&PdG5OU;QdE=f$zPPK{$iKlXK6qRXc{byogfU2@(V&f{e
zPc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2@zIsFim%lfi(1+l{&O%e9tv%F#Pt6^
zN3b3fTWay<R3^6aRF1MPh9U+q;9ASTXvNCJ$EI2SKlM3BQCTSiBZC&#e~^g`j}#cV
z8F-jjz$zKFKon!kqqQsyoX)AK#YIV_nM_BJoyovp-SQ}rfe|8BRA#UB|2M<_BF0B8
z9RFcr8d^-LnRS^tsYMKoMK9SH7#RMiDuayV;M`%q)_{SDtt42jqY`8f17{Hj0|zGq
E06^_e@Bjb+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18 b/test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18
new file mode 100644
index 0000000000000000000000000000000000000000..987f4c5425021bd7c08c53c87d56db806f914ea2
GIT binary patch
literal 22
dcmWekEXZWYOSMYPEXypZj4v)pEJ<Zx0035a2Xg=b

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6
new file mode 100644
index 0000000000000000000000000000000000000000..099cb9f2b7ea8c3cd538fc86c893718dea968124
GIT binary patch
literal 428
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zdTL$?!~eTQWlRhZ`P{^c_#%*+ywv29_@u<-?EJK}_}pR!u<qp4yyDVg2Cni{`=T-?
zK8O`X3Jh!z>5P(+0wcYg{QT_1jMT)G_@v5`)M5sP)c^f=i^>$4)+)YMXDn)AU}$If
z&%wah8_K{~q{XD)`iSZOe~w^1Cbrb#&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10m
zj-s+s2F5b`|BOWp|NsC0uf+voF)=(+VBlupVPXVpVPI@|v{sXWgOP!S0nBD$;C+#r
zSX{((1ngi<CVe)h|EbFM2ElqAMNDkv92{k!Kw@C9Zh4f*zz9~vQB-EH_5Zij{vyUl
z0xcZ>p@Mv=97RkF3}v8DWqQfRz`*c7Re3Fo0w)LO4*Ru6|G^eAFt#u<JX*`Z$-xk;
f_W%F?<c!3;ywn^922QIYj<pOP3=ABcOLqVO3aEpM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef b/test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef
new file mode 100644
index 0000000000000000000000000000000000000000..1e289ffefaabdf57921f8b0e4507dac3cf026516
GIT binary patch
literal 264
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG;jkBh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;UI_+9hV-I>WW9`%k^&>WjDp1E?D&$zq@2|F;>@a4
zz0|zq{FKxp21Ui!>WoD#3=HiI|2Y^KdqWu*i?o>ZTOKj}|IZPu$HZ2=IhBd6Je8xY
z%b|z?47k=ZFj}!P@v&)^|4)6+QB+pSz*uJgpRtJH|NsC0wYWemCWc1}4BQMnOsrrn
v42&(0)@m|vFfy<(fY~g344f}gQ;Un3jzE1_R;Ho#pMimiAurX+Dzgj#)cHv3

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799
new file mode 100644
index 0000000000000000000000000000000000000000..d30cbc457ef85777940340249f55a46ea492d9e7
GIT binary patch
literal 264
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG;jkBh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;UI_+9hV-I>WW9`%k^&>WjDp1E?D&$zq@2|F;>@a4
zz0|zq{FKxp21Ui!>WoD#3=HiI|2Y^KdqWu*i?o>ZTOKj}|IZPu$HbOeyg8MLtvr>Z
ztjnQ@0Svg-GB8@PGV!r#mj6$E&QVlW%D`A=|DUml;s5{t|FyV4EGC9W3Jlx~JWQ-$
vEewn;kJf53a4<5kFo4-C44f}gQ;Un3jzE1_R;Ho#pMimiAurX+Dzgj#>sU!b

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b b/test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b
new file mode 100644
index 0000000000000000000000000000000000000000..c96d8a18be44bb79a87b83dbdaaee236f2ba9c87
GIT binary patch
literal 330
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG;jkBh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;UI_+9hV-I>WW9`%k^&>WjDp1E?D&$zq@2|F;>@a4
zz0|zq{FKxp21Ui!>WoD#3=HiI|2Y^KdqWu*i?o>ZTOKj}|IZPu$HZ2=IhBd6Je8xY
z%b|z?47k=ZFj}!P@v&)^|4)6+QB+pSz*uJgpRtJH|NsC0wYWemCWc1}4BQMnOsotH
zAcv;fLmbM$z`)q@Xssp#2O|Rugw4Xo!1*GTfsNsRDhJ#PPeFdrU|@W-mI35Eh~o~W
p78fxcfrdy~nTFPX1_maEyp~5@Aa{YB#lXnGz>#WYl{u@70RXcYSsefX

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae b/test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae
new file mode 100644
index 0000000000000000000000000000000000000000..e2da05f1687db87ce8a7348c3699217298bd6cf5
GIT binary patch
literal 327
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBsuuvxFhFsI;hziBExn
zjUn~_-J&uk2F4-=CN_{>2?j=n^rC`fy^NBQ0wcYQg2d$P_>#n=oYeT@%&Jtq)V$>U
zl++>yMa9?Zj73^43=HiI|2Y^KdqWu*i?o>ZTOKj}|IZPu$HbOeyg8MLtvr>ZtjnQ@
z0Svg-GB8@PGV!r#mj6$E&QVlW%D`A=|DUml;s5{t|FyV4EGC9W3Jlx~JWQ-$EexD3
zkJf53a4<5kFfcH-JX*`b!1*FIwYZ4s2-J&ZWf}}xkN&q<GbA!FLd1&7?6v;?mfBy$
z_(-6I<3CJLLyPGp8v_Hw|5Rm=F&vyb?AICwt93B8JYr*5%gAX}#KFM9$*=<ex6WW>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e b/test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e
new file mode 100644
index 0000000000000000000000000000000000000000..b79e3dc9e9f914443662f4ab545cf1f5fba8e002
GIT binary patch
literal 345
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921Y9;J~qwr
z|EbS8ipokE7-h=r|1%abXmNo^CWc1}4BQMnOe|pK3=9m6Esxe}GH@_5ut3;Ql9Ppj
z^F?ZEaS_uIh{GTrV_>jud6dY=$fO1JfW6lL-%{55ix?jXv~c`~C<O%#(@Qo628REs
l%4=B|I5{|X*snDRR_kDFdBn!BmVvW~V>$x|Cj$q=4gl<ITJZn?

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a b/test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a
new file mode 100644
index 0000000000000000000000000000000000000000..651c1ab8b02fa1f9aca39944980ea3f7d3664097
GIT binary patch
literal 341
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hnCmWhc?gD({#%*Iu2pITJL
z#HYZ(#*q5|Zc!N%17i^b6C2132?oYTS3qW17nNx+v2m5B+Jlrrj4eXwSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$1{}e9Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoaADd?R
z|J3IkMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-jt1_s8KM{6}1I2ajNAZ#ef$-=<-
zA~m(Ri0KH(T_RBLGB8-TJW6C>WYPk;pQEVEUhDsFsr^Naj|5sc{xh+aTR}sB=_MNj
n1H=DR<+UsfoE)4x?AICwt93B8JYr*5%fMO0!N9@Ez_0@VGbdRh

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605
new file mode 100644
index 0000000000000000000000000000000000000000..02c16298f9efd36330dfca4276df91144d91ff6f
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+|DXDtqo}NufssLr>p#dL4388TxEXkuSU^fy7&tjN85kHD7#SECTOO@t
zVc>L5O)V~BI)ds*>y}4}j7)6h%nW>~97SdJTK_?2O?kBRH^crS#z!r%@F*(N5Mp}C
q#=yYvKUEoI8VBbN`?V&)Y8{L%kJuQj88{f$GH@1gFmP}(>;M4Zc3Rp1

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5
new file mode 100644
index 0000000000000000000000000000000000000000..df23e880c0784adffb9782d45c801181029235bc
GIT binary patch
literal 348
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(_1}t#iGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!AX*`M85kI$=74mj+N0`RtN2=-v8bh;
z;XlW!G6u#&p$v>gT1@&aj})2y|K|wSV`57!-ki$B*79g=c`8SlLlFZQaIIxvOtoTV
z;$zb+|DXDtqo}NufssLr>p#dL4388TxEXkum_SNd7&tjN85kHD7#SECTOO@tVc>L5
zO)V~BI)ds*>y}4}42(={<;)CxsYPY>TK_?2O?kBRH^cra#ukqM5amT>8bVAj*%%lY
s{--K~4CCP3VZYWeSgnJx<q;c0MoCG5A%iso2g6zh&H@ew4o-$00EA*(i2wiq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50
new file mode 100644
index 0000000000000000000000000000000000000000..b2b21d737dac9d65a4da7ddd5ee533898778ba4b
GIT binary patch
literal 353
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&u^1||l^A_gWVHm3in%Jm#YY#?JK7#JDSiwctUGD=DcjPx=J5|gvzOA?cE
zQsav=t5Wq+^OEyZQi~WA6<@0}7PT-iv@`tYU|{SGWne7QV$yGU#Pt6^N3b3fTWay<
zR3^6aRF1MPhav_r;9ASTXvNCJ$EI2SKlM3BQCTSiW10Pb#v+FQ|NsBj;sUXl7#=Aw
za5L~Qv4XWQaJD>JtI5E@$iTwDz}WI=EeiwZi`3NOBBmoy&z6;GX#Hnkux@#j$iN5@
zD=M?s`u|&Me-Yy&ffkPcFhLD1rk89WQ~#$bgUsRJ++n}gFj%dFvE|_-Hior~oK{5~
Y3>=(gj71ELEsPA07<Oo_W$<7C06@@Z761SM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed b/test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed
new file mode 100644
index 0000000000000000000000000000000000000000..c0223ed308a4e7e83f9e9c3020cc1a7c78dee689
GIT binary patch
literal 340
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kI$=76-O+M{Y+tN2=-v8bh;
z;XlW!G6u#&p$v>gT1@&aj})2y|K|wSV`57!-ki$B*79g=c`8SlLlFZQaIIxvOtoTV
z;$zb+|DXDtqo}NufssLr>px==0~5m|1qN;g9wsJ`QWgeIMg|53P7X!}2F8|0YgrgL
zol{ebi<pj}IMTZ1Q6d8)6I(em17B)UnZ4G3kWo_}E&a`~zlyPi<3B`oQJIDi(@Qo6
n28REs${@2iICt2u4OZ)5Y<a}SV9mh6u$F<dh=YNHlVJw{o}5}&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103
new file mode 100644
index 0000000000000000000000000000000000000000..2554e378887d7aaa9d4659bb40d0ea309f3b6b85
GIT binary patch
literal 349
zcmWek*2qZA%S+8+U@}fEDoZV5;P}tP#8%Fi%E3`orlIwpiHU)&oR1^bUd@(?jjP-~
zwWy4VPl17rA@%>=qB151#v%qLHjqXM2F6EM*pRg{FffA5DJs(d=}fgRDpN$#xmNMD
zI%82wJHvmDRb>o}he8<`i?o>ZTOKjy{{PPrtjENbTD&=xiLHfW?f?J(|Cg6NN_8k=
z00XYI42-E(tW11tn&tmfpK}zIl`=3gXmR}qIfmhp0s}V#4-*qeDGLK92PXpqBLgD?
z17pjhwJZ#r&Z()zMNCIf9ctb3D3O7YiLIQOfiJbF%wFq1$gC-kmi}gt+F!)@sD<M{
yL_<-Th7i+BHU<WU|EbC#<2X2X*snDTR_kDFdBnzG&A`F1mVvW~gMovSVFv)D(_gCq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b b/test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b
new file mode 100644
index 0000000000000000000000000000000000000000..8428cca110ee46df86cc9684675774edc3336adf
GIT binary patch
literal 323
zcmWekEXZVFVk>82E9c`#wO6xcV&f{ePc15A;!|K?V@Umfx2TMXfw72ziLIzCwMc@2
z@zIsFim%lfi(1+l{&O%e9tv%F#Pt6^N3b3fTWay<R3^6aRF1MP1_lNu1~A}S%fQIW
z#K%_tU-P+UQQ5!$r3{P=T3r7Xm>3v}7#}fkGw?7mF)%T(F)%PNf^;~irWO}59RayW
zGnIp*s4PS4KLZ2Ub;%itd3mWh@x>*H$=Rt^@kymj`fLpUQ<d!vg7rFznApzor52TG
zXfc!({byicY<UF2i42S&vr;*V%IvlN|7Kv!Ol@J@U&Q#Rh2uX=LPHB=5Ca3lqyMSO
vYu7SxaxkzkaB^_&uwQEsyf#y>gRv|#CndEAWM0u)2F@Z5u>aUfJSrIgj?7ot

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a b/test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a
new file mode 100644
index 0000000000000000000000000000000000000000..ee363c75f33924c744de05643e2ef0265f47b23b
GIT binary patch
literal 272
zcmWekEXZVFVk_t4NVQM)$w<u0OU;QdE=f$zh6<|LGO=-$+ou+lG4UxdurZ|mzgtws
z#K2g@z{FNmmRcmi!1(COTE*Auj72T&4F5S87!QTEJYxF)pCee0i7mBwb1D;Cc`8R)
z7Xt$W69X7<tz}?jW#VHi|F8L6v#6|;fssLr>%RgM149wxBL;2;9wsIRHU<U;Mv!Xf
z)YRf4rXx(LR`E%tnW>p&Y~_5Z92`Yu8e0Du7#Ld~B{DEFv6W}$@TGDTmDy|k|IM(!
zi1ASi$A6FqKw=tNO!{mL3@NEa5LcHlRQ^v@UdzJ3$-%k9eyu^UUI$~#qqPj2MH~za
E04zyK0{{R3

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3
new file mode 100644
index 0000000000000000000000000000000000000000..61af110430ea303b33e7f83f469d30522f9146a4
GIT binary patch
literal 180
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfw~UE_v50|*ZC_bxkp=_fqbq9_)zulB
zi(1+l{&O%e9tv%F#Pt6^N3b3fTXAYperaAxd{KT<W*)=lR3^6aRF1MP1}NZK%fQIW
zq{+ut{y&wYsH~KMkwJ^=Kge)~M+yww3{30{JgKS0MNCH$85kJ%7co9+;rP$QR?Y`f
Yt;M9T!N$PA@IO`Aeyw4!UPloF0Dn#}y#N3J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00
new file mode 100644
index 0000000000000000000000000000000000000000..59860c684ad40b7718b215d268983dc5385b9ecc
GIT binary patch
literal 327
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1Xj@)!L4Hw5d~tGRW(h-TQE5>b6Q2SD
z8$;^<yG3P842(q#Ol%;%5)6zC=|u&}dKo1p1x9)q1&PVo@g<2#IjQl*nN_KJsd>ry
zDXB#aii)q*8H==97#P|a{&O%e_J%Sr7CmCp(r;n<|DPjRkBKd{cylTfTX`x+S(if*
z0~m0vWng4sVB%xbEdQVSoTI3$l!39#{y$?8!~g&P|7&r9SWFC$6d1S}c!XHNS{OK6
z9<9}6;9z86VPIfvd9;>=f%8Rb>c9X0|3kf4R;IzA_2_?#HA5l;BSfsI%wFsNZ>jx7
zjE@9bIG_rP$~3f?Ua~PTF#Jzd1{uS_xx;>~VX#^UW6L8phP8~GRz(~P9Gnb00Mtuj
A-T(jq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf
new file mode 100644
index 0000000000000000000000000000000000000000..44d268ffc4c81d982c4f838f0c367bdb9942e5d1
GIT binary patch
literal 144
zcmZQ7PGw>%=i^AUSF>ee<0`jLEh=N;Q($0YNd14esEmn$v50|*t*9)uh>?Nu(UrA|
zuhkigTG|=@b1*O-3T=5*RK~={^gmTOLQ$7NBejTuW6yskkb$Wj97SasTK}1t7}yxo
uiwctUlJoQOQj<$E%Q8zU<BLlYOHvt%Q<L-aQW6=;iYntvi&Kl@(^CPR3M}UU

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda
new file mode 100644
index 0000000000000000000000000000000000000000..e3ca42a2a134e46aa6e480537e10972eb5ba037a
GIT binary patch
literal 408
zcmZQ7PAw`+En?tM|Ift4R?e5o!BJGEq4l4MiGhtVond-<Q9-g^MoCG5p<YgYes*F;
zYGO)!Qe{bMF#{6=BUm;!u_C@GH90>oFEzO&J}EIdJ3lQgKDU?wESsE~S6o_rk*hq_
zzNn0e4`N4=0s|XE>i_<`MP-UiYZYIsGZwWlFtjuL=U`y$4P{^~(qhtYdBpVpKS!`0
z6I*KW=2RxO@>GtpE{7rpFyLCtz-YzF#K)#t{$DHgIY&`hDFb7f{eQ+HhX4Qn|JUOB
z&sfC7z`(@tNP&Tyfrp6^tc!uM<<VMA1`b9B76vezg@N})YGQE_(-E+{G@10-nEt0K
z+ZzPybrdnNm2+^EfdYep!Mf#9A_F5>5l2y(z1IKVQu~V-9|^Q@{D%tirE-95ECYoe
z(@Qo628REs%4=B^I5{|X*snGE54Mnjv4xT0(OL%1R0akH4u;^8qQt!7g8ZVA_~O*$
R(xS|gN(K)G1`f`pI{@Fkc_07)

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a
new file mode 100644
index 0000000000000000000000000000000000000000..45529a8932a9d8e3ffb25c03a2252d8195f82bb1
GIT binary patch
literal 463
zcmZQ#<0?<JFH&VHPAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_Bb7NpWXwWy4V
zPl17rA@%>=qB151#v%qLHjqXM2F6EMz#5CnG(bvI?NODkReY_^Sk%(a@SlT$@lYrO
zW04k<e#;}K|Nl9H^_bXFi#Mk-v6ZKClyxx_F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#
zw7C8=7BMg~FflMQFmN;QFtLEuGHQV+#+FBGSr|B-Q&WqJn2sR(gMq=i<xwI7BNJP>
zHD4-6Q5i!S6Cc>VB2y+lw(|d}97RlEhk(L?1L72r2Ov^q)~O(CnI18fT>~)~TNoG^
zI2emK6c`@0F#Km^U@QU!3dj^_pfE5nwyXs!VK~J06cj=l42+LB*D@di;Ze(@wG3Sh
zTnr2hEsPA07#SGWGH@_(%wk}$*ZTjPVSf?hqZW?;5MO`-^(7kv1H=DRWsny+ICt2u
YH3(MgU~GBB#;}%wvxtL%gOgzg0Df0@RR910

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0
new file mode 100644
index 0000000000000000000000000000000000000000..48a51f962d64a0ace350cccb0b41106f25d2b840
GIT binary patch
literal 407
zcmZQ7PAw`+En?tM|Ift4R?e5o!BJGEq4l4MiNT67ond-<Q9-g^MoCG5kzP)Ies*F;
zYGO)!Wl3r=0}}%SSTZ-UB0gCoFS)d+C^fGnzPO|)H8HoCp%@~YoSIi$TFk&zo@!rI
z#>5A)qDX;(jUn}a|J|Z8MW(fiuhkigS{NAG8UAxHF!qKrFcxVsF*4}4JYxF)pCee0
zi7mBwb1D;Cc`8R)mqQT)7;vp+V6<Xo;$zb+|DXDtqo}Nufw9c~KVuQY|NsC0YjJ^C
zObm|{7`PdDm>9uY7#Ld~t<_}UU}Run0JB*bcweL@78fxc0Xs{RNuQ1Bf2y**L9kv&
z5ffWE2S*twC>R*5TOK7cFoG3v6qVU){r@eszliaXKnurzs32b|M-dYPLm4RSm|n6m
zFfja2RbI=Yz{$b6!+x#Nf3SrNj4g}|kJd79rZO-va4-a`{r~?zIU_MIFExjOfzzsp
PV=aRR0|N)=QmY*R8Txm0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03
new file mode 100644
index 0000000000000000000000000000000000000000..d56a63a161cc028fc95936084acced0d79ec8978
GIT binary patch
literal 346
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#-yjfz{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+832E@j=WjLg-kl_*$K@
zsD*){o#8(R17mL}17ndElYYx1rvLvrg7uh~+{!ih*iwr(r!ujXr*f2a6)}JT*IEWf
zD<(cR&GP@L&pC?97#Pd!|1%abXmNo^CWc1}4BQM%JPa%#)r>8V)@m|vFoJj>HUk5g
z<YZyse36=3T*Pz);x3547#OTu9%(W#GHF5GZ?E<Lx77Y3#zz7znyDNeMPV9R_Zb*C
pTOR3(FbH#Sg2D@`QbUXBB^v`nacXjDQEGf@UP?iJW?sn*MgV=HU0?tJ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738
new file mode 100644
index 0000000000000000000000000000000000000000..6a10e383bc83e5d59381fae504fde92a4cd333ba
GIT binary patch
literal 383
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zVtQ&`3B&)pMP*D3j71DgY#{9t42+MifOQv@X)v*Im8aSll`-)_3@qYjU}H%A-+#BL
zOp$4=;%jxrq80{*c7}le91M)Tp$v>gT1@&akC^`d=LptgVoNRFoXW&jp2|_y<xs=`
z23%_y7_C^D_}Dbd|EE6ZC@L#uU@Wu$&sfCp|NsC0T3jF&6T>3~25tr(CPuIp2F8|0
zYc&}<7#Ua?z-$%<-WRE<#YId<z^-D_XJh)Gs%&o%tk+S*#8%G1Q3moh1A}$TqeLb~
z2B>H3wf_H>+F!)@NT7w|KUgD25nn0?$ny+kpnzg}$;QCI@IO^~EsFvt2j>p^wMPHJ
r7BVolFfu$^%fQLO5Ud7rW(Q--BQ}P$44hU)9BUao7#KJ>8Fl~wN5XLU

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b
new file mode 100644
index 0000000000000000000000000000000000000000..ce70a128a1f5609efe9997baf8870e140f1fd3f7
GIT binary patch
literal 345
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bErUl{!^OZX>aHQI+*)p+lmD{Hll`-)tFt9PC
z{=ZvP#>Bu_#K6P`(ksEh$e3PKkgS(cQc_@~mr;<IoE=}1n3R(mUt9$?R4+9zIX@+}
zh+(bbYjwt=76yiPhW{K4jJ=@@j73^Z`Yn%`{{QC))?;EzE#92U#8#flQP$;9!~h0d
zYZ(}=Sef|PG|T^|KIbSZD`j9Tv;WUn#PI+B|NmNCAQltDBLxO-1|B9>uoec!mPczf
z88{djSQx-;76#52sj0<9Oh>@(;ovAM(@^@)z+m0-D3O5?B34vpul4`8)czvIM*=Mz
z|6zg}T1+q57#JA-rz)>yVc_K8++n}gFj%dF5galMj3D(bYZ*9N9<ebntYzS|D&k<^
I;AGeV05_sw(*OVf

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b
new file mode 100644
index 0000000000000000000000000000000000000000..d644b941f6549847c54dec1889f5c18de73ea7a0
GIT binary patch
literal 82
zcmZQ7PAw`+En?tM|Ift4R?e5o!BLW2z))1Cq4l4MiGhvLnqhi+Q9-g^MoCG5kzP)I
jzE)yJYGO)!Qe{bMF#{6=V>(D1M^UQ1nk@t4{vt*I!z&iM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168
new file mode 100644
index 0000000000000000000000000000000000000000..464e436d2d68f829ed79dac6c51c878631f7071b
GIT binary patch
literal 406
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX!XRHmWz--?NWt(=b|)n3h(iH)n=KDDTf
ziBExnjUn~_-J&uk2F4-=CN_{Z2?oYTSJ;@?%K1_`IKWyN7#KmEqB0GT&QyC8oeb$k
z1<883i52lhsmb|yd8x@I@kxov+4*T{@wvqe!Fo(=sl}U9nb=w$tu0UGD03)c00XYI
z42-E(tW11tn*URua}<@8GB7e|as3CmgW-_^12+Q?6B7d?NG&G^Cj$c`h|SpYXe|o^
zr*mp*aS_uIh#Rj!-DutND3O7YiLIQOfiJb_O_{yce~@8Q9xeUNu)m1$Q47a^h=!sv
z4I!qNY)oui3=9naQ_It{ips3{6qG?Gb8zlpU}Iq7u=)=QK#*J5z+tJuz}WJLb1j2<
zQA<0+e+~x5M=g)mGITL;@iF}W&%j|ni(#!{uv!OW%Of@hYX%O6wG5m^91I+s3_Ae!
Cv~X?!

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9
new file mode 100644
index 0000000000000000000000000000000000000000..d957c6053d492217c2cec42d06719bc73dddf78e
GIT binary patch
literal 577
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`DE0fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21bVTqJm_-jFOT9BfZSL%#zH+ocQ9@!qU{d)cCy8+@#bZ
zhN4t^CO$T%GLRKTAY+iUWE3POXUCT$Cgr5Y7iU(b>ZPP6=cl9=G3YU|r50~aWnwE&
z<tXcNC}IEuuC)w|R;)~XY?|f&Q=fAbm6b9umf8PjEMoZo|Nnn2E)a`};gJFZHv<n7
z8(0eiW6PtpnhYF_3@i*_HVXqM2PYF7lVa))<p@O`hGxzesj0<9Oh>?>0QYsOJ%+E#
zQkmF_7>YC)7$03(tN2=-v8bh;;Xelh<Dt+Ntw&7%|8oSRIve5u1_qF`L9Q<Up9*#}
zgBBMnic=XtF34rL!@zU|5fzX)DFej`1A}$T;YW!Kj1bwPGJCE6x25(MF+LJ#;rI^|
z)X-vj3G(#+ROPi`U+%D9YY?o~!PxSMjbSYVr&SRL1Bcdsa4;k?pcwX>fs<he$UK;F
XprpX0k8YYtupY>?wG5m^91IKqVWOaH

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32
new file mode 100644
index 0000000000000000000000000000000000000000..f077bfcc558694ac203f72b05df86df783ff841a
GIT binary patch
literal 362
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`DE0fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21bVTqJm_-jFOT9BfZSL%#zH+ocQ9@!qU{d<ka}Q(%huf
zB8F6ZkO2@oia_Qd>B%TaOwNukNleN~jW5ouO4UnAP0mkAEn?7PVoNRFoXW&jp2|_y
z<xs=`23%_y7_C^D_}Dbd|EE6ZC@L#uU@Wu$&sfCp|NsC0T3jF&6T>3~25tr(CN{7Z
z2F8|0Yc&}-7#Ua?z-$%<P7Y2cHYUZ?9m)}kIt<O6FH%#Bi<pi;T*y%d3IzrR>y}4}
z42%%5qB47}|F@;~7co8(XyNz|6V%XRdI_@Rf2#6Yu&F!j*BS(?buhL(Vq;j#z-d*)
K!N9@Eumb?7`enHQ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b b/test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b
new file mode 100644
index 0000000000000000000000000000000000000000..111b8a0095ee2440fd186c48d671293d27c63e67
GIT binary patch
literal 362
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`DE0fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21bVTqJm_-jFOT9BfZSL%#zH+ocQ9@!qU{d<ka}Q(%huf
zB8H+=dnP_MrZSKnMIdvK^kftyCTGW&Bqrsg#usN+rRt@mCg-Q57BT2Cv85JoPGw>%
zPvt1<awuW|1Fp3Uj8?2nd~BNK|5KlH6qS`SFqYZ>XDnj)|NsAgEiMp?iQ$m~12+Q?
z6B}3y17pjhwVDhZj0`LcU^WW_CkH1J8<S${4&?|%9foGk7pbYmMNCJap-=`21qKG|
zmPd&Uj1aM+GJCE6x25(MF+LJ#;rI^|)X-vj39{sWs`6T}sXOe~8U(9#Ft$8mV_3_;
NX;s9*z`@C|0|2LfWw`(V

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3
new file mode 100644
index 0000000000000000000000000000000000000000..83e059c17b1e6c49e7d1810f69d297f37dbb4554
GIT binary patch
literal 314
zcmZQ7PAw`+En?vK&&0%5&X>wzRb;K9^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM^{RU67z}+@{3C1i&K+Ji!w_p8Q4K)6_sg#bf?;*>Rzk(
zTAi_|rJdnF2Lt1wPzJ^#EhhbzM@;|!a|G)#v85JoPGw>%Pvt1<awuW|1Fp3Uj8?2n
zd~BNK|5KlH6qS`SFfwRy{RcUN;gJFZHv<n73s@y1h-7Sew3dZ|(>XP@xQOWp#9tgm
zWg1%l85pcv9wjm`vZeBsGjSA^*=zm(&9J|S@lgxMe~3DeGNzYo3=9naQ<XucaB%Lh
ZUuzJo*1_2Fh>c+_17{Hj0|zI=4gi4QRoDOk

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829 b/test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829
new file mode 100644
index 0000000000000000000000000000000000000000..fc656a647317904652e95aad176488a680ea10ab
GIT binary patch
literal 344
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@lA>B}9UatK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkSP)jjE}B>O(`nVU}EDcPqharg&16f(6LtWwK`)_
z3j;$t!+#D2#@<i{#v&~y{gy{e|NnCY>oKvV7H>{vVk=MODC=@4VgLiKwG50_Onhvb
z<^NNka}<@8GBB3e|7R>>(BcA-Obm|{7`PdDm{`E785kHCTOO^|WZ+;FV1clqBqs|4
z=Zn<T;v%La5O+cR#lT?Q@+gs!kx2{cetWI|zoo4A7co8(XyNz|Q3?tgrk89C3=IEM
kmDjQ`aB^_&uwQEstk%KU@`#OLEdyr}2LlHu0|&zn0B@OFHvj+t

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36
new file mode 100644
index 0000000000000000000000000000000000000000..9e6351cdba7ac21d2139f27152e5e72ba91752af
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruCnRiGi)0FW8AA)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{>2?j>S^rC`fy^NBQ0wcYQg2d$P_>#n=oYeT@%&Jtq)V$>U
zl++@IwTiFR8H-vN7}^>Bb1*RWhB7b~X))=yJYxF)pCee0i7mBwb1D;Cc`8R)mqQT)
z7;vp+V6<Xo;$zb+|DXDtqo}Nufw9c~KVuQY|NsC0YjJ^CObm|{7`PdDm{`GD7#Ld~
zt<_}UU}Run0JB*bIA5fu78fxcf%>qlOhfBG1A}$TqeKQqh*(jXz1IKVQu~V-9|^Q@
x{D%o@XfeHHV_;zTpQ^l;g@KcUbBFy}!(g=z#+FBH3~L!Ut%^7pI5-)0007iBTv`AC

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d b/test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d
new file mode 100644
index 0000000000000000000000000000000000000000..92bd6e3a5fa19b69e7cf103abc27bdb8f7602013
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+|DXDtqo}NufpIs37T14}OBfz0FmN;QFtLEtvM_LRa56A3GB7eQFt$8e
z%fi6voSIr(#B>DJmDVkf5*eA;%9$DXQaOss?6v-b%$o9O>2HSpMU0PHU;$E8rXj@i
rl8u3Z;eV<!$TSYl9rkODg4H@0TOP47STk@itYzRV;$Yz5WY_@!f<If6

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7
new file mode 100644
index 0000000000000000000000000000000000000000..a1c7e566403d44b8d814ffe6d5ba96fe1c89b615
GIT binary patch
literal 321
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1UG*oyK?^HSoA@{=<27#Kn36qRX!bf(&)>RhY%TAi_|
zrJdnF2Lt1wPzJ^#EhhbzM@;|!a|G)#v85JoPGw?id9=1Xm7}c7p@;ztxYjZ-TCp<m
zv1yk7Pkqi&R94Es$e_jbALI&#M+yww3_MIMAeAf(oE)4C42%qn3=E7dkJhp<a5|@^
z78fxcLG~O2gLTWJL<UACwsK|$zEqB)GJCE6zZv!yF+OVH_zzK8RHh-s^pcH%f#H9u
gGRPbb&K>q^je^xW7+W5(F|1|aEaG6`;AGeV0RIP6<p2Nx

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8
new file mode 100644
index 0000000000000000000000000000000000000000..e34bbe8eb65723314b50b81408f5f1eedd3e9509
GIT binary patch
literal 263
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG;jkBh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;UI_+9hV-I>WW9`%k^&>WjDp1E?D&$zq@2|F;>@a4
zz0|zq{FKxp21Ui!>WoD#3=HiI|2Y^KdqWu*i?o>ZTOKj}|IZPu$HZ2=IhBd6Je8xY
z%b|z?47k=ZFj}!P@v&)^|4)6+QB+pSz*uJgpRtJH|NsC0wYWemCWc1}4BQMntY94s
uj4hAWYBF#zGO#d!*(`hvoG(&Si;I|!Ks{JirlIwpfq{u3FV)H_vkU;3;7I8J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088
new file mode 100644
index 0000000000000000000000000000000000000000..24aea113098bfc0d6bc0747ae9ac03cb387b6226
GIT binary patch
literal 339
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(@o|->+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)brmsy0oPgvMk^*hHqG+?
zsg@i?Wu**^W%mCWix{-HKqM2xBLxO-1|B9BuxbXzmPczf88{djSQx-;D9Opf!1*FI
zwYZ4s2*gnkPcbl9w>(N@U}VyQI^JIE|8J@NMU0OGS~&hgRDwc<=_MNj1H=DR<+Usf
goE)4x?AICut93B8JYr*5%fMO0!N9@Ez`?Ks0LI%{8~^|S

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc b/test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc
new file mode 100644
index 0000000000000000000000000000000000000000..ab8e5d998c1d4d0dbe9ae80f29ef21cce603a9a1
GIT binary patch
literal 267
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG;jkBh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;UI_+9hV-I>WW9`%k^&>WjDp1E?D&$zq@2{5@x_@{
zsd}k-$@wX%MGT6HuhkigS{NAG8UAxHF!qKrFcxVs>9;&$`v0FJSdWP<wRm$X6I*#I
zM_HFc5d#=-tz}@eVrAlE(=7j=`kbSvtdxPV%>F-P5ySug|Nm=ofmlooj}#cV8F-jj
y8JNME7#Ld~t<_}UU}Run0JB*bIA5fu78fxcfqJs6OhfBG0|OI7UaFN<W*GqE#!21)

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4
new file mode 100644
index 0000000000000000000000000000000000000000..3b7c64dd95f761007279ae4e88f34ce7e513986e
GIT binary patch
literal 406
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSXIWrcqo*Cu}F(azvYo4)Bpb*!Fo(=sl}U9nb=w$tu0UGD03)c00XYI
z42-E(tW11tn*URua}<@8GB7e|as3CmgW-_^12+Q?6B7d?NG&G^Cj$c`h|SpYXe|o^
zr*mp*aS_uIh#Rkfy~n^{-SQ}rfsu)=oSA_ywW!Qq>p#e>DUX)^X4qfE_^5^BKSX^|
znT8P4OExApE(QjM|EcBaSw&^md<x1SgE=^NFt9N&ad7+x1t7>NY~ZleU|?){#JQG1
z9pX<0#z!rW)-rT4aPcwx|Iff-KZ{|lVX#^UW6L8p25SZmhP4cwMH~zqoD4evD4uR|

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 5a0fddd6fe..8a20e33ee3 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23520,6 +23520,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b"
@@ -24202,6 +24224,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2"
@@ -24554,6 +24598,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
@@ -25060,6 +25126,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
@@ -25302,6 +25412,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
@@ -25942,7 +26074,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25964,7 +26096,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25986,7 +26118,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26008,7 +26140,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26030,7 +26162,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26052,7 +26184,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26074,7 +26206,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26096,7 +26228,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26118,7 +26250,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26140,7 +26272,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26162,7 +26294,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26184,7 +26316,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26206,7 +26338,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26228,7 +26360,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26250,7 +26382,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26272,7 +26404,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26294,7 +26426,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26316,7 +26448,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26338,7 +26470,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26360,7 +26492,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26382,7 +26514,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26404,7 +26536,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26426,7 +26558,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26448,7 +26580,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26470,7 +26602,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26492,7 +26624,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26514,7 +26646,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26536,7 +26668,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26558,7 +26690,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26580,7 +26712,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26602,7 +26734,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26624,7 +26756,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26646,7 +26778,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26668,7 +26800,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26690,7 +26822,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26712,7 +26844,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26734,7 +26866,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26756,7 +26888,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26778,7 +26910,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26800,7 +26932,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26822,7 +26954,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26844,7 +26976,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26866,7 +26998,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26888,7 +27020,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26910,7 +27042,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26932,7 +27064,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26954,7 +27086,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26976,7 +27108,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26998,7 +27130,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27020,7 +27152,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27042,7 +27174,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27064,7 +27196,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27086,7 +27218,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27108,7 +27240,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27130,7 +27262,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27152,7 +27284,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27174,7 +27306,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27196,7 +27328,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27218,7 +27350,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27240,7 +27372,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27262,7 +27394,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27284,7 +27416,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27306,7 +27438,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27328,7 +27460,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27350,7 +27482,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27372,7 +27504,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27394,7 +27526,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27416,7 +27548,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27438,7 +27570,183 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27898,6 +28206,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
@@ -28626,7 +28956,623 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28648,7 +29594,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28670,7 +29616,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28692,7 +29638,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28714,7 +29660,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28736,7 +29682,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28758,7 +29704,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28780,7 +29726,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28802,7 +29748,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28824,7 +29770,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28846,7 +29792,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28868,7 +29814,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28890,7 +29836,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28912,7 +29858,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28934,7 +29880,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28956,7 +29902,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28978,7 +29924,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29000,7 +29946,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29022,7 +29968,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29044,7 +29990,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29066,7 +30012,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29088,7 +30034,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29110,7 +30056,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29132,7 +30078,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29154,7 +30100,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29176,7 +30122,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29198,7 +30144,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29220,7 +30166,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29242,7 +30188,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29264,7 +30210,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29286,7 +30232,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29308,7 +30254,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29330,7 +30276,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29352,7 +30298,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29374,7 +30320,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29396,7 +30342,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29418,7 +30364,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29440,7 +30386,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29462,7 +30408,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29484,7 +30430,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29506,7 +30452,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29528,7 +30474,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29550,7 +30496,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29572,7 +30518,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29594,7 +30540,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29616,7 +30562,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29638,7 +30584,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29660,7 +30606,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29682,7 +30628,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29704,7 +30650,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29726,7 +30672,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29748,7 +30694,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29770,7 +30716,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29792,7 +30738,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29814,7 +30760,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29836,7 +30782,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29858,7 +30804,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29880,7 +30826,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29902,7 +30848,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29924,7 +30870,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29946,7 +30892,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29968,7 +30914,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29990,7 +30936,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30012,7 +30958,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30034,7 +30980,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30056,7 +31002,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30078,7 +31024,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30100,7 +31046,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30122,7 +31068,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30144,7 +31090,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30166,7 +31112,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30188,7 +31134,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30210,7 +31156,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30232,7 +31178,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30254,7 +31200,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30276,7 +31222,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30298,7 +31244,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30320,7 +31266,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30342,7 +31288,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30364,7 +31310,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30386,7 +31332,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30408,7 +31354,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30430,7 +31376,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30452,7 +31398,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30474,7 +31420,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30496,7 +31442,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30518,7 +31464,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30540,7 +31486,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30562,7 +31508,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30584,7 +31530,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30606,7 +31552,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30628,7 +31574,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30650,7 +31596,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30672,7 +31618,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30694,7 +31640,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30716,7 +31662,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30738,7 +31684,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30760,7 +31706,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30782,7 +31728,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30804,7 +31750,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30826,7 +31772,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30848,7 +31794,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30870,7 +31816,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30892,7 +31838,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30914,7 +31860,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30936,7 +31882,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30958,7 +31904,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30980,7 +31926,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31002,7 +31948,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31024,7 +31970,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31046,7 +31992,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31068,7 +32014,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31090,7 +32036,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31112,7 +32058,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31134,7 +32080,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31156,7 +32102,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31178,7 +32124,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31200,7 +32146,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31222,7 +32168,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31244,7 +32190,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31266,7 +32212,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31288,7 +32234,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31310,7 +32256,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31332,7 +32278,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31354,7 +32300,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31376,7 +32322,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31398,7 +32344,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31420,7 +32366,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31442,7 +32388,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31464,7 +32410,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31968,6 +32914,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200"
-- 
GitLab


From 1c2df50a9b1658bcc168660773165f820bee2a49 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 13:35:29 -0700
Subject: [PATCH 172/525] Expand corpus

---
 .../067298a97640cc5e212647864d21bc1fa6bb7e75  | Bin 0 -> 361 bytes
 .../2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8  | Bin 0 -> 354 bytes
 .../2c917a39d34aad10d611a1647a6df6502b4d4d59  | Bin 0 -> 48 bytes
 .../38c609f72f5a2cf977788afef9c34652f754add0  | Bin 0 -> 266 bytes
 .../4d4aa6ddd6404300e5278682e560f25292e9804e  | Bin 0 -> 455 bytes
 .../51d7466ac65468db7094bdedc60d1604231acc05  | Bin 0 -> 266 bytes
 .../588f9166c839baf3102185d38f77f9a750e62c7f  | Bin 0 -> 819 bytes
 .../6bfbea131237606756a12f275e736045c0956536  | Bin 0 -> 92 bytes
 .../73889340124f1f88859aab4e6ce36c0019a44218  | Bin 0 -> 416 bytes
 .../811533455c494627bb5b5802f4ed7a386f57cb1e  | Bin 0 -> 266 bytes
 .../8711e2f477871e3ca68642bbb388e7f473f25394  | Bin 0 -> 369 bytes
 .../8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc  | Bin 0 -> 405 bytes
 .../a78a65e7bd4c3cf41fce74155e97a758658fe8b4  | Bin 0 -> 266 bytes
 .../ab850ea6858b0b4798d8d8c60cf7d715b9064c85  | Bin 0 -> 343 bytes
 .../b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a  | Bin 0 -> 341 bytes
 .../bd459204c5fee8000abc7d895a317028351d0dec  | Bin 0 -> 323 bytes
 .../bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2  | Bin 0 -> 454 bytes
 .../c957b37c99c5bb22b2c1f6dd050c57e685505599  | Bin 0 -> 342 bytes
 .../ccdff5940d61b708f67fcc55dc26ac1ad4f4c298  | Bin 0 -> 340 bytes
 ...h-1bc1a02532d212c8975e0cdcd5127c98fcaf752b | Bin 0 -> 428 bytes
 ...h-2ccee0e61103a767acec12b9146d478202b93b27 | Bin 0 -> 437 bytes
 ...h-4e4d7a383785c83b78ed6597bfed360079a49a08 | Bin 0 -> 575 bytes
 ...h-5c774460d2dc7ae9d471ef4b87609b13e4e95219 | Bin 0 -> 45 bytes
 ...h-6db86c556caf542fe8c3345ef396467b1d609d32 | Bin 0 -> 647 bytes
 ...h-72ab4efc255cfc55ed03c1002187a68e2e18e33b | Bin 0 -> 405 bytes
 ...h-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668 | Bin 0 -> 322 bytes
 ...h-8e2e3975a865fb107fff8060f4f949aa235727d5 | Bin 0 -> 501 bytes
 ...h-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7 | Bin 0 -> 681 bytes
 ...h-bebee7dd27c149af9e7b573300c686969fde9eb3 | Bin 0 -> 69 bytes
 ...h-ca8aa113c22037a2a552c1763f845609d555ef9b | Bin 0 -> 405 bytes
 ...h-ef09afe157880d7f363fb87f6bc194ce1a72554c | Bin 0 -> 380 bytes
 .../d63251b34cf38052b657d62e353aa42d905e52c4  | Bin 0 -> 319 bytes
 .../e55693473101ac4626e04012beb1b9b6d93a0a94  | Bin 0 -> 234 bytes
 .../e79ffffd4bd565b2b5bb8d0f191c8e34385de085  | Bin 0 -> 73 bytes
 .../ed9a1a597bad76e9ed9e52ba2e5c80304583c006  | Bin 0 -> 325 bytes
 .../f4d74d507a7171e5f116bf750a20435eeaf81f3f  | Bin 0 -> 428 bytes
 .../f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7  | Bin 0 -> 341 bytes
 tools/run_tests/tests.json                    | 966 ++++++++++++++++--
 38 files changed, 890 insertions(+), 76 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75 b/test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75
new file mode 100644
index 0000000000000000000000000000000000000000..d430eb638742326d15f36f81eb624fd39ef9852b
GIT binary patch
literal 361
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`DE0fvt=$*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21ecVqJm_-jFOT9BfZSL%#zH+ocQ9@!qU{d<ka}Q(%huf
zB8F6ZkO2@oia_Qd>B%TaOwNukNleN~jW5ouO4UnAP0mkAEn?7PVoNRFoXW&jp2|_y
z<xs=`23%_y7_C^D_}Dbd|EE6ZC@L#uU@Wu$&sfCp|NsC0T3jF&6T>3~25tr(CN{7Z
z2F8|0Yc&}-7#Ua?z-$%<P7Y2cHYUZ?9m)}kIt<O6FH%#Bi<pi;T*y%d3IzrR>y}4}
z42%%5qB47}|5E#l7#|6=aQugfX=pLM1ljRFRe3Gg&>i+`4T9A=7+W5(F|1|av?}6Y
J;NWD~0RU7vWeNZQ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8
new file mode 100644
index 0000000000000000000000000000000000000000..519134a1a474c374588761404cd361331518a136
GIT binary patch
literal 354
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&u^1||l^A_gWVHm3in%Jm#YY#?JK7#JDSiwctUGD=DcjPx=J5|gvzOA?cE
zQsav=t5Wq+^OEyZQi~WA6<@0}7PT-iv@`tYU|{SGWne7QV$yGU^o{BNe~w^1Cbrb#
z&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10mj-s+s2F5b`|BOWp|NsC0uf+voF)=(+
zVBlupVPXYqVc=|ev{sXWgOP!Sfq}8*(OMP;&KIev#YId<puR0D)6n|Qz+m0-D3O5?
zB34vpul4`8)czvIM*=Mz|6zg}T1+q5K&JjrRbI=&u!F;XZLlFHr&<SN%fm-(3~L!V
bt%^7pI5^7~ix?PN7#SWh?9f`v;K2X@Jhx~J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59
new file mode 100644
index 0000000000000000000000000000000000000000..39c7904bba9b3bcc4b208f7452b98f51d3f62160
GIT binary patch
literal 48
zcmWek%*kP3Vk_t4NVQi>&PdG5OU;QdE=f$zPPK|pD$PvIEX&MENiAYvEMj0{DX9bi
DW0DT=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0
new file mode 100644
index 0000000000000000000000000000000000000000..7ab84cf09a754ade26b59e06ee69ad568bcd679a
GIT binary patch
literal 266
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#KgwIQLe#PR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RU|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921YAZCO$UJ^8cyN
zIf}|k85kL~xc)O1X)!P{JW^obX5e9BVPIfTU|{_J|NnoGCdQUWYgrgLol{ebi<piu
pv6Wk;a)2D9^`C*ky5&(K10xgEjrLmqe>3baVtmBX!ttMp0RRJ<NHG8a

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e b/test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e
new file mode 100644
index 0000000000000000000000000000000000000000..3cf9915383d41e09b909e0ff4f708f2fc65fddff
GIT binary patch
literal 455
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kJLxxnUtw5HmlYF(@NTAi_|
zrJdnF$Eq?0#zUbDj73^Z`Yn$Xng0Lh2-X9+0;HLVkFA_7wRm$X6I;upwdJWCWe!CQ
zV8FGOficyJm5Gl{v;2SRbB?02QU*o_Ew2BJMGQ;~j}#cV8F-kOKuTE{I2joj7&ti?
z7#JBC7+W5#WntiSPE9Q?VmiX~A7o4Fe}?p;f@Hmnl9B==y^Mmy<m~v8#H5_m_~Oi}
zRK3)^<ouM>B2ZYQazK4&-SQ}ru?S=u10xe#IWq%aYEg;3)_;)oQywk-&9J|UaV=4%
zGPH2~hXh<vnT8P4O9loG#v%>{HU<WU|EbChAjfiWK5AiP*kQjmSgnJx<q;c$H3J93
PT22OrA`S))PKF%-1E+u+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05 b/test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05
new file mode 100644
index 0000000000000000000000000000000000000000..63c7a11770e756fe51bd5ea359482aff97b215f2
GIT binary patch
literal 266
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#Kcz4!J)xdR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RU|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921YAZCO$UJ^8cyN
zIf}|k85kL~xc)O1X)!P{JW^obX5e9BVPIfTU|{_J|NnoGCdQUWYgrgLol{ebi<piu
pv6Wk;a)2D9^`C*ky5&(K10xgEjrLmqe>3baVtmBX!ttMp0RRMeNHG8a

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f b/test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f
new file mode 100644
index 0000000000000000000000000000000000000000..5c328a74bad27a7cdafc3fa3b13837e2803027c3
GIT binary patch
literal 819
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#Kcz4!J)xdR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RU|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921YAZCO$UJ^8cyN
zIf}|k85kL~xc)O1X)!P{JW^obX5e9BVPIfTU|{_J|Nnmm22?-rrE-AW!lniFM6eSH
z-T>)D_=1V8oX?7*2;pz2XBZeD-sy#Ur{xhdrhgb17+W5#WntiSPE9Q?VmiXaR&E7x
zn$~{?2J4nbi42S&3qT=ful4^o!~P=1NB9Dv%>F-P5d+A};Ltz>1}iw+z}9Ipa4<5k
zz^#6fDwv#+n3tEDgFTR7VMKHYK^zPUC6Ff=iHrADWr&z>d8CLM_brdsf}$Vdah4X2
z{|pSE6p)HN34lBe3r$c&mz8ON9D*5|QlQWjXyNz|adA<ZhF0iHHU<WU|EWq$pjhGH
t++n}gAXu$~vE>mP!&(Lf25wHPA`S))P6h@ZCMHlYvoLUixr_{q3;?g|-hTi9

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536
new file mode 100644
index 0000000000000000000000000000000000000000..b483671bd6b159fae65033792809781fc191a9aa
GIT binary patch
literal 92
zcmWek%*kP3Vk>82WBQ+}9HFSeP{vrq(89pDmVuG!5gU^-gDOW+nFoVCA4jVFe@3<B
vjKsXW)SUR@lEmcfRIB(RhNRNW)J(>fM`f8gDXB#aj71DgYgtMdI4T(cN(&ix

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218 b/test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218
new file mode 100644
index 0000000000000000000000000000000000000000..64d184540c2e6b8a9edf606cb16ed9dba4b4f9c8
GIT binary patch
literal 416
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kJLxxnUtw5HmlYF(@NTAi_|
zrJdnF$Eq?0#zUbDj73^Z`Yn$Xng0Lh2-X9+0;HLVkFA_7wRm$X6I;upwdJWCWe!CQ
zV8FGOficyJm5Gl{v;2SRbB?02QU*o_Ew2BJMGQ;~j}#cV8F-kOKuTE{I2joj7&ti?
z7#JBC7+W5#WntiSPE9Q?VmiX~A7o4Fe}?p;f@Hmnl9B==y^Mmy<m~v8#H5_m_~Oi}
zRK3)^<ouM>B2ZYQazK4&-SQ}ru?S=u10xe#IWq%aYEg;3)_;)oQywk-&9J|UaV<j&
z$A3te6qRWRF}>tqEaFgLV_;zTpQ_9Nas>zHqZUSn9rkO3)jAkk9<ec4GjK4hWnkbe
L;$Yz5WY_@!O}}!B

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e b/test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e
new file mode 100644
index 0000000000000000000000000000000000000000..85a94fb5dc926865b92b42ae1b49bf77def456b6
GIT binary patch
literal 266
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG;jkBh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;UI_+9hV-I>WW9`%k^&>WjDp1E?D&$zq@2{5@x_@{
zsd}k-$@wX%MGS3<uhkigS{NAG8UAxHF!qKrFcxVs>9;&$`v0FJSdWP<wRm$X6I*#I
zM_HFc5d#=-tz}@eVrAlE(=7j=`kbSvtdxPV%>F-P5ySug|Nm=ofmlooj}#cV8F-l3
z8JNME7#Ld~t<_}UU}Run0JB*bIA5fu78fybq?YqBv6XR@X=wdtU|?d%OSQ7fECT?{
C=}CbA

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394
new file mode 100644
index 0000000000000000000000000000000000000000..df9762c7c807a1821d7b70ae92f1770322ce2599
GIT binary patch
literal 369
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0P3=E7dkJf53a4<5kK-f@{lZAov
zMQUns5z`TfyCD8zV6bj^l*q`)qy=@qz1IKVQr7#67#|6=aQufT1%(XLOEv}uhX1Kh
t@6~}rqWnK7c$gUEKp~M@R8|DCopUV%2V+qS#E*|!9x1P7S<Aq{2>|NXV*vmF

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc b/test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc
new file mode 100644
index 0000000000000000000000000000000000000000..25e0f9e2319bceed0599ddd7e7e0a1dd11cfc56e
GIT binary patch
literal 405
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSXIWrcqo*Cu}F(azvYo4)Bpb*!Fo(=sl}U9nb=w$tu0UGD03)c00XYI
z42-E(tnN&FY?}X5pK}zIl`=3gXmR}qIfUVn0s}V#4-*puBLf2iCkH1310#sZ*z#yC
z3j?QfYHD#2(-DXpuYkSBz+m0-D3O7YiLIQOfiJbF%wFq1$fzlgmi}hgU&Q#Rh2uX&
zeNmZ)5YtOGCN?ex28REs<>^^PW!8KO${>R|ICn6xF)(rb2ZbNVA#C8F)L>w2dBnMv
zK^@{v2F6D%kJd7DF>vuQ{Qu9uVLyvutzocQ2V=`4HU?`34u-W1oJAZA9Gnb000iM~
Au>b%7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4
new file mode 100644
index 0000000000000000000000000000000000000000..dff4613423376456e1d289f5079e75a09048b89d
GIT binary patch
literal 266
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#Kcz4!J)xdR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RU|2cy7nAlQ_H>WbOm8Wu)b-5HVfC1N921YAZCO$UJ^8cyN
zIf}|k85kL~xc)O1X)!P{JW^obX5e9BVPIfTU|{_J|NnoGCdQUWYgrgLol{ebi<piu
pv6Wk;a)2D9^`C*ky5&(K10xgEjrLmqe>3baVtmBX!ttMp0RRR}NHqWe

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85
new file mode 100644
index 0000000000000000000000000000000000000000..1bfc3e9746c077f938d585729019bc6c5e0375ad
GIT binary patch
literal 343
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$1{}e9Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoaADd?R
z|J3IkMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-jt1_s8KM{6}1I2ajNAZ#ef$-=<-
zA~m(Ri0KH(T_RxrGH5;eZ{5O>$iT>?1$Do@*8ks9`->PK3AAwhXJRY2f`$OoOEv}u
nhX1L`YgrgLIXHLNuQd!->tJko#Ky3efwPE%frFEQgJA~%kOEm9

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a b/test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a
new file mode 100644
index 0000000000000000000000000000000000000000..74c90415e6d5d76a56621e00a98f8d2e0461e6fc
GIT binary patch
literal 341
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0~4EiS!$641LLDBY{*&}7#Kn36qRX!bcWa?blxp0V_K{D
zTAi_|rJdnF$Eq?0#zUbDj73^Z`Yn%`{{QC))?;EzE#92U#Mbg?ZFwq3S(if*0~m0v
zWnfITVrAlE(=7j=`kbSvtdxO~L5u4@$RP}m6d1S}c$io~N?8~<IXD>@7#SED7#Ld~
ztz}{0bWTkzE@C=@>PYLBM~RF~<;)CxsT@UR_FDfzMooFN^f$x)BF0B8u;3^v(-2~M
r$;QCI@IO@<WEcnM4*Ru+!D=0hEsxk3tQj~M)-rGwaWHUjGVA~VI~ZDZ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec
new file mode 100644
index 0000000000000000000000000000000000000000..19eb541dc2ae6fa1cc91cefda8e91eb8826d2e15
GIT binary patch
literal 323
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21bVTqJm_-f}+ga#G=ah(&E&j_{8+oyb=bGdaztZNlAf`
zUPeJ;a&~-4Vp2|Od~s$~s$NQJa(+r`5rZBRTWay<R3^6aRF1MPhav_r;9ASTXvNCJ
z$EI2SKlM3BQCTSiW10Pb#v+FQ|NsBj;sUXl7#=Awa5L~Qv4OQPFt$8etI5E@$iTt?
zX0tGGzDP|iE@C<Y^<EjsdkhTLEsqiz7$IUsW%gSCZ%gejVtgdf!toy_sG-I55@hQC
kROPiS44fRCJM7mQ2CH>2wmf2ESj)g^Rm8!-!O5@#05Kw4;{X5v

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2
new file mode 100644
index 0000000000000000000000000000000000000000..4f3ce3af0c2de2be87daf28a4100be0f8ebe61b1
GIT binary patch
literal 454
zcmZQ#E9Xn)C@Ry?Vqz;#wJIuO;$tiSpW0Ex#1X8=RLoSIT2z)=#K7^N38E6L^gk05
z16w(t6Gy7Onk^F>SGj#ENTUJ+8$;^<yG3P842(q#Ol%;X5)6!wuE6X7DNVHpDTNqT
zgwU~8@wGZ*Q40e@JHvkt2FBh{2F4;SCjFL2O#lCbT*8)Gyg3!*M2@m9hav_r;9AST
zXvM_Grdj?!^*KjTSt$c!nf-spA_grk5Xr>wNP&Tyfrp6&teSzb<<VMA1`b9B76vez
zg@N-$YU;}(rXvv7K)lAlVBPX4k%5s(3+ifnt^dEJ_7^ce5@_N04^asYu9s{K3=IEM
zmDjQ`aB^_&uwQE!tk%KU@`#OLEdyr}2LnfHQ5grs$)O-GgMyW#s4NxiG?3ZqFbf%5
z9x*XIVk%4h4>GHWgOP!;<=_AR3>qL8gG^^)VBlaZ;!t3C)Uy9SCj%ox6+;oj4hF`x
JVBtp$Eda||d<6gi

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599
new file mode 100644
index 0000000000000000000000000000000000000000..82635d7fb68d31391fce7c42463ecf52177b5f3f
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+|DXDtqo}NufssLr>p#dL4388TxEXkuSU^fy7&tjN85kHD7#SECTOO@t
zVc>L5O)V~BI)ds*>y}4}j7)6h%nW>~97SdJO8-G-O?kBRH^crS#z!r%@F*(N5Mp}C
q#=yYvKUEoI8VBbN`?W^FY8{L%kJuQj88{f$GH@1gFmP}(>;M4XAX?A>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298
new file mode 100644
index 0000000000000000000000000000000000000000..3992529d14ed18924bfba439a849aa577ffbc33c
GIT binary patch
literal 340
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZr_($
zRK~=oz`(|k`u}cG8509z5d#w&$P@_%#z$AcrWBQFFtKr!r`m&*LJTfK=vb@xTAi_|
zg@K`+;XelhV{a$}W04k<e#;}K|Nl9H^_bXFi#Mk-v6ZKClywy`fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0Pj4hAWYBF#zGO#d!*-(;`g@N-$
zYHD#2(-DZHAiiQ?ux@#j$iT>?1$Df=*8ks9`->PK3AAwhho}Sv3)4$B1_p-zsmg0v
h7&tjNci68r2v+N0Y<a}Su$F<dh=YNHlYxU_2LRZbT2KH0

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b
new file mode 100644
index 0000000000000000000000000000000000000000..4f6122df4de46c0a4e29af2cf438ec63fdfd9d56
GIT binary patch
literal 428
zcmZQ7PAw`+En?tM|Ift4R?e5o!BJGEq4l4MiGeLSBQY;8H7CBfBr!QVKB+V_CndFr
zfiaz7dU{bovR+0>Nr7HYetvdhMrvY8d}T>$F#{6=16VFMu_8V>KQFnos3<kBB)+($
zC^a#+n4uUVo1B_gTw2WVn5#V1zNn0e4`OkV0s|XE>i_<`MP-UiYZYIsGZwWlFdS$2
z&%wah8_K{~q{XD)@`&mGe~w^1Cbrb#&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10m
zj-s+s2F5b`|BOWpTL1t5|F6XbVlpv2Qefa_;9+6}>tSGQd9+rOfrF8Og#pZFVc>m{
znpj-KbOh`wO(uOdrvItR_6EUv9YsuR<s2MkpzvW}ux@#j$iN6z#8Fgcul4`8)czvI
zM*=Mz|Dl3>sT@U23=CzU0A+f~#=yYvKUH}xivlMH=MMX|M*qPUGBCC<GCW$#z?sUx
gz`(%}toHx^e`vrnFmPHGaja$VU|`_jTxzug0QQlAH2?qr

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27
new file mode 100644
index 0000000000000000000000000000000000000000..73d90f6a4f0286c895547298ce00a88685677c49
GIT binary patch
literal 437
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zVtQ&`3B&)pMP*D3j71DgY#{9t42+MifOQv@X)v*Im8aSll`-)_3@lP$U}H%A-+#BL
zOp$4=;%jxrq80{*c832P42->@42(ruO!_U4nEwCg2-ag_OD*1<%EVTl%2C$kP{aTR
zTx%H^tyr1(*fh)kr#|N>Dl27REVKX5Sj6!E|NsA5Tp$(`!y^R-ZU!DEMz9tJ#+FBG
zH5oV<8CV#=Y!(LI7pbYmMNCJ)j$+bhWBQ+}Y;O>(*HOg8R?fju2J$rngLTWJL<UB%
z8jhked#(S!rS=ywK7s^AN@`l-|D2Ne#L|+C{G!Z~N(O-zj{i`_e5o9uFkvVIg&)&P
zHU<WU|EbDrSrj-qICt2uHTn;B2m@maBg3P$44fPc!D=AqcQCd*Vq;j#z-d(kv81>-
lC%z=HC_S|#J})shH9o&AwWugFC6$3=ErSOG0|zI=4ge@Wg`EHZ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08
new file mode 100644
index 0000000000000000000000000000000000000000..b275994cc1cc566c82b0d1fbbefdadf14a2cf7ec
GIT binary patch
literal 575
zcmZQ7PAw`+En?tM|Ift4R?e52oROH9mzon_T#}fa9iLR1nUj)Q#E`6)QBqQ1q?ePQ
zpPiVInwS!wR9TW*%)rFJm|j$nte2Zu5nq&=oS&DMnp_f}l$e~IpOzM%Tg(8KO-{`#
zE-hx@Do?d9Dr4dU+rv?$z`(|k`oI5fQJEssTE*Auj72RB4DAg6IT#pwLm3#0w3zf;
z9x?s@&k?N0#FkpTIhBd6oPnXtp(vH3i-CcGfom-TqZKO?ADd?R|J3IkMP;Q7jAi!!
z89y`p|NsBL7T15qA_gXgM+yww3_MJXARP=0j4hAWYBF#zGO&QzAeV5Y+N;?zvB4Y%
zan;?TGA0I)el}3(XfQB7y0TVL9ppra0}q8FoK~C)c3LV&8Q57Mi$G2TxvczuD#Tq3
z$j;$mVr5`pNG&d6I+Do1z_`DN@lgxMe~?>Ji^?>#o-paNtz}{0eUX|7QUVs&WYTA2
z`k$(7ZxF24QN+N&@ITdltpO-t$~id7$~3h8GcZ`UJW6C>WMV7tDB=TIYp?bHw-m^5
z0hs9=U<oD$hBA;nOfT8M1}U#)QQ+j@++n}g=s!4A7#Ld^86K@=;7ny;VBlZ~R{Q_|
YKQvh|Ffedh6>+R(@L*uz;9R-`0BvNbCIA2c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219
new file mode 100644
index 0000000000000000000000000000000000000000..fb139f93f28455d4bcf9830431ad254f9522da6b
GIT binary patch
literal 45
zcmZQ#E9Xn)C@Qm8X86y@*z#ztUP@|Oaz<iaUTRK!aY<rwc6?H4W==|K5rYN;09G>(
AasU7T

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32
new file mode 100644
index 0000000000000000000000000000000000000000..b0777bef92f2ac584244b2ed2f2fe665b8aeb072
GIT binary patch
literal 647
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`c$yPOs=b;m6B}2#eQHq|6Q4pd
z8$;^<yG3P842(q#Ol%;%5)6!wu7LFxm1%&KrrLv)LX4AAV1VgZtN2=-v8aWCp`GDB
z2LoeoXb~fW7L$I<Bc}iVIfC_=*iwr(r!ujXmvWSKITSH~0oPgvMk`h(J~qwr|EbS8
zipokE7|ZPcGZr!Y|NsBL78i)c#PCRgft!Jci3zNQfwAS$T1^HHMg|rJFq?&ekMl)p
zY7x^Bh?6+VKt5z(ux@#j$iN5@D=M?s`u|&Me-Yy&ffkPcFhLD1rk89C3=IEMmDjQ`
zaB^_&u*Vx<=%EGoJFd_wDrZYA<FaSsg9Vc&6Ev70fpjR8fw2fFkYHhyiU^~%hQVqb
zj4hAY7#P!w3X=5-iZXK(iz?$wi&Kl@6Vp@kN*EZh1tY^+22QIY4h9ZRh8@s=w1R~s
z3pgYhK_n<NSr|B-Q&Wo(Ay`zVp|16xfx-Gw3j<>!EVMvD$N&mL{2{p30OsJe44hC0
F007Bcu|xm>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b
new file mode 100644
index 0000000000000000000000000000000000000000..770cee38cb39f693f07ebcb57659565f0e5e60dd
GIT binary patch
literal 405
zcmWek&PdG5OU+?mDo!mbOD$qZFDgjZ%P1)+Fw)B?NKDR-FG)<wNsTYgtV-2ONlngA
zNiAYv;P}tPR?e5o!BJGEq4l4Mje)70k0aGy&6bIctK2@d=ua6Fp8^9LL+XFVqB151
z#v%qLHjwEO42+Miup#SZU|<9pR8*z`(wb^t1lM`DsElc?;%jxrqLy}s{~W8z7#I(Q
zGB6ftG3mEFV*3A|BUq1#Ewy-aDid4FqqXI!9A#Y&MGRoTwU&V~)rysgk4>}uf9i9N
zqOwv3Mg}de{~(7jJW^obX5e9BVPLRiU|?b3<ltmrU}RuqU|?){w3dZ|(>XP@xQOWp
zsw=Hq9wjm|v6VA3@TGDTmDy|k|F2lYFy+zG-wgYU7$3F3LZqlnLx|}m8v_Hw|5Rm=
zX&jt8?AICwt93AfLpCKfEwMDGBtEgUBqP5lv!s%N@lgvKgEa#O!&(N;A`S))PKF%-
DIAe0U

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668
new file mode 100644
index 0000000000000000000000000000000000000000..b50fdee3ae152ae62e41ec1bae3e370c72f3d6eb
GIT binary patch
literal 322
zcmZQ7PAw`+En?vK&&0&0Ue1@w!BJGEq4l4MiGi)0&xs?|UhV(?|NqPFQ;W)&_!Jn}
z7*hY=Eh=MTU@T%_VgqTFU|@W7g$<;$s7!;2jjKG>9;B2BB81SfR`GS6I%81_14BE*
ze+~x5<ovw6)Z~)Pvdogo_~Mepl2nG`&8bXm<*6KHT@FPI3=BC83|wm&7_FH2*fh)k
zr#|N>Dl27REVKX5Sj3>k1tOUk9w{(zGw?96Fn|GL%cHfL3>=IMEDQ`FHVXsii`3NO
zBBmn{=Ro|%z+m0-D3O7YNekk}GJCE6zoqsUF+LJ#;rI_x2?_+Jmuw6S4F6M=*Rn8h
ea&YdjUuzJo*1_2FsEuJQ17{Hj0|#e5!wvu?LR>ij

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5
new file mode 100644
index 0000000000000000000000000000000000000000..0059b4b7f980a2fe6344e9c2445feb642ba2e4d2
GIT binary patch
literal 501
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`DE0fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21bVTqJm_-jFOT9BfZSL%#zH+ocQ9@!qU{d<ka}Q(%huf
zB8H+=dnP_MrZSKnMIdwFdQ9{(3KEmE<4Y2ga#G{xXI7=^rKBe3r=%7!=rOUS7H>{v
zVk=MODC=@4V)*<2|9=J$;9AST2zUD)RL3(hF|a|Ll$%%)UzD1hpO=@KToRv@n4F!T
zmKL8|%)r11wjQT^dXZK^vR-m(UU6wL16O&fJ;?Wv00KKc^?(1}qB2FMwTiFR8H-vN
z7}^>Bb1*RWhB7b~X))=yJYxF)pCcH<`5>1wfShi{%EZT}S^huuIY&`hDFb7f{eQ+H
zhX4Qn|JULIv6vVhDKKy|@GvogwJ<QYJX)*Cz`@AC!T@HoFz~)eO)M^AIs$f-CX+rJ
Y)BjXudxKy-45K@WnAnhvFaOU00AI(M#Q*>R

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7
new file mode 100644
index 0000000000000000000000000000000000000000..d89f32b549e17aa6f8954f4e67c085b8846e0fce
GIT binary patch
literal 681
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!Kw3cxQ|*gX8OoUWnApleCNc4`mH$uW
zC}QFW)?;D=*~F2GCRLXDpRtI6iQy4bS!yZ=#C8S-MyN}mW};ZW7Nmi(g@J*AgRzK1
zf#FdLSd}`=i69HXPGn$WdkS)*h9(2!qqPj`j72T&4F5S87!P50Ps^h&kZY~W7#J8B
zxKcsRVqz<2Sj)i3!1#!XftwHPRK}LI44e%A85tOhKmmee8v_Gl3u6%n!=n~PhDU1|
zI6y9(#lTTiwpQ^q%<@%b42*|D85oPSnDkp7DKh>44-T5t;?1c{Y%P!0mZx%*ITV2$
zz`($@mVq&qF}<iDS+AfdGdHoQGQPApwJ1I@JvFa{!HSiMk4>}uf9i9NqOwv3Mg}b|
zP{1%TJW^obX5e9B0vW=>z{$wKz`)7D2y)z`wJZ#r&Z()zMNCIPF$NEB>lScWGCYC?
z7z5)YPUHZ4)beO8Ll*-V0|P_LqeKQqCbn{B2ENpyGJCE6AWNq_TKbz|e-&d3$A5^q
zMP(X7OfT6O7#RMiDuZn0;M`%qHdw8Lk&)pMW6L8p25SZmhP4a~>T4M|IEy$K7&tf?
YIP9(e@0i8V0&=kk1OKD744NDa0J)#D4FCWD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3
new file mode 100644
index 0000000000000000000000000000000000000000..f6d8e2e03da1f3843c1461af578850c349e15720
GIT binary patch
literal 69
zcmZQ#V_;xl;3`kGFDheFVB=$8_@ByARK~=>Sj52glqof-NTZB_@zGiab;hEWc832P
X42*|b9(95AtYu(i&|qNTuwnoJ9JLSX

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b
new file mode 100644
index 0000000000000000000000000000000000000000..2869844fab25aecbd3bd4280fea66c908f10916f
GIT binary patch
literal 405
zcmZQ7PAw`+En?tM|Ift4R?e5o!BJGEq4l4MiGhtVond-<QbDp_MoCG5kzP)Ies*F;
zYGO)!Wl3r=1Ctg*dQpL1a&BTpd~$wXa%oXfYF<fvaY<2XVs0@*F-SI9FF7@@xU`so
zt31`dsEmmZVnvYx0~<r?|Ngs0Wr|E|6<@0}7PT-iv@`tYU|{SGWne7QV$yGU#Pt6^
zN3b3fTWay<R3^6aRF1MPhav_r;9ASTXvNCJ$EI2SKlM3BQCTSiW10Pb#v+FQ|NsBj
z;sUXl7#=Awa5L~QF@m))Ft$8etI5E@$iTt?X0tHxzDP|hE@C<Yc9bTQJ{!~jRAqaE
zV7-naCbn`8jxta{BxfY%<)!At7ndX^XU8X%X6B@%7BLhtJ`!l*_z%{}QN&luQN+Z+
zPzDM)rk89C3=IEMmDjQ;aB^_&uwQHRA8a85V+$k0qqPj2sSFGZ91Ou~|NsAo8qUDL
SX;s9rmcfI8frE3Y)eZoj*m)xW

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c
new file mode 100644
index 0000000000000000000000000000000000000000..62b7e814f27b55b95c7e41758c7a8d4ec041d21c
GIT binary patch
literal 380
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69Zd0U$7HLs^D98do^1oHm-8})S@yb
zJ_QCghSdLei^`Z77>gK~*g)DP7#JU20qZU*(*P+=wFfDM7+3_+(GSwHR`InuV^IqO
zLp#HN4hF{FPzJ^#EhhbzM@;|!a|E+7>7^ELPGw>%Pvt1<awuW|1Fp3Uj8?2nd~BNK
z|5KlH6qS`SFqYZ>XDnj)|NsAgEiMp?iQ$m~12+Q?6C+p)17pjhwVDhZj0`LcU^WW_
z?~Byb;v%LaU^g-8voZZoRkk+`*6S!@Vk_t1C<A$#fx)`vQ6d8)SPe%}nZ4Hk-%|UF
z7#|6=aQue~@}+_UhykR5=_MNj1H=DR<+UsfoE)4x?AIFo2iwQM*uu#0Xe|RL2Sc#h
e`~Uy{cQCd*Vq;j#z-d*)v6jJufq~;6!wvvC>TGWS

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4
new file mode 100644
index 0000000000000000000000000000000000000000..bed1f46fa6b6cfae9cf18ea8c1e7d0ab59f9a131
GIT binary patch
literal 319
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6@hf*f_1D_e67w{)WX2f&hVdu
zfw4D~fw4%7Nx$V0)Bpb*!Fo(=sl}U9nb^uxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*U
zWu**^W%j=rix{-H{)1e=@JNAyn}LUk1+1KbvE|WPO$H7|1{MY|n}vb%MQUns5z`Tf
zb0B`>V6bj^l*qsc5i2UQ*ZTikYJU;qBY_r<|1d!fEvA=j3=9naQ<c}UFmQ5k?yz5L
X5Uke0*z$;tVJ!n^5eEYYC&LZ^X=YU5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94
new file mode 100644
index 0000000000000000000000000000000000000000..18305cdc1319da147507da3fb877db0cedcba766
GIT binary patch
literal 234
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7>t(=d8H`QLvmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
z(Z8jg;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+|Noq$sH~KMkwJ^=Kgb;nj}#cV8F-jjKq^@nI5{{O7#JBC85kH_9<60z
F006i0I|%>)

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085
new file mode 100644
index 0000000000000000000000000000000000000000..9e6dbef0817f5385b4b2e897eef7ac63c1bbfb9e
GIT binary patch
literal 73
zcmWekEXZVFVqz=j(@f>)C<@ci`p?F|z}fOhmxV!?gOj10k0aGyEjc4GFE2GGzPKbY
cIXl%VKB+V_HM1-;CndFrfw72ziLIm(0J*vpdjJ3c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006
new file mode 100644
index 0000000000000000000000000000000000000000..fd2e76f49a80e089e96448f6d77b155edb9bad1c
GIT binary patch
literal 325
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EM*vk0?8H&m@KuS~XK}tcUF(?#qFtDYj7ZoJyWt5Z@
z80lpcBqnFamn0_Tq{bI#R;B8tq$cO5q!uygF|nl<Z%$=mD^KMp>vAY!00XYI42)K+
zOnhvb<^NNka}<@8GBB3e|7R>>`2YX^e=RN$i;3Zp0s}V#4-*?$3j<@zqqUk09E=Ps
z3}7}31Lup>)Z!whBOoWGa&VM^JjlRc-SQ}rfe|8BRA#UB|F+crBF0AoEgb)0f*M*(
oFF~gMPgP#a!obPFxx;>~VX#^UW6L8phP4cwRz(~P9Gnb001;kUYybcN

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f b/test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f
new file mode 100644
index 0000000000000000000000000000000000000000..429971ddcc44773add934d55ff8449a2ac64daea
GIT binary patch
literal 428
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsqQDuB-acWU~
zdTL$?!~eTQWlRhZ`P{^c_#%*+ywv29_@u<-?EJK}_}pR!u<qp4yyDVg2Cni{`=T-?
zK8O`X3Jh!z>5P(+0wcYg{QT_1jMT)G_@v5`)M5s$)c^f=i^>$4)+)YMXDn)AU}$If
z&%wah8_K{~q{XD)`iSZOe~w^1Cbrb#&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10m
zj-s+s2F5b`|BOWp|NsC0uf+voF)=(+VBlupVPXVpVPI@|v{sXWgOP!S0nBD$;C+#r
zSX{((1ngi<CVe)h|EbFM2ElqAMNDkv92{k!Kw@C9Zh4f*zz9~vQB-EH_5Zij{vyUl
z0xcZ>p@Mv=97RkF3}v8DWqQfRz`*c7Re3Fo0w)LO4*Ru6|G^eAFt#u<JX*`Z$-xk;
f_W%F?<c!3;ywn^922QIYj<pOP3=ABcOLqVOIBtWq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7
new file mode 100644
index 0000000000000000000000000000000000000000..abf27f22b6ecc0f525f4af8f64ff84591670e11e
GIT binary patch
literal 341
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kI$=76-O+M{Y+tN2=-v8bh;
z;XlW!G6u#&p$v>gT1@&aj})2y|K|wSV`57!-ki$B*79g=c`8SlLlFZQaIIxvOtoTV
z;$zb+|DXDtqo}NufssLr>px==0~5m|1qN;g9wsJ`QWgeIMg|53P7X!}2F8|0YgrgL
zol{ebi<pj}IMTZ1Q6d8)6I(em17B)UnZ4G3kWo_}E&Z*?u)m72h2uX&c~O~$5YtOG
q1_p-zsmf~^(~Am{^@>xI^Yc;?iz?$wi&Kl@6Vp@kN*Fj9b^ri3DPH^l

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 8a20e33ee3..3cab8a382d 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23630,6 +23630,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin"
@@ -24708,6 +24730,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34"
@@ -25038,6 +25082,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c"
@@ -25500,6 +25566,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
@@ -26138,6 +26226,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
@@ -26270,6 +26380,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
@@ -26512,6 +26644,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
@@ -26996,6 +27150,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
@@ -27238,6 +27414,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
@@ -27788,6 +27986,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
@@ -27942,6 +28162,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1"
@@ -28272,6 +28514,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
@@ -28956,7 +29220,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28978,7 +29242,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29000,7 +29264,29 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29086,6 +29372,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3"
@@ -29218,6 +29526,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c"
@@ -29308,7 +29638,359 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29330,7 +30012,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29352,7 +30034,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29374,7 +30056,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29396,7 +30078,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29418,7 +30100,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29440,7 +30122,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29462,7 +30144,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29484,7 +30166,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29506,7 +30188,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29528,7 +30210,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29550,7 +30232,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29572,7 +30254,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29594,7 +30276,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29616,7 +30298,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29638,7 +30320,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29660,7 +30342,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29682,7 +30364,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29704,7 +30386,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29726,7 +30408,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29748,7 +30430,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29770,7 +30452,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29792,7 +30474,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29814,7 +30496,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29836,7 +30518,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29858,7 +30540,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29880,7 +30562,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29902,7 +30584,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29924,7 +30606,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29946,7 +30628,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29968,7 +30650,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29990,7 +30672,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30012,7 +30694,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30034,7 +30716,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30056,7 +30738,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30078,7 +30760,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30100,7 +30782,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30122,7 +30804,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30144,7 +30826,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30166,7 +30848,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30188,7 +30870,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30210,7 +30892,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30232,7 +30914,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30254,7 +30936,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30276,7 +30958,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30298,7 +30980,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30320,7 +31002,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30342,7 +31024,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30364,7 +31046,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30386,7 +31068,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30408,7 +31090,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30430,7 +31112,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30452,7 +31134,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30474,7 +31156,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30496,7 +31178,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30518,7 +31200,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30540,7 +31222,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30562,7 +31244,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30584,7 +31266,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30606,7 +31288,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30628,7 +31310,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30650,7 +31332,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30672,7 +31354,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30694,7 +31376,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30716,7 +31398,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30738,7 +31420,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30760,7 +31442,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30782,7 +31464,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30804,7 +31486,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30826,7 +31508,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30848,7 +31530,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30870,7 +31552,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30892,7 +31574,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -31286,6 +31968,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
@@ -31902,6 +32606,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842"
@@ -32056,6 +32782,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424"
@@ -32254,6 +33002,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
@@ -32606,6 +33376,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
@@ -32760,6 +33552,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a"
-- 
GitLab


From eb48a813221f15f7a672e76ad12207df5d9106f3 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 13:49:26 -0700
Subject: [PATCH 173/525] Expand corpus

---
 .../0236f28708dcc2e044d67ecf93539ce6c33a727a  | Bin 0 -> 416 bytes
 .../13c409dcf7752c25b2b51ac5fad9201b505d7059  | Bin 0 -> 344 bytes
 .../1b699132724acab3d42fb5210c07b74343449873  | Bin 0 -> 322 bytes
 .../21f3be485826850e4f4670bb81982e2827815426  | Bin 0 -> 539 bytes
 .../2f44fd38efef5818750f9adc9b133e40f9cdec71  | Bin 0 -> 344 bytes
 .../465b299ab3509b61016406e0d1d93f7774c03c8c  | Bin 0 -> 407 bytes
 .../55ed466781b547db5957233bd8db0ce1f189183f  | Bin 0 -> 405 bytes
 .../5d765c856a9a8650e1b17813340b9b6ba0989b58  | Bin 0 -> 595 bytes
 .../646c501021c79bf6eb1a39a9bcc82e018f31bca2  | Bin 0 -> 345 bytes
 .../6a10118289fe7179c4e9bb6a1b466ba34c582bfb  | Bin 0 -> 266 bytes
 .../8713d28e8cf45d3670ad40829a83b1fc7cd41a75  | Bin 0 -> 595 bytes
 .../9a24710002a240ad32b7adb5310f4970c09cc8ca  | Bin 0 -> 352 bytes
 .../a8d353c157cc3788a86a0d572adcc7744e7e902a  | Bin 0 -> 352 bytes
 .../a994ed559126fb75d245d34816a727d8585045ac  | Bin 0 -> 339 bytes
 .../bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c  | Bin 0 -> 195 bytes
 .../ca6b20544c093b14703410d792c8f73e73205bce  | Bin 0 -> 340 bytes
 .../d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6  | Bin 0 -> 348 bytes
 .../dacc3689e0a7b90aeebfaee000adf89e95e50cf9  | Bin 0 -> 340 bytes
 .../e0e7112238b555fdc12a1c5e9adb50703ae56a43  | Bin 0 -> 263 bytes
 .../e212833dd63750f436254c0c81f1ddd42fb9a17e  | Bin 0 -> 345 bytes
 .../e590a42febe0442ddf632b05cda112b3aca43380  | Bin 0 -> 234 bytes
 .../f7b309af25b6ae5029a9548142333a905e3c99be  | Bin 0 -> 339 bytes
 .../fef5208b90316cac47bdc95ffd384b9c9a8a7c78  | Bin 0 -> 409 bytes
 tools/run_tests/tests.json                    | 506 ++++++++++++++++++
 24 files changed, 506 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a b/test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a
new file mode 100644
index 0000000000000000000000000000000000000000..3e11c30b0b4c540fdb4c84d71cdc414eb0932977
GIT binary patch
literal 416
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kJLxxnUtw5HmlYF(@NTAi_|
zrJdnF$EtD$#zUbDj73^Z`Yn$Xng0Lh2-X9+0;HLVkFA_7wRm$X6I;upwdJWCWe!CQ
zV8FGOficyJm5Gl{v;2SRbB?02QU*o_Ew2BJMGQ;~j}#cV8F-kOKuTE{I2joj7&ti?
z7#JBC7+W5#WntiSPE9Q?VmiX~A7o4Fe}?p;f@Hmnl9B>Ly^Mmy<m~v8#H5_m_~Oi}
zRK3)^<ouM>B2ZYQazK4&-SQ}ru?S=u10xe#IWq%aYEg;3)_;)oQywk-&9J|UaV<j&
z$A3te6qRWRF}>tqEaFgLV_;zTpQ_9Nas>zHqZUSn9rkO3)jAkk9<ec4GjK4hWnkbe
L;$Yz5WY_@!PEB%)

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059 b/test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059
new file mode 100644
index 0000000000000000000000000000000000000000..7edcab61d6699bee34801864b61af2a02b590b9f
GIT binary patch
literal 344
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(#l-NxoQaLki6hls&6bIYO@lA>C0OD=8&|n~
zYEc;zp8^9LL*oCtMP*D3j71DgY#>u47#JU20h>}(roqI<Ri0`OQVKD+2&5wwtYfX>
zYjwt=76yiPhW{K4jJ=@@j73^Z`Yn%`{{QC))?;EzE#92U#8#flQP$;9!~h0dYZ(}=
znE2Q<%m1f7=O`*GWne6`|Ib*&pv46unHU}^FmN;QFtLDDGcYhPwme#^$-u!Vzye`I
zNlq39&KIev#YId<Ant<ri-Ezq<xwIdBa;@?{q|b_e@j{KFJgQo(8BQ_q7)o7FWDFv
n82+a!uVrE2<lx+4zt$jFt%I@U5gWr=2F@Z51`bXJ4u%~7Y86{E

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873
new file mode 100644
index 0000000000000000000000000000000000000000..5ca4b56a93ef9b9264a20b32569a1145fd61d761
GIT binary patch
literal 322
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
zKjU4dGEIh}A_gWlkWL8(#z$A!nAnQ)OY>6Vi}I5)^B5RG1{IZQfV8ICBedQvDq~u!
z_*$K@sHL6ZKL-Qjp-=|KA}uEUmPbtg|8oTEF|nl<Z%$=mYk9P`Je8xY%b|z?47k=Z
zFj}!P@v&*v|4)6+QB+pSz{sG*^`Ehbfr;Uf0s}V#4-*SWB?|*52PXpqBLgD?17pjh
zwJZ#r&Z()zMNCJKeaFCH-SQ}rfsu)=oSA_ym7}Q4UhDsFhW$m1k6JkXLsS-(X$UdB
nWMg1p_@Al_GKYh6hy7ZkV6_g$mPc$1YZ*9;I2brM8Fl~wIR8}^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426 b/test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426
new file mode 100644
index 0000000000000000000000000000000000000000..c8c5daa2a2780cb556103230993140c946fff56c
GIT binary patch
literal 539
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlutvs5SJ;qsGB7ZLj43M90BKCMN7cAi@wGZ*QA<0+
ze~wjU42*|D85oPSnDkp7G5!C~5v<3=mRh_ym5Ht8(c1D<j<PO?A_g$vTFbzgYQ@UL
z$EI2SKlM3BQdubjBZC&#e~>#E9w{(zGw?96fRwT@aB^@mFfcMOsxvUQJX*`b!0DWt
zT3p0*1l5t&Esqiz7@640nHl&}If}~cwf=()oAPMsZ-)IXjE{;qK<YVC?THQv2?oYT
zSCIV2z<B8Y|Ns9(!G0@dN@e2+*4unIm5B}PGYu<{YZ(|oJ_Gp+?5!dsZ}BpL{l&u|
z!mDP>$HT-3R?pbL;4H*|=^aLxcS@n2`OUDui18693jU`uwQ&4rVk_qdNoi;?y<}rx
dVECV^3<?_#&K>q^4T9A=Kw-teS;WD>007s8lB)m!

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71
new file mode 100644
index 0000000000000000000000000000000000000000..561eb0308761ba0904a6376f438c7c4ad856e844
GIT binary patch
literal 344
zcmZQ#V`3^!Eh<YbV&M4C#Kcz4m&(CWRHmWzpNWZqt(=b|)n3h(iH)n=KDDTfiBExn
zjUn~_-J&uk2F4-=CN_{p2?oYTSHK#J$}~VqQ|(ceu2p=k&REpa&hVduf$>l%17ndE
zQ+~@MrvLvrg7ui#Qj0gIGO?AXa+GyB6g4n_0M}XuMk`h(J~qv=|EbS8ipokE7#Xy<
z{)6mfc%;C<&A`LN0#eAp2qGC<9<60z;B-z+EiPg@g6s(f2J4nbi42Sov7$12t^dFO
zrz+bU1nYMcK?E807co9+;rI{XfxOQ2l8u3Z;eV<!$WRW>9rkMtg4H@0TONTV8Oj)o
p{xdKzwmf2ESj)g!#KFMu|3703Bg3P$44fRC91Lq2JQx^u002JlT=M_`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c b/test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c
new file mode 100644
index 0000000000000000000000000000000000000000..931425b04d77fd6bc752d537cdbb952cb53f4c35
GIT binary patch
literal 407
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|)0&(~Am{^)gCI3XJqJ3KEmE<4Y2g
za#G`qGpkbdQuC7YQ&Ni<pysVre67w{)Y8uIpM!z%P$&aqkrtEwBc}iVIfC_=*iwr(
zr!ujXr*f2aITSH~0oPgvMk`h(J~qwr|EbS8ipokE7#Xy<{xcS7F)%SaQefa_;9+86
zU|>*SVEq68|9_As#+FBGSr|B-Q&WqJn2s>9l{2}OYw&5Na&#1hX=vSNVBl<dq$|Q8
z%)x1u$^r6@)_(>D>y}4}42(=rA8OhE|IM(!i1ASi$A2caavrd+wU}PAfz1D(sthup
z1E$zsnc+Vp=MMX|Cc$bQj4hAY7}hdy7I83ea58|LqL-4ImYk88mzSCoUtE&7BRM-h
MsWdYO6e=1F08vwP?EnA(

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f b/test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f
new file mode 100644
index 0000000000000000000000000000000000000000..0c955ea7353a2865eba3e994b305e9678fd54abe
GIT binary patch
literal 405
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUU6!2eqKsmQDuB-acWU~
zdTL$?!~eTQWlRhVVENp{iufXsn!MEHlK7;=<m~*kwD{a&hDTTa{{R0UY-UlJ1```s
zd8&O;851AGnj!@THip#y{dbGX6q(j4zE)=}YGGh#XZX*-z}Oqgz*wZkq~G$0>HmL@
zU_B<b)Z)#lOl;+;9A#Y&MGOp#3?RU@mVwcVm5Gl{v;2SRbB?02QU=B{`~QqZ4FCWC
z|F6XbVlgp1Qefa_;9-JjVPI@|v{sXWgOP!Sfq}8*)mjz?-WRE<#YId<z|LaQXJh)G
zs%&o%tk+S*#8%G1Q3eVP1_tYvM~MuKU^N^?W%gSCe@pEzVtgdf!toy}$d}4d#Kgc*
z1`0l=muw6S4F6M=*Rm*Za&YdjUu*OqWZxqO#ui3~M{5~4IT(V~K(6dyY<a}Su$F<-
Qs)%DPg9ifx2PeZ00M_Sx$p8QV

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58
new file mode 100644
index 0000000000000000000000000000000000000000..6219b46ccd97ba762151a9517b0dcf61251f3218
GIT binary patch
literal 595
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuyO{*mPczDI2aiO6LWGHnApmh*qBhg$HAe&S5{<|
z3iTfOzQgbq#8Zc$o<jFiDgjSH{G-Ky@DK|F$TwCj44f}gQ<)&%V*p2vhSq-u2J4nb
zi42U;FfOy#`u|&Me-UHWBY_qU1_lNN2FCyY|NjT+0tE>R1E+IpYH<<M5hk{Bt5gPt
zqO$)?Mfs(9De*=5IE+im%mXEWRF0xD4K1dZYzzzx|5KIMvM_LRaPF{QYZR>3!PxSM
bZ7l<55eEYYCj-Nd{Y8wASXwy#Gcf=F_HLfK

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2
new file mode 100644
index 0000000000000000000000000000000000000000..d00b12cc9bb3cadb6b8dc9bb61f9387106543a29
GIT binary patch
literal 345
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkVXjx#z$A!khL-}FoMh}D$@YzOtnYVxmNMDI%82w
zJHvmDRb>o}he8<`i?o>ZTOKj}|IZPu$HbOeyg8MLt>w|$@>GtpE{7rpFyLCtz?f>q
z%EZT}S^huuIY&`hDFY*e7T15qA`S*7hDQnv+zdQSEFiTk44fRC3=E76j0_BnEsxf+
zFmO7jrWO}59YJ-ab<3kf21X{fa%Kj;RF0xDd#(Tf8H*UEJX-pjVSf?hqZW?;5Di6T
u8bVAj*%%lY{--K~jN{<kVZYWOSgnJx<q;c$H3J93S_aM{4h9ZRh8+N3I9t2`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb b/test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb
new file mode 100644
index 0000000000000000000000000000000000000000..8f0834bb414c09b48f55272d1a4c747b6a35d54a
GIT binary patch
literal 266
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#Kcz4!J)xdR%Dg>pNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RU|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921YAZCO$UJ^8cyN
zIf}|k85kL~xc)O1X)!P{JW^obX5e9BVPIfTU|{_J|NnoGCdQUWYgrgLol{ebi<piu
rv6Wk;GB6aCX=wdtV6bj^l*quy1a+gm*8krO`->PKv9xgfXJP;V5YR|5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75
new file mode 100644
index 0000000000000000000000000000000000000000..08044b49dd6cc2b24ac239782a2b1655605517d4
GIT binary patch
literal 595
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuyO{*mPczDI2aiO6LWGHnApmh*qBhg$HAe&S5{<|
z3iTfOzQgbq#8Zc$o<jFiD#TO&|NsBbfX!17|7bBFJjB8P@{JV>1Lup>R3?b`7{HOE
zq4l4E!Mf#9A_F5djLYn`{{NQRU&NU8NT7v*k%2?uKLZ2EDh9A2YgrgLol{ebi<piu
zv6Wk;GB6aC{bwr5FU?DdFUrSZTvBEpC;_B$6qRXcF}-ACU|{&4sthuUgL8-dTEk$q
f4#t*8Y-<@fi#QlKI2jmr>@Q+`#L~j?pNRngisGWR

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca b/test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca
new file mode 100644
index 0000000000000000000000000000000000000000..acc82fbf3905b1fe302d8b98de94c0f708169422
GIT binary patch
literal 352
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz%Ut(TyL4Hw5d~s@WX;EfLB|}jelL7-9
zL+by#MP<wkObm=g3`|UHO#f4r>p6<pK&D7AFfybU6(s9rl#~>i=w%cnCTGW&Bqrsg
z#usN+rRt^TCFiH47BMI)zE)=}YGGh#XZX*-z}Oqgz*wZkq~G$0>HmL@U_B<b)Z)#l
zOl;+;9A#Y&MGRoTwU&X=ij|3vO|$%e>T`~wvQh@dGW-A5MGXJ{|NpPW^&jLMhDQnv
z+zdQStY9q+oGp*mYBF#zGO#c(Ft$Eg%fi6<A~m(Ri0KGZ83)+6Wg1%l85pcv9wjm`
zLi}G;X0P@Cx77Y3#zz7z9RFd08d^***+8cLPgMq)!@;@3eyw4!S_fmx!$)ikYZ*DM
aiZ~cJILjD|7#Ld^86Gk0&|1sj!2kgNUT4(+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a b/test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a
new file mode 100644
index 0000000000000000000000000000000000000000..ba9a3e1aa71c23ceda18870381f0b86d02ab7895
GIT binary patch
literal 352
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KNr8cl
zA@%>=qB2GXCI-eL1|}vprvItR^&CZPAX6k57#Y%w3X=6QN=k}M^fC$(le6PX5|eUL
z<BKz^QuR{vlJiqiix?CYU#l|~wJ<QWGyLaZVC)TLU@X#N(r<ah^#4CcupSdzYVqb&
zCbsfaj<PO?A_g$vTFby_#mdCTrdj?!^*KjTSt$c!nf-spB8LC}|NqzG0<oAF9w{(z
zGw?96g0(Pkwme#^$-u$Lz{0@5*z#yC3j^ni)YRf4rXx_lmX&E}{byjXZh4f*zz7j5
zDzn%6|66K*5#u9)7LNZgK@BaYmuw(Y|EDU0%;DhNVZYWeSgnJx<>4bXhP8~GRz(~P
X9Gqp0MGTBBj0}$$c4)0-@L&J{B#vhc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac b/test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac
new file mode 100644
index 0000000000000000000000000000000000000000..8c6ef7ad0fab6e2f812711721eddd684dd13f42d
GIT binary patch
literal 339
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl8Lt
zjEPTyfsG;c|J|Z8CI-eL1|~L;ArcIXkFJ0XDJs)o;^Qh$wJ$1T;)9r5gwU~8@wGZ*
zQ40e@JHvkt2FBh{2F4;SCjFL2O#lCL1nV)er50~aWnwE&<tXbaVgLiKwG50_Onhvb
z<^NMHIf}|k85qm#|1%abXmNo^CWc1}4BQMnOe|p442&(0)@m|vFfy<(fZ0%zlZAov
zMQUns5z`TfqadDQV6bj^l*quyqy=@nz1IKVQu~V-9|^Q@{D-Ing$mP4HU<WU|EbDr
iSr|AuICt2uH3(MgU~GBB#;}%wvxtL%gOh=SVFv&%4q12r

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c b/test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c
new file mode 100644
index 0000000000000000000000000000000000000000..f1f0f7208272ae9a6c8b579342ad7b45314b6c9e
GIT binary patch
literal 195
zcmZQ7x98wvOI5RFV&f`LwJ$1T;!|K?V@Umfx2TMXfw72zi7mM-wMc`3@zIsFit6f&
z%|$Kk4F5S87!PqUFffF+JYxF)pCee0iLE$wb1D;Cc`8R)7XyP}az<iaUTO{l7;vp+
zU}R<DV=Mok%28BS%D~8=#q}R#Hp3$Y25ufkRtARD)Z!whBZ&+QjQfiiAGL5WtSU<d
nDVg$UsWk(~e<rqaK9F851}1$CHU<WU|EbFMYYl?+I*J$ovmP`}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce b/test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce
new file mode 100644
index 0000000000000000000000000000000000000000..b9aaab39a620040bd8ed06d49ca7a34678562c95
GIT binary patch
literal 340
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kI$=76-O+M{SyR4;0I&BVC2
zo#8*nsxk(~L!k_eMOsYyEsqqL{{QC))?;EzE#92U#Mbg?ZFwq3nL`l+7;vp+U`(}Q
zW#VJgEdQVSoTI3$l!1{!i|apQ5d#y$BLxO-1|B9RkWv-~PDTa>22Kt}1_s8KM{8La
zIGs~di;Falpg7XH<xwI7BNJOWGXr00QJKBge~?jA9xeUNu)m72h2uX&by1my5YtOG
o1_p-zsmdU;I5>CMuMJk~U~GBB#$e6B!LXKrvxtL%gOgzg0IaiGeE<Le

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6
new file mode 100644
index 0000000000000000000000000000000000000000..6d6bd6f555d24ded0f483b9703bf0430d5f1e22a
GIT binary patch
literal 348
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921Y9;J~qwr
z|EbS8ipokE7-h=r|1%abXmNo^CWc1}4BQMnOe_ox41fOr{}0y1*z#ztCIbf}0}BHK
zhz%t<Sr|B9q^1@ZF&%+84&pfm2J4nbiHwX)T2N2eYyJN%Wxc<M@sU6a$A5@YQ1CFl
rWMg1p_@Ao0mW6?ngL8-dT7zJ<4#t*8Y-<@fi#Vn;aBwnkFzf&Tg1KJm

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9
new file mode 100644
index 0000000000000000000000000000000000000000..4f07ff14a167739d641a328a67c7c9161fc86492
GIT binary patch
literal 340
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsNsR(cRQCCI-eL4F)DQkVXjx#z$A!AX*`M85kI$=76-O+QYP_{=ZvP#<W)P
zwK`)_OFP4Vj#Xt0jE6!Q7>l%+^jjV&GX4M05v<3=mRh_ym5Ht8(c1D<jxvWL1~A}S
z%fOgw#mdCTrdj?!^*KjTSt$b}gBI6+#v%qLhDQnv+zdQSOdzE!44jM%3=Etcj0_Bn
zEsxf+FmO7jrWO}59YJxVb<3kf21X{fa%Kj;)S@zbt^XjSraW5un_+(yV++TBi0Yy;
t4I!qNYzzzx|5KGgW^r)tuwNUj*1_2Fh>gLTfrDW!17{Hj0|zI=4gjA}T2}x7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43
new file mode 100644
index 0000000000000000000000000000000000000000..e8dec0a4dcfbccc1d35c1726b5a45761f909314e
GIT binary patch
literal 263
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG&=liNjvamWi$0KDDTf
ziBExnjUn~_-J&uk21Yg}h9ZfgvZ7Q5MuzmFf@Hmnl9B==y^Mmy<m~v8#H5_m_~Oi}
zRK3)^<ouM>B8G0o*XoQ#Ees6p4F5S87<)q*7>l%+^jjV={r}GqtjEMwyg8MLtvr>Z
ztjnQ@0Svg-GB8@PGV!r#mj6$E&QVlW%D`A=|DUml;s5{t|FyV4EGC9W3Jlx~JWQ-$
wEewn;kJf53a4<5kFo4-Cd<>i~Qd5hIn2ta_SXQQ?^`C)(i6Jl5$||!A0RGcSO8@`>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e b/test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e
new file mode 100644
index 0000000000000000000000000000000000000000..bdfd942a0404cc3d79b53dbd7108ab29bb9adada
GIT binary patch
literal 345
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|(ceu2p=k&REpa&hVduf$>l%17ndE
zll~*7|Nl9H^_bXFi#Mk-v6ZKClyx~2F@OQrS_VcdRwh0+&GP@L&pC?9N*Nd#w7C8=
z7HKgsF+5UW;AY@qVqsulP+(yE|NsAgkS4~KM{8LanAn*9Tcs*TD5`Thr=}JcF&$xI
zE4NDJ069(TKLdkxi+UmhBNNoM_FDgcGwd&7eAL46A10=u#q^Smfq~(Fs`6SE28J@m
zB8C<Q#<iRroIC8-8V9R&FfuSQJz`^0R%cM<XnDlOu(qhogTekkV-W*m3&W$eoJAZA
L9GnacJ2)5sjqzML

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380
new file mode 100644
index 0000000000000000000000000000000000000000..5fed465f76322c9f74e081d17c0a31d7364cfbd7
GIT binary patch
literal 234
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7>t(=d8H`QLvmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+Jkj6f^^<3Dq~u!
z_*$LOzonhwKgX&v2F63742(ruO!_U4nEwCg2-ag_OD*1<%EZ?4Xl;2aM_HFc5d#=-
ztz}?LwPI!BW791E|D2<!tdxO~L5u4@$Q=xi6d1S}c$io~Dp?pfIXD>@7#SED7#Ld~
Itz}^V0Jv>C3IG5A

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be
new file mode 100644
index 0000000000000000000000000000000000000000..85b765083aab821d5dc19d50fd1ad27ae82676a2
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zTCp<mv1yk7Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW5^sj0<9Oh-`MXx;KCk%5tkt(=*GFSV%5Uh6-|s40(@{$|);#n{5}AELUbOhbt2
qB^v_+!~axekXam@JM7m6t93B8JYr+8V&Gs{%fMO0!N9@Eumb=aomu4o

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78
new file mode 100644
index 0000000000000000000000000000000000000000..064a2007e6636f781374d01704b555a3ed7d1e02
GIT binary patch
literal 409
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSfy3Qz<4N>fw4%7Nx$WhBGdo>9Km`_Y^lYYQ<>OW9<41;<tTF~VgLiK
zwG51@R;)~XY?}X5pK}zIl`=3gXmR}qIfUVn0s}V#4-?b>|Ns9pFoM)`a&R&*FoM{O
zEsxf+FmO7jrWO}59f3IX3fPYf4Aw1=5*Zko*vgq1_)?3??6v-b%$xFP>2HSpMU0PH
zIQ~P_7nNxUF}-ACV&h_9VECU}o}N`yX3eLd3^JI5a|Z((0~5!8P#}U_!v+pd4F<-R
zN1SUJtRa47V0_fFmZ6J*i;v;|e+CZwSqy6pgVj11TOP47STk@itYzRV;$Yz5WY_@!
DiRE#^

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 3cab8a382d..d57f4b2862 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23366,6 +23366,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e"
@@ -24246,6 +24268,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc"
@@ -24466,6 +24510,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f"
@@ -24686,6 +24752,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
@@ -25236,6 +25324,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
@@ -26028,6 +26138,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
@@ -26534,6 +26666,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
@@ -26864,6 +27018,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
@@ -27018,6 +27194,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b"
@@ -27150,6 +27348,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536"
@@ -28184,6 +28404,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1"
@@ -28822,6 +29064,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
@@ -29240,6 +29504,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
@@ -29306,6 +29592,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
@@ -30076,6 +30384,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
@@ -30714,6 +31044,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a"
@@ -31660,6 +32012,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
@@ -32166,6 +32540,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
@@ -32452,6 +32848,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
@@ -32496,6 +32914,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36"
@@ -32650,6 +33090,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
@@ -33530,6 +33992,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
@@ -33838,6 +34322,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc"
-- 
GitLab


From 55cbf1da370d9548508cee89bfc184831a5078f1 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 13:51:29 -0700
Subject: [PATCH 174/525] Expand corpus

---
 .../08a8a647b6a8f47ae10852322d14832fc15021f1  | Bin 0 -> 95 bytes
 .../0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6  | Bin 0 -> 67 bytes
 .../204093594b568ada9c7857a971f2a4b42123ee1c  | Bin 0 -> 51 bytes
 .../252de25a5237c830ad8c5e4732c176e03785042b  | Bin 0 -> 67 bytes
 .../2663ce44ca5832381cbbdf7b252e39d6df021a93  | Bin 0 -> 51 bytes
 .../27f37037525aac7a41ffbadd6ce52e5a1851a2b7  | Bin 0 -> 69 bytes
 .../368c75135a7341a96627d0dcfc4b2081003d8979  | Bin 0 -> 69 bytes
 .../3b3b4f9a985ec49f6c54bae798208625e5adb777  | Bin 0 -> 77 bytes
 .../47e8aee44c2c7bd870f15b50fc085c5a8030edfc  | Bin 0 -> 51 bytes
 .../4a11af9ef42aeb36691185520be281c4760ad27b  | Bin 0 -> 403 bytes
 .../77ea9180617391d8503427a1c060538182f7729f  | Bin 0 -> 216 bytes
 .../7c2e48b0d08aaeb95b5ca26036384aa2cec9de77  | Bin 0 -> 51 bytes
 .../7e18989175bba8d9aea34413d6f328549e1c6825  | Bin 0 -> 67 bytes
 .../824152f7bd022996b41327002f6971cd9900b265  | Bin 0 -> 51 bytes
 .../8b7b914723bfc23ec650cb91d209141641fba09f  | Bin 0 -> 51 bytes
 .../9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b  | Bin 0 -> 804 bytes
 .../a4e4a0473ac1f2b8de86efdf00fcb382a343126d  | Bin 0 -> 38 bytes
 .../ac727124e46a249419f088c8665324a11b357b84  | Bin 0 -> 51 bytes
 .../ae8c538d4ad7f2996ac724bad7a075e1aea32556  | Bin 0 -> 733 bytes
 .../b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b  | Bin 0 -> 66 bytes
 .../b39bfaf6a3072d8a50984dcc54967e9246f8d3e5  | Bin 0 -> 51 bytes
 .../c8cb20176e427d2e108187924f570ef1df6d440c  | Bin 0 -> 50 bytes
 .../d2df8e95436cf98ef2189191a75a3d9c78b1be6c  | Bin 0 -> 51 bytes
 .../d4a72650e8218ec551fef6560ddd136d52828a4e  | Bin 0 -> 51 bytes
 .../e1f2e203d39ab2509d4a67f7a44265b1e6364334  | Bin 0 -> 67 bytes
 .../e6b3c920b47e00055226d49b9f715c5d4353e3e5  | Bin 0 -> 748 bytes
 .../2a688fd507072e1cfa2e3bc58652a7cd82dface3  | Bin 0 -> 286 bytes
 .../88017b0894db1e6f4e3a6640ffe2876d31a54723  | Bin 0 -> 322 bytes
 .../dad922e2daf84cf039f50cf8636eaa9dbd01ff83  | Bin 0 -> 356 bytes
 .../ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4  | Bin 0 -> 75 bytes
 ...t-1ae0ed17a042aab8a3c3199c83a809b0243d1424 | Bin 0 -> 2047 bytes
 ...t-4c6da955e4c101b81a62b2f8e934d94a62ae534b | Bin 0 -> 2046 bytes
 ...t-6d37c5e6d7efee56319b1316725fdc5aee5a52c3 | Bin 0 -> 2048 bytes
 ...t-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a | Bin 0 -> 2046 bytes
 ...t-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148 | Bin 0 -> 2047 bytes
 ...t-c05c239719a7beeca2c126b7e5ef7251fa615b54 | Bin 0 -> 2047 bytes
 ...t-cacd0e0c5f7d4169085735400100da4d36397185 | Bin 0 -> 2047 bytes
 ...t-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb | Bin 0 -> 2048 bytes
 ...t-f67be653815f6c2c10eea55c8009e1167ac9c20b | Bin 0 -> 2048 bytes
 tools/run_tests/tests.json                    | 912 +++++++++++++++++-
 40 files changed, 885 insertions(+), 27 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1 b/test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1
new file mode 100644
index 0000000000000000000000000000000000000000..36f5a84ee6bc28f602e4485dabe18440bca0032b
GIT binary patch
literal 95
zcmY$$wPu{iz`)1=0#p60Co0-&giV~NF;g)&mr>CVOy=f-q?th~7#LY{t=V%K`WgBe
p7;+hN{W$h2=4!HVStXX1WaJlRmQ?!rF)(OO<eHc`apJ^@egMV{7b^e&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6 b/test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6
new file mode 100644
index 0000000000000000000000000000000000000000..a4cb1f9d2670fc88b2cf2e6afb6b9fd3cdd5c2d0
GIT binary patch
literal 67
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U&1PWW21^u|B$kvGGg>h)
RFoHBNE@fw6WMI@<0RYtr4jTXf

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c b/test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c
new file mode 100644
index 0000000000000000000000000000000000000000..662e18e4eab7b8c398a5930443c77de7a392a2c8
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXtx{P0L9vN!3ZO$}C_9snc2k
E05t;*XaE2J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b b/test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b
new file mode 100644
index 0000000000000000000000000000000000000000..df34cf3ee8866c6782d07b34fff12755f3df7778
GIT binary patch
literal 67
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U&1PWW21^u|B$kvGGa4{3
RFoHBNE@fw6aA4G00RYun4p0C9

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93 b/test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93
new file mode 100644
index 0000000000000000000000000000000000000000..821e28a23f54a7c448d37b34ececbf1553e42045
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXo>RP0OiDPfRT-(8**6snc2k
E06J?8qW}N^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7 b/test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7
new file mode 100644
index 0000000000000000000000000000000000000000..8ee39106137b3609a9685d0b9731f8e4d62a935f
GIT binary patch
literal 69
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U&1PWW21^u|B$kvGGwL%M
TF)%QKv@kAZXJBw()LH=m@y8B=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979 b/test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979
new file mode 100644
index 0000000000000000000000000000000000000000..848ea7a55bbf1afdf46dbe96b2fe46ca54205c40
GIT binary patch
literal 69
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U&1PWW21^u|B$j9tGwL%M
TF)%QKv@kL-E_GmM&{_ci>JAPy

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777 b/test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777
new file mode 100644
index 0000000000000000000000000000000000000000..eb373a12180610679927605f61e730e22161f598
GIT binary patch
literal 77
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U&1Pg^;0DVSmn4>y7Bd(y
ZGBSX4FfQfDOw%m_>1JnOaA4G00RU)K56b`m

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc b/test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc
new file mode 100644
index 0000000000000000000000000000000000000000..765edbcd1ea8cbb0232888f3712d069d8b4268a3
GIT binary patch
literal 51
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U%?8PWFe5vN)LH=m;v)#M

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b b/test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b
new file mode 100644
index 0000000000000000000000000000000000000000..19db996010ac87ba511102a58cdcd126af877589
GIT binary patch
literal 403
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^CoY@_Q_KKT
z+<-%^*2Jk37fxKM2{YKwkBNbSfjhmZAX&G#B(bEln9+c-7i2NmUa;vCCr+HGI2Gg!
zzlnZ|xtc7wij0aAL24k511Xv~(NA&WM86Lc{rngh71?uha~X5}G$;B^oH)^MqMx51
zNDbJTeh?dZz&4g-=BDPCmb^`ys_2&svSlJj;Y2Nv^QJ<*z87jK0|N&eC}<QJ6&XRE
zTfxA<AYgPK$sH4?gMH;ULw%y=M399bySWlU<V3I={QMNvCt3?DDJAFUm89mC=%!>A
e7vvXbf&#rHGe6JI%FoZw%1;sGUXXr<Xa)c=tbzjo

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f b/test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f
new file mode 100644
index 0000000000000000000000000000000000000000..ba195ae4147819015a4394a70599c0d7bd291b14
GIT binary patch
literal 216
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXo>RRkY4!oH*5QqPiagNFhjV
zZf>q(t|DXeL`BVsf_@XHPMoMXF_($K&rf}#rq;@diVLAaiWB|({FoRR7(le&40Xla
zTt-DdLlBv($&#x$aiSjxf0*d!r#X>pV&X&)(3}WX?dJzER&nCQiGJ#S6RrF}B8n4p
i{rtejf)uG=1Sy{AmzI<0=U0-dlU|iszz%Yt)(QYV7)5vh

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77 b/test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77
new file mode 100644
index 0000000000000000000000000000000000000000..a8da834f947b30846d6bee18a27e55043e6a6b8a
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXo>RP0L9vN!3ZO$}C_9snc2k
E06An0qW}N^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825 b/test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825
new file mode 100644
index 0000000000000000000000000000000000000000..deb05e7d6ca09316e3de176190f657fd64f452f3
GIT binary patch
literal 67
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U&1PWW21^u|B$kvGGcqt3
TF)%VPFfuM>XJBw()LH=m)fWy@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265 b/test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265
new file mode 100644
index 0000000000000000000000000000000000000000..1ec61bf8c6c3f9007afc33042968335809080fdd
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXo{TP0L9vN!3Z$$Shz7snc2k
E05(_+Qvd(}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f b/test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f
new file mode 100644
index 0000000000000000000000000000000000000000..fff77e33c4c029377199d875d8a1a1e1f05e885b
GIT binary patch
literal 51
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ8@%SkLr%?8PWFe5vN)LH=m^TP>*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b b/test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b
new file mode 100644
index 0000000000000000000000000000000000000000..afbd53bdbba9e19be7bc5ebbf4ce7dde6e614e48
GIT binary patch
literal 804
zcmZQzU|?hc5e*D1jM*RtLvF5Ot|Ft~RE>#>6LS?O`uV9()YMuzapJ;>QzycN{FoRR
z7!-3k7$!0*=H@bj2}QrD6DPuTF#P+^s022Tfq|Pt8N%XDFDgjZEiOqcDJ=$B0XGk7
z#Wh9iTt)>321W*u`dpYxV9FRkE(OWJ-3XJxbRz>uaRbOGbW{A)Cu&WcI&tB|m6~wv
zVE-Vyj?sXz7sWqX6DLlbs5liIAQSx*b2V9V6&V#Lg47^_Y2rjb#fcOBK1}rUV_;Nd
z&&|zc%=Ocp=r?iVM8AoCexRV7>ZdVL-H(9*Jv8?*Fy<;MPG!vX%LTiNg+Wn~A&NoK
z3ZzMKqT)nQBwz$OILw(DV6ik2;>wA+ii&=I_*@Ax&rdNopMwD$bzlN)7Cip6Cc>ke
z59}diZ_H4i2;xGLg`Xcd^mxE=TauZZnqOM-Hf^dR$RiUWE}N(Y3hJrQ)Uy}rGzJC^
zHU^Nl85Ke1A);GxVlE>n=2kE;FbEjkM+)SL)4_q`2XO#M*F?XGT#2CIod^zKKR-qF
ziPpkOO3C?oC8>EOx+$5(1^LC9pcGY-nV;vUIMEN3GA1G?qltc86BkZQwDR-wv+`5)
Q^YdeXq<V&E22daX0LpOs(*OVf

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d b/test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d
new file mode 100644
index 0000000000000000000000000000000000000000..76cf810adf4d90363f0cf5a9a349cba58234fc98
GIT binary patch
literal 38
tcmZQzuwrCoU|?Wi>SthJ{LjF^$iTqBsK}n1o6DH%r#O{iFM}duE&x>B1_1y7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84 b/test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84
new file mode 100644
index 0000000000000000000000000000000000000000..639fc8494e8b7aef696ba90cc4d047252056a823
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXo>RP0L9vN!3Z$$Shz7snc2k
E05&iUQ2+n{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556 b/test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556
new file mode 100644
index 0000000000000000000000000000000000000000..e047fb12f7c11207555ef6a321b18b5990451a82
GIT binary patch
literal 733
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^CoY@_Q_KKT
z+<-%^*2Jk37fxKM2{YKwkBNbSK{1zuVIreqZZ0F3Py|^Fwij&r#EBCpDozDC!*8OW
zVy-4jt|Fu2M35SY<3NfgPV`fpIMMIJL_a^xiGC9&PV}4T=jR8K0XxnQVh>MxQ9-h9
zNoH<perd^D1_qwo#0uTC{G#&2qLktf5I-_9<mM_e^n=_F!f8;)KthEvcaox_9|ObG
zi5n4igKe1jAMAgKm0%acg3gc0kAdOu|NsAIs4IfQhJk^RksTDwoeT^t%t{~@D0Gz}
z3>HWfFyQv@#OdJB^P8bQF*jFn1xiHuO=Jd{1@;80g!)9yl}ND!4G~3X^eI~BGESW8
zr!i68kAXpRA}HV{PW0oNm<S5ViQupV#ju~B;zVnx$G}0lkAX2)QE@6`u3s+LQHqKT
zQ4ES!pkPo0sUsM#kZ8seubLp+k>gfVYb89%`1vtS^z&oz17QX~P>5(M=1!dGm+NQc
N=Lg21KmfT$696y~;cfr`

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b b/test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b
new file mode 100644
index 0000000000000000000000000000000000000000..d1dc706fdf8e8ef8d0ffe60a30a971e6897b0a6d
GIT binary patch
literal 66
zcmZQz&|+j^U|?Wm;7u<oNY+iwOU_Tp%u8oUugWZ7U`Z@V&1PWW21^x}B$kvGGcqt3
SF)%VPFfL_hU~pj6S^)s~cn?7U

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5
new file mode 100644
index 0000000000000000000000000000000000000000..12f01c19a76893f53257a8a7803eaf64fc1af34c
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXtx{%}KN>DacGut<qr!snc2k
E05gIOJOBUy

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c b/test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c
new file mode 100644
index 0000000000000000000000000000000000000000..88d1c1be807560562a1efad6247959eebf6272e0
GIT binary patch
literal 50
tcmZQzU}4N=U|?XhR%BpM%+2MT2;#7S2)GnOZmwdkBBS3_jfqq96ajzx2P6Oh

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c b/test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c
new file mode 100644
index 0000000000000000000000000000000000000000..1e257a286552730b46a8e2f748edfb4adcbb363e
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOXtx{P18v%N!3ZO$}C_9snc2k
E05Jm%C;$Ke

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e b/test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e
new file mode 100644
index 0000000000000000000000000000000000000000..a67ab588da97297bc6b38787ca23333b7909b1db
GIT binary patch
literal 51
zcmZQz&|+j^U|?Wm5J@j8NY+hEPEIW-(M`=u&QHnAOYhN4P0L9vN!3ZO$}C_9snc2k
E06zl_=l}o!

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334
new file mode 100644
index 0000000000000000000000000000000000000000..5d1b4ecaf3b1e47b6598cc5feef137a8206c6963
GIT binary patch
literal 67
zcmZQz&|+j^U|?WmVqoA+FDgjZP0dTrPsz+nXHQ9GU`Q-U&1PWW21^u|B$kvGGa4~4
RFoHBNE@fw6aA4G00RYu}4pIOB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5 b/test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5
new file mode 100644
index 0000000000000000000000000000000000000000..427937b02faa9007dcb2f06f6f571293dbc91c2d
GIT binary patch
literal 748
zcmY#jU|?imU|?X(&CONJRb=#=I&q@n#9YORehe%iaga2+jGy{MO|6v^CoY@_Q_KKT
z+<-%^*2Jk37fxKM2{YKwkBNbSK{1zuVIreqZZ0F3Py|^Fwij&r#EBCpDozDC!*8OW
zVy-4jt|Fu2M35SY<3NfgPV`fpIMMIJL_a^xiGC9&PV}4T=jR8K0XxnQVh>MxQ9-h9
zNoH<perd^D1_lQ1qSTV2O5Mb?lGGvwp4`L=-L(9o^2DN);tvoXGcx4nDl+tgd;`L1
zP^Uq{h%tAPqM{!I!_<iz5iSASH}O9>G$0NDyB`*ieoTH041fRs|35=r5gbws42+EI
zpg`|rU|?ZZ0<l10tqftXKq7<zx9=xT2ZyEK4E2e*xr!@LqRnq2GsrBkCr~BSCu*)l
ziZf{VC_*Ds(K?rL;#5D4iRyj~44M-`!8mcEAJ@c0P`FM6hb$<*{rnUsT0=ZG4`RYT
z2F6@P#i@+Bez{;*DJn8VF(_Jr!a)(FkYF@JVjWL3Yl5stj%rP<mGBhg=f^bB&yT?m
cgc<xmL87UcJ8`04uAh~k9~gr|0puD@076vei~s-t

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3 b/test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3
new file mode 100644
index 0000000000000000000000000000000000000000..682ed1f218b9fae1586e14809559e99cedff33f1
GIT binary patch
literal 286
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^z5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5%3{PfpAMu>^S1iwcr;b5o0p
z6Vp@W5(^4)GLsWaGV}BFK@!>}8JWepnZ>$gi8+}m0wN$W-NfYN)PfS-)V$>Ul+3(z
z(ae<8ypqh4N}ZI{w4B6}RGsvy%mM+Xl2ne8qQuOc)S_YmuF~SvBHhIF)Vva<q{I~6
y<ebdZyb=Ylamo4ydWJ>}tVM}=>8T8Pr4^b`N0nserskKHFdG^Kqlz#Y1p@#la#zLx

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723 b/test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723
new file mode 100644
index 0000000000000000000000000000000000000000..2c2e8f32fc9fd73ee119878c7dc8e7494a27fc03
GIT binary patch
literal 322
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXE5yWB?V6`epEXm;4FG@|%EG|hc
zN=?yEN-Pp!w<=D~NX<=U$tWo)5MZ~;O)bgDPhko04-R4APA@7*)-5hcEGaE!G)PX&
z$;dA*5#UMA&nrpIE72{fEJzhdEGWpyOinDx%+J#YDHjj{k-CY=$*Bb;x~X}|`6-!s
z>7tn_sW~N?C6ziUscAWhC8;{;Rhb0>OeLutB}IvuIjKd(0$ioVsYSYp>8W`oN=Zl_
zGsNLBF0jX#85o$r9%W`=NKDa9&dE&8D^UQuAz7b+lf^*K&`8ff&wxQeBPTPjv_cc4
On2{MoGB7eQFaQ9j`cRet

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83 b/test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83
new file mode 100644
index 0000000000000000000000000000000000000000..2a1e23693677046a16ee928c94a31363b3bb8201
GIT binary patch
literal 356
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPb?B(
zw<=D~NX<=U$tWo)5MZ~;O)bgDPhko05B~T6|NjsHmW=%363(3b<is2hOMoXiKd&S;
zuSB<`vLID1v7jI)GdZy&Ge1v1y{I5ryCfsCSU0m+w=6LyGetlIB&M5~EU2WEoSIi$
zTCAItna7CVv1OTwNtt<-Iw`4XIf*5yI_XuJ1p-VZsT?ImiJ3X6Ma2SKrNya5x{2wj
zc_m6oi7C3tIhm<>B?@4>lJ(8?42|>*^b8a<ax(KuD>Mao(is^T7)mm8Q}atpm<<hb
kg9UiNYN0|*3=9lL!3+$N&;UY_<Wev+Ely3&&r2x=0PGB9<NyEw

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4 b/test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4
new file mode 100644
index 0000000000000000000000000000000000000000..52f26cfd4e9eb9d1cdbb8b5d22de3ecad3c2c5ab
GIT binary patch
literal 75
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3{b!bVlgr>F+dp%3=G`qMFq*a#U+U)
KrNxW}5ODxtD+wY1

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424
new file mode 100644
index 0000000000000000000000000000000000000000..8ab8cbefa98133c90cdcd847363019c5a96ba257
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?lX{{R1f
zkpR0@adJj#ZYoPgNlAeKyH###Nk)DOOMriHhya&WVrfZ6eo<ygC1*~4a$-(KesPHa
zPjY@<Norn+Zb@Z9sz72vK~83JVo7Fxo_=~!L9&1dh}2C?PEIW-(M`=u&QHnAOBYQ^
zP0L9vN!7_rNzE(CEUDB<ugWYCU@A%FC@D(J%t>Y7gPEF>nwMUZ!H}YxoRgWFSE2wm
zE?M6|&(KKEK+ixyBPTPjv_g}?{twt=j9_w<7!8487y`k=&`+aYA~gi8NYyZ^eq@CJ
E0Alk@{{R30

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b
new file mode 100644
index 0000000000000000000000000000000000000000..6aac3e43732e97b07d708576c75dc885f8970bb9
GIT binary patch
literal 2046
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k48srz9#B8=<R(_=rsWrv
XCl;j?52#B<wB=SK+V`WLCl~?%*2_<J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3
new file mode 100644
index 0000000000000000000000000000000000000000..96c97df051d6b0395ed3e87c04bbfc9b963fc3e1
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k48srz9)^Az>0VMNJpimo
L*D|VOB!vI~`0z@$

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a
new file mode 100644
index 0000000000000000000000000000000000000000..d745d210b27c654b502b2ddb39d4a6247f157e0e
GIT binary patch
literal 2046
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k48srz9)^Az^%998U`3*O
P@|0_kr)^Z%z=r?;PO?h3

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148
new file mode 100644
index 0000000000000000000000000000000000000000..cd2506a21e80f1beaab63578787c4bb03fac60d7
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k48srz9)^Az^%AKeU`48i
PQT3FEfCA-4(9Hw@X-`V8

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54
new file mode 100644
index 0000000000000000000000000000000000000000..2d2a93da2675048976785e72ff78a7a28520b3b8
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j+zMT`s#4EhFohDLe@dIky_IhlE-6`Bn8f509CNrD-p#ApZ%w-5*(ZXO!-4;dj~
MMTVYHEh8ud0FC@f^8f$<

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185
new file mode 100644
index 0000000000000000000000000000000000000000..16489d6cbc14a089738fa86301048385e8b68908
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k48srz9)^Az^%AKeU`48i
N5vX2a1o|27WdL(;O0NI_

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb
new file mode 100644
index 0000000000000000000000000000000000000000..f9db6119596b6e6d1aa3779f29323624d6815925
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0!hB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k48srz9)^Az^%AKeU`48i
PQT3FCz*5Sz(_c3LAS_EZ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b
new file mode 100644
index 0000000000000000000000000000000000000000..f8ae9f02e41e6479eeeeb3aa036dc33b3f09650b
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?lX{{R1f
zkpR0@adJj#ZYoPgNlAeKyH###Nk)DOOMriHhya&WVrfZ6eo<ygC1*~4a$-(KesPHa
zPjY@<Norn+Zb@Z9sz72vK~83JVo7Fxo_=~!L9&1dh}2C?PEIW-(M`=u&QHnAOBYQ^
zP0L9vN!7_rNzE(CEUDB<ugWYCU@A%FC@D(J%t<XO7T_u^PA$?+Oi#@#QA$co(M`_D
zOwB7%02`OAZ=h#rq-UUKprDbHnO9n&$zcBn>@h|#IZBL%z%UGf;9=;ef%a11Ks$hR
O`>jaVGOA-Fg#ZArOigzH

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index d57f4b2862..d3e7d8ed44 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -34762,6 +34762,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0949f4ac376808482be6ab2dcb18a2ecb08d9a52"
@@ -34784,6 +34806,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0c30868720d5e1a19ff23c53740749c37a43540d"
@@ -35686,6 +35730,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/20539e464ced1a0a63d74bae731ca0a75db05967"
@@ -35906,6 +35972,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/25761748660a64111a8daa46f72ea1f336c2046a"
@@ -35994,6 +36082,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/269afce3bfff993c05c2a3b28c6cf3dfb3f461d7"
@@ -36038,6 +36148,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827"
@@ -36698,6 +36830,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/370b2c16cc353621091eda4964d4c4329205ffc3"
@@ -36874,6 +37028,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3c7b516e302ad3503a933b5dcfb8c58acaea07a0"
@@ -37270,6 +37446,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/489e9830136adcc53f4b191199c33504685b3737"
@@ -37314,6 +37512,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4a4553c2e939cd50981bc38e8ddb1f2109ddb3a4"
@@ -38656,6 +38876,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7885df741c88ca4b539798d9985c445f41cc2929"
@@ -38722,6 +38964,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7c73c0671308e37a8075a20863e70e180ef8b6ea"
@@ -38746,7 +39010,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/8021c689f0078c5c59419c9959f5c58472245bc7"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825"
     ], 
     "ci_platforms": [
       "linux", 
@@ -38768,7 +39032,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8021c689f0078c5c59419c9959f5c58472245bc7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -38790,7 +39054,29 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/80bd4827db81a1da28fae8c150f5e2d46651c598"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/80bd4827db81a1da28fae8c150f5e2d46651c598"
     ], 
     "ci_platforms": [
       "linux", 
@@ -38832,6 +39118,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983"
@@ -39140,6 +39448,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8b8b9fcdfff1f891b1694614b7309cb4a2098f4b"
@@ -39998,6 +40328,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9fee3212240d4bccfdab3696dbbc579b06d39982"
@@ -40130,6 +40482,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a"
@@ -40438,6 +40812,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/adb9bf315315338bcad85929917b9def2aa098cb"
@@ -40482,6 +40878,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/af8b24ffaecdfaf96c0cd7c76f31dc9e1b4d0935"
@@ -40614,6 +41032,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b2aa4861b5104e8bb8bb173f4b023a2172a7b9a2"
@@ -40658,6 +41098,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b3f33b78433af7f607bc99b569b0cef95a1a6ca0"
@@ -41252,6 +41714,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c916ea9c6901c1e77af764773bd2843baa2ebdc6"
@@ -41804,7 +42288,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d3386702918881101368cdba2c4967e86ff3a7b9"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41826,7 +42310,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d363f288f48fba8fde401978b7e764295735645e"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d3386702918881101368cdba2c4967e86ff3a7b9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41848,7 +42332,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d36e015b1e14ecb9559d67bb09c2851699f0aa35"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d363f288f48fba8fde401978b7e764295735645e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41870,7 +42354,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d49450b97f489f0dea74a9f83c71abeba1066d3c"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d36e015b1e14ecb9559d67bb09c2851699f0aa35"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41892,7 +42376,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d60469c0b5b385f20d55aa5cca55bc2c801f3b95"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d49450b97f489f0dea74a9f83c71abeba1066d3c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41914,7 +42398,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d70b2046ee62676b525490b70812c2157e5a3585"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41936,7 +42420,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d727b7edb460c549d7b12b90f581048c9f4747e5"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d60469c0b5b385f20d55aa5cca55bc2c801f3b95"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41958,7 +42442,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d89026894e6c5f8b5c88dec12950f56c4b6924ba"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d70b2046ee62676b525490b70812c2157e5a3585"
     ], 
     "ci_platforms": [
       "linux", 
@@ -41980,7 +42464,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d90c312791129dee8c5f85cb3308323d0c39b70d"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d727b7edb460c549d7b12b90f581048c9f4747e5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42002,7 +42486,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/d91281daad9b821294db204dfc244b2d0d5496e4"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d89026894e6c5f8b5c88dec12950f56c4b6924ba"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42024,7 +42508,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/da322a6b88da87babb52d1527fe54cb4ac214b32"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d90c312791129dee8c5f85cb3308323d0c39b70d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42046,7 +42530,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/da4d300d0a8e6f803ec053e3e7689c4b91eaef90"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/d91281daad9b821294db204dfc244b2d0d5496e4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42068,7 +42552,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/da538941f1613c627523cb1be71eb220d1ca2579"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/da322a6b88da87babb52d1527fe54cb4ac214b32"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42090,7 +42574,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/da8d4c7f02dbeaa543c159b3a4e527059978a429"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/da4d300d0a8e6f803ec053e3e7689c4b91eaef90"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42112,7 +42596,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/data_frame.bin"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/da538941f1613c627523cb1be71eb220d1ca2579"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42134,7 +42618,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/dc4a248fa4c903ce3a571dd18aea575019445740"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/da8d4c7f02dbeaa543c159b3a4e527059978a429"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42156,7 +42640,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/dc7ebba06558484af10b5aafd01ec4fd59276b12"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/data_frame.bin"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42178,7 +42662,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/dc815fd6d5e817898238481472f359bc50b510c4"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/dc4a248fa4c903ce3a571dd18aea575019445740"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42200,7 +42684,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/dccd1fd6d3394f5f68c87950ed7356a2e9ef0f6f"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/dc7ebba06558484af10b5aafd01ec4fd59276b12"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42222,7 +42706,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/dd662353bad317cee7d16191a39e094bfa4898f2"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/dc815fd6d5e817898238481472f359bc50b510c4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42244,7 +42728,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/df684493457bc8d87dec2ca0825f7b43978fecfd"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/dccd1fd6d3394f5f68c87950ed7356a2e9ef0f6f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42266,7 +42750,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/e0d1ee5e2e169dcae87f790f5c27e84a3453cedb"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/dd662353bad317cee7d16191a39e094bfa4898f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42288,7 +42772,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/df684493457bc8d87dec2ca0825f7b43978fecfd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42310,7 +42794,73 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/client_fuzzer_corpus/e1bd70aa5c802cd4462ff4833c09ed432ce4c9fa"
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/e0d1ee5e2e169dcae87f790f5c27e84a3453cedb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/e1bd70aa5c802cd4462ff4833c09ed432ce4c9fa"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334"
     ], 
     "ci_platforms": [
       "linux", 
@@ -42594,6 +43144,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e6f5cc0702a5f38b9e7339849e1dd2e4001e547d"
@@ -68686,6 +69258,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2abe64b96e5e72adcf2dcc43444a69d0fb664b66"
@@ -71436,6 +72030,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8846918f967dd6513040c6d382fcd68ff7099873"
@@ -73746,6 +74362,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/db33559d4afb4c32e68525c000fde16a4c3300f5"
@@ -74032,6 +74670,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f0387dfdd6b8c925d958113e669ec4a1897034b4"
@@ -74692,6 +75352,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1b6c4b5c1949adae3efd5e3264bb32a40eea524e"
@@ -74736,6 +75418,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-58f116dfba8d428a01ca596174fca63f4ac523f0"
@@ -74824,6 +75528,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6e980a9d12c392175b5f66683e608626ae983276"
@@ -74890,6 +75616,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed"
@@ -75000,6 +75748,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-bda43d420a3e5d5228a5f5130207a1f11fc1c81f"
@@ -75022,6 +75792,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6"
@@ -75044,6 +75836,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3c3cba3897fafec97665411ea1f94a89bb4de7b"
@@ -75066,6 +75880,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ddfe613d8791b2d377e14fbdffb18b84a89d49b6"
@@ -75088,6 +75924,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/client_config/uri_corpus/02d156dc5e6f2c11c90c2e06fcee04adf036a342"
-- 
GitLab


From 1596abbd0351aad8904810e57db07c25e9d075f8 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 14:40:26 -0700
Subject: [PATCH 175/525] Expand corpus

---
 .../1109cb814fd134862a3f5ef5c9b2244585882b8f  |  Bin 0 -> 342 bytes
 .../1254c9256157e6362003c97c8c93d8cd67a28772  |  Bin 0 -> 388 bytes
 .../12ef45f6beba92677a2a7508fc5e1bfef30ded66  |  Bin 0 -> 405 bytes
 .../149044286608a7945721c61f12196bebd5adb2ee  |  Bin 0 -> 48 bytes
 .../183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0  |  Bin 0 -> 273 bytes
 .../1e55e5f47b550bab133099e5a98d7c751a0a2d7b  |  Bin 0 -> 363 bytes
 .../1fda93a85f7b5b7a0c2d68a03123e58a6d20f124  |  Bin 0 -> 267 bytes
 .../2507810915aecd3adf1287edf8c9f54b23a8ebd5  |  Bin 0 -> 323 bytes
 .../2f57224df35ff1583d14436a477330db23d70b0a  |  Bin 0 -> 48 bytes
 .../301c057536319f49dcec68ab96677714e3dbf793  |  Bin 0 -> 317 bytes
 .../3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41  |  Bin 0 -> 342 bytes
 .../44bf16b9eb7302a6b02a600ac92dadf916c4e629  |  Bin 0 -> 667 bytes
 .../4a3eae69f4c5dc768b166620af348316c9fac3e6  |  Bin 0 -> 375 bytes
 .../4d472e5a8e8ee92be6f23a101babbc601dd2512c  |  Bin 0 -> 344 bytes
 .../5a3c9d98651a315b5bde737482ff54f6b90361e0  |  Bin 0 -> 597 bytes
 .../6421db654fff309bc191aba0330fbcd1347655e3  |  Bin 0 -> 595 bytes
 .../64eb970cc80162a4b80d49364f4227db3429e156  |  Bin 0 -> 595 bytes
 .../66ef59d5da68fdb5e55b60fc8a8a764afb021b4b  |  Bin 0 -> 388 bytes
 .../84c995b299f8d6fa0733d11f0b1a0b4414a7e232  |  Bin 0 -> 347 bytes
 .../8a034b07b9baf1b441c0fb0322652772973f20ff  |  Bin 0 -> 267 bytes
 .../8b7ebe7fb16e63e2584595ee77afb19359356eda  |  Bin 0 -> 326 bytes
 .../901c9a33205897999e7e78063ccdc5d363267568  |  Bin 0 -> 417 bytes
 .../96a80511d8ef3ffdd370a3cc9467713a538259bb  |  Bin 0 -> 268 bytes
 .../984b6ee241b92be62923c6dc5bacaadb36183b89  |  Bin 0 -> 383 bytes
 .../9ebd34b96faba2fea70a50533df78a8c1dc35247  |  Bin 0 -> 456 bytes
 .../9f1db4144e46f913ca02e0abe2ccd5c7481e2a92  |  Bin 0 -> 341 bytes
 .../aa926963580066aa503c5433dad9889fabc4ee08  |  Bin 0 -> 367 bytes
 .../b4dfbd50da81516e8afcd93def813b4b813c3ae1  |  Bin 0 -> 824 bytes
 .../b792b464ceb568355e80a4588a3ae1b43f05a34d  |  Bin 0 -> 448 bytes
 .../bbf7ccb14d60a1d4fa79e572464c687530ca6c2a  |  Bin 0 -> 455 bytes
 .../bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9  |  Bin 0 -> 594 bytes
 .../d0692d73e38ed8c154ebddd627ce99890a1cf798  |  Bin 0 -> 344 bytes
 .../d4c3ed789ef8a888244504601964f0a0c994a66d  |  Bin 0 -> 572 bytes
 .../f693fbf860c6cd1090a6dc220c20eb5c51543208  |  Bin 0 -> 48 bytes
 .../f7c45ab223810b0b6b77042055a86800e5ec213a  |  Bin 0 -> 375 bytes
 .../fb9505e4511c982f4f26675979a138a3408d80e2  |  Bin 0 -> 354 bytes
 tools/run_tests/tests.json                    | 1112 ++++++++++++++---
 37 files changed, 952 insertions(+), 160 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f b/test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f
new file mode 100644
index 0000000000000000000000000000000000000000..217fed250f7394cf0587158406f3d1859e4173ae
GIT binary patch
literal 342
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69eND1|~L;J_!cKM_1U8wK6a;g3Ku@(*WsAwMXc@TU5rhR`Inu
zV^K>x!+(xdWekjmLKzr~w3zf;9x?s@&k?N0#FkpTIhBd6<<Z*mRF1MPhav_r;9AST
zm}<q!#K)#t{y+6OM^RZR10#bL*MG($1}26_3Jlx~JWMPgr7R4b9Gnacj0}tn42&(0
z*0L~gI;W-<7cm_{b)<F6qeMm~wsK|$zEqB)GJB=}AhV`CTKbz|e-Y!O7Fc)`m1zhu
sy<}rxVECV^3^I*_bBFy}qhPfT#+FBH4Au-B3~L!Ui#QlKI2m>T09pH6LI3~&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772
new file mode 100644
index 0000000000000000000000000000000000000000..20ece80c55ebbbcc302c296307ed94cbbd75f5ea
GIT binary patch
literal 388
zcmWek*2qZA%S+8+U@}fEDoZV5;P}tP#8%Fi%E3`orlIwpiHU)&oR1^bUd@(?jjP-~
zwWy4VPl17rA@%>=qB151#v%qLHjqXM2F6EM*pRg{FffA5DJs(d=}fgRDpN$#xmNMD
zI%82wJHvmDRb>o}he8<`i?o>ZTOKho{r}GqtjENbTD&=xiLK?)+VWJ6GKV4tFyLCt
zz?f>q%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e
z%fi6voSIr(#B>DWNU--97_3_!B{DEFv6VA3@TC@&*=zj=88zk6(%%eH`->PKwQ&50
zs~2K=$;QCI@IO@<WEuzO4*RtR!D=0hEsxk3S|F-8iqbT+tQj~M)-rGwar_5c{r~@3
h76t|eb_NbRP9`=c#nc_j5eyuh42n7o&Hs1&2LM%6XXXF^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66 b/test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66
new file mode 100644
index 0000000000000000000000000000000000000000..f62faf351ad610f443ac8555d1ede809a0c78bd9
GIT binary patch
literal 405
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSXIWrcqo*Cu}F(azvYo4)Bpb*!Fo(=sl}U9nb=w$tu0UGD03)c00XYI
z42-E(tnN&FY?}X5pK}zIl`=3gXmR}qIpi|KBLxO-1|B9R21W)322Ku61_nkDld<K|
zS{4RQ=hW2VBBmn{M_vK@kAcCu<xwI7BNJOWGXr00QJKBge~?*I9xeUNu)m1$Q47a^
zi29;34Iw5rHYP5Hmkj??%hR)p%B=YmltJclaPDAWV_@R=4+=k!L)gGUslmY5@`!US
zgF3{U42+Lj9<62QV&LLq`2U}Q!+sXSTBBgK4#t*8Yz)>691Lq2IEy$KI5-)0004`M
BZ-oE=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee b/test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee
new file mode 100644
index 0000000000000000000000000000000000000000..049b4f5f49cdeef7f421a2e87700bdd5e0151922
GIT binary patch
literal 48
zcmZS5*Jop>PgS-z2-fQ;Vq!bTms(V&p~awBR`j2NfwAQg17iy#!=tqfoE!{m89W#O
DEP)JV

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0
new file mode 100644
index 0000000000000000000000000000000000000000..79e599327c45c46fce8654848295451525a968d5
GIT binary patch
literal 273
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#KgwIQLe#PR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RUTK_qM^_bXFi#Mk-v6ZKClyx~2F+c&=S_VcdRwh0+&GP@L
z&pC?9N*Nd#w7C8=7HKgsF+5UW;AY@qVqsulP+(yE|NsAgkT%AaM{8LaIRE_r|KB+^
uwYZ4s2oqbmRVoL_U0VMc7_3_!B{DEFL7i%^_5U}+{vyUlEG-=WnHT^<q)b!*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b b/test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b
new file mode 100644
index 0000000000000000000000000000000000000000..1a2c2624383f172212fd73e9e20a68cdc33f6249
GIT binary patch
literal 363
zcmWek&PdG5OU+?mDo!n8;7Bbh`_IJ0R?e5o!BJGEq4l4MiGi)0k0aGy&6bIctK2@d
zsEmnEfq{)7_5a<XGA0JbA_gY5qO#N?2?oYTSJ;rXGB7ZL%qc3<0O?G%N7cDj@wGZ*
zQA<0+e~wjU42*|D85oPSnDkp7DKh>4&k?N0#FkpTIhBd6<<Z*mRE{!-A_fKqMg|71
zwG51@R;)~XY?|f&Q=fAbm6b9uGH7xA2RVe{kpcrZ0}m4u0|NsC3j-$yCrA$?0|R5r
zqqQsyoX)AK#YId<P#tOA@+gskk%_IGnSn30sLWpLKgg^pkCy&s*k8o>sD<M{M14`2
zh7i+BHU<WU|EbC#(>OSH*snDVR_kDFdBnzG&A`F17NnAavxp;=frFEQqo~aOKV#7j
Ju<Z;S0s!MMVFCaE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124
new file mode 100644
index 0000000000000000000000000000000000000000..ec9aed1b134e1e5f0e08ed9d38bc54cc24a16529
GIT binary patch
literal 267
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHV_{FW8AA)n3h(iH)n=KDDTf
ziBExnjUn~_-J&uk2F4-=hV-I>WW9`%k^&>Woc#Rk#EjI$l=!5|lGI{`#H5_m_~Oi}
zRK3)^<ouM>B8K1p|NmE1e67w{)WX2f&hVdufw4D~fw4%7Nx$V0)Bpb*!Fo(=#hX)^
z*veBm%DNni7{GvQEd!$!D-$1^X8Hfr=Nv_4r3{Q^_Wv1+82<nN|6hv>#A0H2q`<(<
zz{A7}*22Kp@@TCl0|z4m3j>(V!pFe*A~m(Ri0KH_lVxQZTK^dsm>BX>t*kQ30LpAm
AQ2+n{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5
new file mode 100644
index 0000000000000000000000000000000000000000..403316b85423274a0881df894b0284050666589b
GIT binary patch
literal 323
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
zKjU4dGEIh}A_gWlkWL8(#z$A!nAqa;i%L`Sit>{(^B5RG1{IZQfV8ICBedQvDq~u!
z_*$K@sHL6ZKL-Qjp-=|KA}uEUmPbtg|8oTEF|nl<Z%$=mYk6c<p2|_y<xs=`23%_y
z7_C^D_#U!p*8fj^&QVlW%D~8=#r2=Dh=GaWkpcrZ0}m4mNGS^gCkH1310w??0|R5r
zqqQsyoX)AK#YId<kiEyiVBPX4k%5tkt(=*GFO{RH%wFsNZ-)IvjE`D4{zFt2m1zhu
oy<}rxVECV^3^Ip<bBFy}lVG(D#+FBH3~L!Ui#QlKI2m>T0G}mQh5!Hn

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a
new file mode 100644
index 0000000000000000000000000000000000000000..341c0d10bcaf8644967cf23cd02d619de2f9910c
GIT binary patch
literal 48
zcmZS5*JpFEPgS-z2-fQ;Vq!bTms(V&p~awBR;0nez}WJLfw6^=;n7+KP7a2(3_c71
D8zu{q

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793 b/test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793
new file mode 100644
index 0000000000000000000000000000000000000000..0e8986178620b545250b4d0f66643531c70f5eba
GIT binary patch
literal 317
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_0fai^?=WN>lAYN}1Toixg7X_&6A#I@T(_R%a|~VPI%y
z_|L(>cqo*Cu}F(azvU6r|Nk7pdQ5Do#hX)^*veBm%DNni7{GvQEd!$!D-$1^X8Hfr
z=Nv_4r3{Q^_Wv1+7__)RBoo6U1qN;g9wrvBat6khM{5~47(pBmlZAovMQUns5z`T5
zpD{34w>(N@V1$SjmDy|k|1Gt@i1Cp?3&($$poSLHOEv}uhX1L`YgrgLIXHLNuQd!-
V>tJko#Ky3efwPE%frFD_2LSOHRGR<*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41 b/test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41
new file mode 100644
index 0000000000000000000000000000000000000000..386816086c96634f1258223bf5fd2f32720f65eb
GIT binary patch
literal 342
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0Pj4hAWYBDf0a4<5kFo1bbl9Ppj
z^F?ZEaS_uIh`S*EVqmatd6dY&$fN~zzrEJ~-%|UF7#|6=aQug;1O*J!OEv}uhX1L`
jYgrgLIXHLNuQd!->tJko#Ky3efwPE%frFEQgJA~%_^Mh4

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629 b/test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629
new file mode 100644
index 0000000000000000000000000000000000000000..5105d9908f0cb3ab0ee0c2851daf48ea07c3f0de
GIT binary patch
literal 667
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSXIWrcqo*Cu}F(azvYo4)Bpb*!Fo(=sl}U9nb=w$tu0UGD03)c00XYI
z42-E(tW11tn*URua}<@8GB7e|as3CmgW-_^12+Q?6B7d?NG&G^Cj$c`h|SpYXe|o^
zr*mp*aS_uIh#Rkfy~hCJz<r1AMh3>BvQ!Nwwjzci4UqRhZdQc2nSt>T6I*D@BUHzN
zT-pV)n}LDBy5&(K10xe#IWq%aYEhZJ)_;&Ar#xEvn_+(u<D(Xi{~)^=7(hM(`KSCp
zD99n+VFf8=g87F5?C@L$rvItR5sJDD8VqHOMGP$rjB6PfnI17IGpKSDm3c7OgEWD>
z%D{1l0p?A3RDfIqb`BrN8hfq(P-lSR8ysn%@L<wsV_;zTpQ;QBE)LEe_G^uT^*TUi
zau#tgFo1Mw2r<26V`Ae1t1C~>Dk`()Q-G;wU}Iq7_zy}&p!i?|CnyaD#+FB%YZ=sG
s0r#lo(OQNs1};8^|Nj{{>}N5oH4Ih*S;EF(&B4I1mH}iJ2PeZ004U0{(*OVf

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6
new file mode 100644
index 0000000000000000000000000000000000000000..0b1b0ef9838399edcd39a2bbae78695851e66959
GIT binary patch
literal 375
zcmWek%*kO8Of1M`U@A^6DoZV5;P}tP#8%Fi%E3`oropE5pNWZqt(-47)rrGi&6bI+
z+&;CajEPTyfsG;c|J|Z8CI&_}CWa!3qOzh?21bVTqJm_-jFOT9BfX4*#N_PwlEkE(
z)cE4es#LwyyyX0p)FOs%#n<YLMJ)^r?F|1p7#Mp)85oPSnDkp7G5!C~5v<3=R=hct
ziLE@9qpZuJhye_^)-o_!u`=<oX_o&_ea=x-R?5IwX8)hDh~fYL|NphPKrAMPM+yww
z3_MJ%U@Z)cEsxe}GH@_5urPqxEPM={FH%#Bi<pi;Jy=$zp#@@cq}r<`XC&t3{byic
zVo1%2FD^+;&Q7(8Pb$q!%`D5z0lAv7h=GZXt31`dsLYy=iKV0x6a@cMIlw^xk^={y
k2FNPTwG1E+LcI5=<<VM(E(R_J#=KN31_q8<Ojem?0Qy*H(*OVf

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c b/test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c
new file mode 100644
index 0000000000000000000000000000000000000000..fa3adc94a8924b664156f60140339a0831ffe896
GIT binary patch
literal 344
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(#l-NxoQaLki6hls&6bIYO@lA>C0OD=8&|n~
zYEc;zp8^9LL*oCtMP*D3j71DgY#>u47#JU20h>}(roqI<Ri0`OQVKD+2&5wwtYfX>
zYjwt=76yiPhW{K4jJ=@@j73^Z`Yn%`{{QC))?;EzE#92U#8#flQP$;9!~g+YYZ<MW
z_}Dbd|EE6ZC@L#uU@Wu$&sfBu#RVdn7#=Awa5L~Qu|QNaFfg_}TC2&x!6?82VM9qy
z76#52sj0<9Oh+K@g7}Mp!Mf#9A|oS{7S#RrTK|7bS?@1md?e7q@gJfT95gT47#JA-
lrz)>yVc_K8++n}gAXu$~vE>mP!&(N;A`S))P6iH!9RO)wTQdLv

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0
new file mode 100644
index 0000000000000000000000000000000000000000..191e720f6b5fc99c9629828c38e183c95f65088a
GIT binary patch
literal 597
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuyO{*mPczDI2aiO6LWGHnApmh*qBhg$HAe&S5{<|
z3iTfOzQgbq#8Zc$o`U#EhXLWMR07_D_(+QZ;UyLZkbkUL7&u>~rZPc1$N-KW4XytS
z4Aw1=5*Zkwp<HIK_5Zij{vyV#M*=Mz3=9kk42=K(|Njrt1qu`v22SVH)Z!whBTQ`N
zR;dgOMP>h)it<bIQsRs9aTu4BnFmS&sT@UR8d^***%%lY{--LhWntjt;M`%q)+ku5
fgR$ii+gb+BA`S))P6mb@`->PKv9xgfXJP;V)`y<v

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3
new file mode 100644
index 0000000000000000000000000000000000000000..9b68f66e2c8cbeb658145d9615651f6d25483fae
GIT binary patch
literal 595
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O`Tn`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuyO{*mPczDI2aiO6LWGHnApmh*qBhg$HAe&S5{<|
z3iTfOzQgbq#8Zc$o<jFiDgjSH{G-Ky@DK|F$TwCj44f}gQ<)&%V*p2vhSq-u2J4nb
zi42U;FfOy#`u|&Me-UHWBY_qU1_lNN2FCyY|NjT+0tE>R1E+IpYH<<M5hk{Bt5gPt
zqO$)?Mfs(9De*=5IE+im%mXEWRF0xD4K1dZYzzzx|5KIMvM_LRaPF{QYZ$E7!PxSM
bZ7l<55eEYYCj-Nd{Y8wASXwy#Gcf=F_EDa>

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156 b/test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156
new file mode 100644
index 0000000000000000000000000000000000000000..ad3302557ce791a73db6a883736601747ad06657
GIT binary patch
literal 595
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gY5qO!?F5)6!wu7GtGm1%&KrrLv)LJTWH=vb@xTAi_|g@K`+;Xelh
zV{a$}W04k<e#;}K|Nl9H^_bXFi#Mk-v6XX_bvYC<fC1N921YAZCO$UJ^8cyNIf}|k
z85qm#|1%abXmNo^CWc1}4BQMnOe|pK42&(0)-rG~G6*K-<S;O?l{2w1p?Z&lLxZoZ
z$SM`;J%YYV#pOE;Z$UhD2<j<xKcy1z6vRJT3<wXgFo1kx#lpb(A~lr>;yng%<Y;L9
zXJD{yd6dY&2o2*hd#(S!rS=ywW<3&U;b353P+(yE|NsAgkS<V=urP2sr=}JcF&$xI
zE4NBzU??j4&s3COnwJt^l#j!>q|7`}0!Za3D$~$nddbGX!0<m+c`XYACkN*a`?W^F
gY8{L%kJ#2Sa29beaBwm(?ATw#_=u&2<3AGv09F;A=l}o!

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b b/test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b
new file mode 100644
index 0000000000000000000000000000000000000000..46172fd6007c50849090dc93ba213ea3efdd9b6a
GIT binary patch
literal 388
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`DE0fvt=$*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21ecVqJm_-jFOT96TQs5%#zH+ocQ9@!qU{d<ka}Q(%huf
zB8F6ZkO2@oia_ST^%&`86eK2R$Co4~<)p?JXI7=^rKBe3r=%7!=rOUS7H>{vVk=MO
zDC=@4VgLiKwG50_tW11tn&tmfpK}zIl`=4v+5cxOV)+06|9>qm5Q~Z7kpcrZ0}m6M
zI#>^5%cHfL3>=IMEDQ`FHVXqM2PYF7lVa))<p@O`hGxzesj0<9Oh+It<R}A$0t16}
z%cDdFMu=EZnZ4G3sr^Naj|5sc{=>vHw3uG9F)%RvPgPzEHgt#mS_4Lq=lF_Klk@XZ
n5{oM1ON&#B;uF(T^GX<k)jAkk9<ed3W#F_b;$Yz5WY_@!<VbHq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232 b/test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232
new file mode 100644
index 0000000000000000000000000000000000000000..75a242f15e0b02e94a654c5a4a465335f0219763
GIT binary patch
literal 347
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@y!i8509z5d#w&NT&n?BV&3|L9$*!QD$ypQDuB-acWU~VtQ&`2}2P`eL8OGf@Hmn
zl9B==y^Mmy<m~v8#H5_m_~Oi}RK1kc<ouM>A_hGsw$$RysZ4C;sT^fp4n+)Lz_pfv
z(TbIck4>}uf9i9NqOwv3#xnc=j71Fp|NsB5#RXz9F+5UW;AY@qVgqYoU~GA`R+E8)
zk%5H)%w}QWe36=3T*Pz)>hH2LjsFY`)-8_`85ki#MP>F{|8Gm}FJgQo(8BQ_Ca9ss
p^b%y~|5W9*EDW3+oIC8-8V0L%Ft$8mV_3_;X;s9*z`@C|0|11iWS9T|

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff b/test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff
new file mode 100644
index 0000000000000000000000000000000000000000..21cfb9f22a103848ce8d25201f6212809cb71c0e
GIT binary patch
literal 267
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#KgwIQLe#PR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&ukhDydF1|~L;P6-CaM_1U&`BFKG$}~V~Q|(dJu2p=k&REpa
z&hVduf$>l%17ndEll~*7|Nl9H^_bXFi#Mk-v6ZKClyx~2F@OQrS_VcdRwh0+&GP@L
z&pC?9N*Nd#w7C8=7HKgsF+5UW;AY@qVqsulP+(yE|NsAgkS4~KM{8LaIGs~di;I|!
qFtL?erE-8Ar1hVH!Mf#9A_F56)Q$F9|9>;=FJgSe(!%kdi2(p|U`VO}

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda b/test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda
new file mode 100644
index 0000000000000000000000000000000000000000..04111755f21ecbc96547adb221ae845b62e00a08
GIT binary patch
literal 326
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J-H42F4-=CN_{>2?j=n^rC`fy^NBQ0wcYQg2d$P_>#n=oYeT@%&Jtq)V$>U
zl++>yMa9?Zj72RB4DAg6IT#pwLm3#0w3zf;9x?s@&k?N0#FkpTIhBd6Je8xY%b|z?
z47k=ZFj}!P@v&)^|4)6+QB+pSz*uJgzlf3H|NsBrwYdI+T*2^2fq|QWhlv%eg@Lo>
z(OOLg4n_tR1_s8KM{8LaIA5fu78fxcf%>qlOhfBG1A}$TqeKQqh*(jXz1IKVQu~V-
z9|^Q@{D%o@XfeHHV_;zTpQ;QphJ$m5{aV9dwGPIXM{Eph89A+rI2brM8Fl~w@~vR9

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568 b/test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568
new file mode 100644
index 0000000000000000000000000000000000000000..48e927946c8736893a9b6c9c8c621e884aa59711
GIT binary patch
literal 417
zcmWek%*kP3Do!mbOD$sH_|L?|R?e5o!BJGEq4l4MiGi)0FW8AA)n3h(iH)n=KDDTf
ziBExnjUn~_-J&uk2F4-=CN_{(2?oYTSHN0}$}~VqQ|&=YA*L09bfgy*B<p3AloS~0
zWfUYPXUCT$Cgr5Y7iU(b>ZPP6=cl9=G3YU|r50~aWnwE&<tXcNC}IEuuC)w|R;)~X
zY?|f&Q=fAbm6b9umf8PjEMoZo|Nnn2E)a`};gJFZHv<n78(0eiW6PtpnhYF_3@i*_
zHVXsii`3NOBBmn{CvlX4JjlRc-SQ}rfe|8BRA#UB|F+crBF0AoEgb)0f*M*(FF~gM
zPgP#a#8%G4#`Hf`IYLo`p^UMJp@o5QEdwLdBQ_>w233xtG7koOK8{rT|BPzM8Hss$
zsW~k1#U+W!*{N3XMGQ%$nW>qKEexC-oIC8-8V0L%JSxk~0ePH}vE@+_1JhcT5(YMg
SwG5nA97P-ql^mQ53_AcmzjHnS

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb b/test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb
new file mode 100644
index 0000000000000000000000000000000000000000..b9b1311ca410fd8b3e7bf7ed236c4289219c0329
GIT binary patch
literal 268
zcmWekEXZVFDo!mbOD$sH_|L?|R?e5o!BJGE!KU?}iHU)&oG;jkBh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;UI_+9hV-I>WW9`%k^&>WjDp1E?D&$zq@2|F;>@a4
zz0|zq{FKxphTs4H|5sFet<G4~!obkZ@SlT$u{V@~u}F(azvU6r|Nk7pdQ5D^n^T$C
z%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42)&={~3!I{{R2~UyBRGVq$otz`)JG
z!^8^K!ob+_Xssp#2O|Ru1DMUi$H4g_HMO{i=?K)9Wn~&#{}~vV81hoBtTM|0xj0PY

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89 b/test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89
new file mode 100644
index 0000000000000000000000000000000000000000..26439ae2aff8164ce70da329e3475658de9e96fb
GIT binary patch
literal 383
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`DE0fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c21bVTqJm_-jFOT9BfZSL%#zH+ocQ9@!qU{d<ka}Q(%huf
zB8H+=dnP_MrZSKnMIdvK^kftyCTGW&Bqrsg#usN+rRt@mCg-Q57BT2Cv85JoPGw>%
zPvt1<awuW|1Fp3Uj8?2nd~BNK|5KlH6fuI0Do#z#&r3-xs*Eo!PA!U0Oi#@#Vc=n6
z18ZSmY<aX+lYxVgfrSCgW?|su;ACQBQcT^U9HFSg(9HQFHMO{i=?F9w%0QvOz+m0-
zD3O7Yi47#mkqUNunZ4Hk+fw_B7#|6=aQp{Jq=LhY=_Saj|EbDr!DjEUUuzJo*1_1K
i@raFKEd!@jk-eH41LJ;<M@4H}I2aiiI5-)0FaQ8M-D@8J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247
new file mode 100644
index 0000000000000000000000000000000000000000..2f7309ce2361e8f778f217fb3cf55333caee81b6
GIT binary patch
literal 456
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kJLxxnUtw5HmlYF(@NTAi_|
zrJdnF$Eq?0#zUbDj73^Z`Yn$Xng0Lh2-X9+0;HLVkFA_7wRm$X6Pr}aqqXI!9Ayqg
z3}C>umVq(Vij|3vO|$%e>T`~wvQh>{1}(1tj71Dg4388TxEXkum_SNd7&sXj7#KJ?
z7#J8C7#Ld~tz}{0bWTkzE@C>u^dDqR>VJmxqJm_-jFOT9BfX4*#N_PwlEkE()cE4e
zs#LwyyyX0p)FMz|q;f#LXWjBBk+BG58UrH}TRAfWUusc_z1Dw_^-~@#{mrnyig7K%
zR0G_mGPH2~hlE^FnT8P4O9loG#v%>{HU<WU|EbChAjfiWK5AiP*kQjmSgnJx<q;c$
TwFU>nT22OrA`S))PKF%-QHp?D

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92
new file mode 100644
index 0000000000000000000000000000000000000000..e4be2bfdfffccbcdc068c60275bb10adbaa7669b
GIT binary patch
literal 341
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+`cHa
zjEPTyfsG;cKVwlD69Z!r0~4EiS!$641LLzRY{*&}7#Kn36qRX!bcWa$!FAp(Dq~u!
z_*$K@sHL6ZKgX&v2F63742(ruO!_U4nEwCg2-ag_OD*1<%EZ?4Xl;2aM_HFc5d#=-
ztz}?LwPI!BW791EpZc7msH~KMkwJ^=Kgb~rj}#cV8F-jjKuTE{I5{|(85kKD85kH_
z9<60z;B-z+EiPg@0&}F9hSq-u2J4nbiHuC;%nW>~97SdJTK_>tO?kBRH^crS#z!r%
y;3z875Mp}C#=yYvKUEoI7zgJL`?ZF_Y8{L%kJuQj88{f$GH@1gFmP}(>;M2NGFm(U

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08 b/test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08
new file mode 100644
index 0000000000000000000000000000000000000000..08243a9176ddb728f1e5bfd6a3d245e8a0fd5ddc
GIT binary patch
literal 367
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1S&Iw4va7#Pb%_#p;?^rqUQ>Rqe&TAi_|
zrJdnF$Eq?0#zUbDj73^Z`Yn$Xng0Lh2-ag_OD*1<%EZ?4Xl;2aN0~zr0~m0vWnfIT
zVrAlE(=7iFu@CIh)aM*UWu**^3|d_OL9SwWq`<(<z{A7@*2UQJXe|RL2Ll5O11AS3
z0|O%iBLf3SkcENMIW@Joi0KH#ESTG^TOK7cFfy@~Gc)j|7M0m+{Rf#k<<ZjL4Eu{1
zAGL5G>=t5r$;QCI@IO^~E!gxO_G=A-)jAkk9<ec4GjRO>&#;z(vxtL%gOgzg09<Ec
AvH$=8

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1
new file mode 100644
index 0000000000000000000000000000000000000000..a194e609d360d108c082f3ef0d4774544f0a050d
GIT binary patch
literal 824
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#Kcz4!J)xdR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{piRApeywv29%(Bdq%J|}v#FA776s2nwU#l|~
zwX`$*=U`ww6w1I@q{XEFi0S`-j$l0|w$$RysZ4C;sT^fp4n+)Lz_pfv(TbIck4>}u
zf9i9NqOwv3Mg}de|BOXi3``7<6d1S}c$ioi7#I{782|tO|DS;Y)en5B97SasY+6u1
z1UnJq3kJqVS3n*vD$@Y@H`N~GUnaJ4J}ZtQgtwu7VPJsxrWfj)mPgE(-eF*1Y<aYn
zg@MyKHMO{i=?D{Bxm79$$Z1;t85pcv9wjm`f-C^J)?VxXZ-)IvjF0ezL7Dx3#v%rg
zkHLX~2n$wluz{`9WZ+<AV1ZlxB2_RsBQY;8H3u_{ATA+3p1~mmaWGhGIRgXZe@Iv(
zLJT9QKmoO?3=#1yj}%d(zU9$cQ0zlI&eFp1pMe3C08+810Fb9si=)Az$(PE(QC6mb
zJv602p()V9@gL&iqB0Gw(3fls3=IEMm6$-W!oj)2er-lcNr54QL9ki}W6L8phP4a|
d4BVVnMH~zqoD2*+OiZA_W?|q2a~T;J82~r);*tOW

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d b/test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d
new file mode 100644
index 0000000000000000000000000000000000000000..03239ec9f996305ddf147df125cc443de5a0550e
GIT binary patch
literal 448
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl8Lt
zjEPTyfsG;c|J|Z8CI-eL1|~L;ArcIXkFJ0XDJs)o;^Qh$wJ$1T;)9r5gwU~8@wGZ*
zQ40e@JHvkt2FBh{2F9YBO!_U4nEwCg2-ag_OD*1<%EVTl%2C!;!~h0dYZ(}=nE2Q<
z%m1fZauk)7GBB3e|7R>>(BcA-Obm|{7`PdDm{`E785mn0t<_}UU}Run0JEVaCkq4T
zi`3NOBBmn{M?pNrz+m0-D3O7YNek+Dd#(S!rS=ywJ`!l*_zzJD3Kgc8Yz)i{3=IEM
zmDjQ`aN-TRU})HZ0}K=j2=8MCm>>fvz}S!jj6tD@gMp2MGc~=aAXzVChy7ZEV6~2t
Vk^&>WjDp1EY{r&HYz%7|;sMnJcPIb=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a b/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a
new file mode 100644
index 0000000000000000000000000000000000000000..354e7f734dd095085cabb41feecce3cc5918eb77
GIT binary patch
literal 455
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kJLxxnUtw5HmlYF(@NTAi_|
zrJdnF$Eq?0#zUbDj73^Z`Yn$Xng0Lh2-X9+0;HLVkFA_7wRm$X6I;upwdJWCWe!CQ
zV8FGOficyJm5Gl{v;2SRbB?02QU*o_Ew2BJMGQ;~j}#cV8F-kOKuTE{I2joj7&ti?
z7#JBC7+W5#WntiSPE9Q?VmiX~A7o4Fe}?p;f@Hmnl9B==y^Mmy<m~v8#H5_m_~Oi}
zRK3)^<ouM>B2ZYQazK4&-SQ}ru?S=u10xe#IWq%aYEg;3)_;)oQywk-&9J|UaV^4B
z1Kg%Ev~c`~1YA*>h7i+B1_lnsA`S&M1_p-zsmcr>$8vB!YGGv9VZSz5t%I@U5gUUw
S0|&!eP6mb|4h9ZRh8+L`>wp;m

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9
new file mode 100644
index 0000000000000000000000000000000000000000..8ed1db61f4424807129901d496b9fb4daa86bd25
GIT binary patch
literal 594
zcmZQ7PAw`+En?vK&&0%5&X>x;QB=mE^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxIm)^miWtCvYb^t#6)O{;X8Hfr=Nv_4r3{Q^
z_Wv1+7__)RBoo6U1qN;g9wrvBY6ixZM{5~47#Rc;b8;A%*vgsMm{5Jk!J)xdR%De5
z^&QxADGUq@Bzq3wtH1yM|7R>}f%xeV)KBPMO2y(QHY86${G-Ky@DK|F$TwCj44f}g
zQ<)&%V*tmEhSq-u2J4nbi42U;ATG1l`u|&Me-UHWBY_qU1_lNN2FCyY|NjT+0tE>R
z1E+IpYH<<M5hk{Bt5gPtqO$)?Mfs(9De*=5IE+im%mc-LDo0V7h8ELHHU<WU|EbDr
qSr|AuICt2uH40YiU~GBBww8gjh=YNHlYwE!{vyUlEG-=WnHT`kGoYye

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798
new file mode 100644
index 0000000000000000000000000000000000000000..c3299648ecd3ecd6d997038ef466d559ba364b56
GIT binary patch
literal 344
zcmWek*2qZA%S+8+U@}fEDoZV5;P}tP#8%Fi%E3`orlIwpiHU)&oR1^bUd@(?jjP-~
zwWy4VPl17rA@%>=qB151#v%qLHjqXM2F6EM*pRg{FffA5DJs(d=}fgRDpN$#xmNMD
zI%82wJHvmDRb>o}he8<`i?o>ZTOKho{r}GqtjENbTD&=xiLK?)+VWJ6GKV4tFyLCt
zz?f>q%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e
z%fi6voSIr(#B>DWNU--97_3_!B{DEFv6VA3@TC@&*=zj=88zk6(%%eH`->PKwQ&50
vs~2K=$;QCI@IO@<WEuzO4*Ru+!D=0hEsxk3tQj~M)-rGwaWHUjGVA~Vfht=&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d b/test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d
new file mode 100644
index 0000000000000000000000000000000000000000..454c205f7a37dd1551baeddf56eb0a88ed1d1fd5
GIT binary patch
literal 572
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$1{}e9Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoaADd?R
z|J3IkMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-jt1_s8KM{6}1I2ajNAZ#ef$-=<-
zA~m(Ri0KH(T_RxrGH5;eZ{5O>$iT>?WexR!z1IKVQu~V-9|^Q@{AXe-w}J)%(@Qo6
z28REs%4=B|I5{|X*n^CLgcISwf%+Wc??a&=AOA=5@!$Xd|93GkFfcJNfxH6pH!Bk#
zTls&@=bB(|WBM56AV!d4XN1R6IXKoD2CH>2wmbqyDA@ZT4<dPw0pvZ1?_i$OXJc5)
iz*)q>05bDG2PXr<pKA?*^+3k0W#HssDB@t)!2kd~8kax-

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208
new file mode 100644
index 0000000000000000000000000000000000000000..a44ca0b514edb5cc7131454bac5f4f79b498f323
GIT binary patch
literal 48
zcmZS5*JpF6PgS-z2-fQ;Vq!bTms(V&p~awBR`j2NfwAQg17iy#!=tqfoE!{m8GIN3
DH;D|X

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a
new file mode 100644
index 0000000000000000000000000000000000000000..e0ffaae44471739338af5b9e67f398b200a7add0
GIT binary patch
literal 375
zcmWek%*kO8Of1M`U@A^6DoZV5;P}tP#8%Fi%E3`oropE5pNWZqt(-47)rrGi&6bI+
z+&;CajEPTyfsG;c|J|Z8CI&_}CWa!3qOzh?21bVTqJm_-jFOT9BfX4*#N_PwlEkE(
z)cE4es#LwyyyX0p)FOsX#n<YLMJ)^r?F|1pG#GnB85oPSnDkp7G5!C~5v<3=R=hct
ziLE@9qpZuJhye_^)-o_!u`=<oX_o&_ea=x-R?5IwX8)hDh~fYL|NphPKrAMPM+yww
z3_MJ%U@Z)cEsxe}GH@_5urPqxEPM={FH%#Bi<pi;Jy=$zp#@@cq}r<`XC&t3{byic
zVo1%2FD^+;&Q7(8Pb$q!%`D5z0lAv7h=GZXt31`dsLYy=iKV0x6a@cMIlw^xk^={y
m2FNPTwG1E+g1pDT_^9R4T81tLE(XTDR4WDsj#*4rnPmVT(P;Sq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2
new file mode 100644
index 0000000000000000000000000000000000000000..ff673722c11e2f39b8bbdd7236836c062d40a12b
GIT binary patch
literal 354
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&u^1||l^A_gWVHm3in%Jm#YY#?JK7#JDSiwctUGD=DcjPx=J5|gvzOA?cE
zQsav=t5Wq+^OEyZQi~iE6<@0}7PT-iv@`tYU|{SGWne7QV$yGU^o{BNe~w^1Cbrb#
z&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10mj-s+s2F5b`|BOWp|NsC0uf+voF)=(+
zVBlupVPXYqVc=|ev{sXWgOP!Sfq}8*(OMP;&KIev#YId<puR0D)6n|Qz+m0-D3O5?
zB34vpul4`8)czvIM*=Mz|6zg}T1+q5K&JjrRbI=&u!F;XZLlFHr&<SN%fm-(3~L!V
bt%^7pI5^7~ix?PN7#SWh?9f`v;K2X@clT&a

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index d3e7d8ed44..9f0c19238c 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -24182,7 +24182,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24204,7 +24204,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24226,7 +24226,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24248,7 +24248,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24270,7 +24270,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24292,7 +24292,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24314,7 +24314,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24336,7 +24336,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24358,7 +24358,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24380,7 +24380,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24402,7 +24402,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24424,7 +24424,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24446,7 +24446,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24468,7 +24468,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24490,7 +24490,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24512,7 +24512,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24534,7 +24534,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24556,7 +24556,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24578,7 +24578,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24600,7 +24600,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24622,7 +24622,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24644,7 +24644,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24666,7 +24666,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24688,7 +24688,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24710,7 +24710,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24732,7 +24732,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24754,7 +24754,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24776,7 +24776,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24798,7 +24798,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24820,7 +24820,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24842,7 +24842,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24864,7 +24864,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24886,7 +24886,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24908,7 +24908,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24930,7 +24930,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24952,7 +24952,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24974,7 +24974,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -24996,7 +24996,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25018,7 +25018,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25040,7 +25040,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25062,7 +25062,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25084,7 +25084,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25106,7 +25106,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25128,7 +25128,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25150,7 +25150,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25172,7 +25172,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25194,7 +25194,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25216,7 +25216,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25238,7 +25238,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25260,7 +25260,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25282,7 +25282,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25304,7 +25304,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25326,7 +25326,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25348,7 +25348,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25370,7 +25370,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25392,7 +25392,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25414,7 +25414,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25436,7 +25436,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25458,7 +25458,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25480,7 +25480,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25502,7 +25502,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25524,7 +25524,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25546,7 +25546,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25568,7 +25568,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25590,7 +25590,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25612,7 +25612,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25634,7 +25634,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25656,7 +25656,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25678,7 +25678,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25700,7 +25700,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25722,7 +25722,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25744,7 +25744,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25766,7 +25766,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25788,7 +25788,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25810,7 +25810,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25832,7 +25832,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25854,7 +25854,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25876,7 +25876,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25898,7 +25898,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25920,7 +25920,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25942,7 +25942,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25964,7 +25964,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
     ], 
     "ci_platforms": [
       "linux", 
@@ -25986,7 +25986,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26008,7 +26008,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26030,7 +26030,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26052,7 +26052,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26074,7 +26074,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26096,7 +26096,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26118,7 +26118,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26140,7 +26140,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26162,7 +26162,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26184,7 +26184,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26206,7 +26206,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26228,7 +26228,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26250,7 +26250,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26272,7 +26272,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26294,7 +26294,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26316,7 +26316,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26338,7 +26338,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26360,7 +26360,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26382,7 +26382,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26404,7 +26404,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26426,7 +26426,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26448,7 +26448,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26470,7 +26470,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26492,7 +26492,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26514,7 +26514,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26536,7 +26536,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26558,7 +26558,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26580,7 +26580,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26602,7 +26602,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26624,7 +26624,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26646,7 +26646,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26668,7 +26668,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26690,7 +26690,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26712,7 +26712,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26734,7 +26734,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26756,7 +26756,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26778,7 +26778,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26800,7 +26800,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26822,7 +26822,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26844,7 +26844,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26866,7 +26866,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26888,7 +26888,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26910,7 +26910,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26932,7 +26932,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26954,7 +26954,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26976,7 +26976,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -26998,7 +26998,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27020,7 +27020,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27042,7 +27042,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27064,7 +27064,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27086,7 +27086,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27108,7 +27108,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27130,7 +27130,337 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
     ], 
     "ci_platforms": [
       "linux", 
@@ -27194,6 +27524,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2"
@@ -27238,6 +27590,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653"
@@ -27304,6 +27678,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
@@ -28316,6 +28712,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b"
@@ -28602,6 +29020,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0"
@@ -28648,7 +29088,139 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28670,7 +29242,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28692,7 +29264,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28714,7 +29286,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28736,7 +29308,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28758,7 +29330,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28780,7 +29352,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28802,7 +29374,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28824,7 +29396,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28846,7 +29418,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28868,7 +29440,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28890,7 +29462,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28912,7 +29484,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28934,7 +29506,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28956,7 +29528,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89"
     ], 
     "ci_platforms": [
       "linux", 
@@ -28978,7 +29550,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29000,7 +29572,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29022,7 +29594,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29044,7 +29616,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29066,7 +29638,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29088,7 +29660,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29110,7 +29682,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29132,7 +29704,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29154,7 +29726,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29176,7 +29748,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29614,6 +30186,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
@@ -30054,6 +30648,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
@@ -30186,6 +30802,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
@@ -30296,6 +30934,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
@@ -30516,6 +31176,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2"
@@ -32034,6 +32716,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
@@ -32320,6 +33024,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32"
@@ -33926,6 +34652,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c"
@@ -34014,6 +34762,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
@@ -34190,6 +34960,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2"
-- 
GitLab


From a803fac758665a4f350b663bf56da7a48078fe29 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 21:58:15 -0700
Subject: [PATCH 176/525] Expand corpus

---
 .../04e01f399f194434b2b724877df64828e8f52c14  | Bin 0 -> 343 bytes
 .../05dee1c3847f2bca29bd14ed701ce64999b298b2  | Bin 0 -> 339 bytes
 .../0a71ae781345f9ee2b08008a81f9055e6c1d5256  | Bin 0 -> 343 bytes
 .../1671cf01e5baf796c5572b7b0e15d226a5c93f23  | Bin 0 -> 368 bytes
 .../18c856af1e2ebb934401e523043eaf80aecc8363  | Bin 0 -> 325 bytes
 .../18f2d7626b6ad4859e735e448b00b6916f1d3e2e  | Bin 0 -> 339 bytes
 .../207c5a0f80f052ac7b48f6dd45cd33987be27f32  | Bin 0 -> 343 bytes
 .../24a87af0954c808fbd3f2c55185d4b1fa9459f4e  | Bin 0 -> 339 bytes
 .../2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9  | Bin 0 -> 345 bytes
 .../60e8618c075ec5fd47a1699271c6da1b5befd579  | Bin 0 -> 339 bytes
 .../7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f  | Bin 0 -> 337 bytes
 .../9538327ef9f0a8d380a473bd25114b6859acf9b7  | Bin 0 -> 936 bytes
 .../9bc5b4a9a81905cbc7ee4a25482068dcab93898d  | Bin 0 -> 360 bytes
 .../a9548cec37ad3c54d4bff10c9127db3638065d77  | Bin 0 -> 343 bytes
 .../b7f282fbd77193d822df9c8156370398e1fd099c  | Bin 0 -> 409 bytes
 .../b94adf31dbe157a38e8b3a873658b8dace55f517  | Bin 0 -> 339 bytes
 .../bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2  | Bin 0 -> 410 bytes
 .../c17ca23726e7bca7b0d92398f827cfb25c7f0d40  | Bin 0 -> 410 bytes
 .../c73fbc2e78f496b5666da99bccac9445ac9feeac  | Bin 0 -> 294 bytes
 .../d8137be32de0a676678672fe6f82992b2ca61fef  | Bin 0 -> 343 bytes
 .../d9f752e6e02987d7bfe6f0f4c4d70644d357fef5  | Bin 0 -> 354 bytes
 .../dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b  | Bin 0 -> 340 bytes
 .../e62f5243dd375cb4b71c864a18ddd50b5b99762f  | Bin 0 -> 385 bytes
 .../ea2cf809383d8725bec1b44ab774f04b3e6d5ae5  | Bin 0 -> 345 bytes
 .../ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3  | Bin 0 -> 343 bytes
 tools/run_tests/tests.json                    | 578 +++++++++++++++++-
 26 files changed, 564 insertions(+), 14 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14 b/test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14
new file mode 100644
index 0000000000000000000000000000000000000000..f65526c3d520698faa4b8e0ebd84b37942ae76bc
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zTCp<mv1yk7Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW5^<qQlAsj0<9Oh-`MY2ETDk%5tkt(=*GFSV%5Uh6-|xG9g8{$|);#n{5}AELUb
uOhbt2B^v_+!~axeka--OJM7m6t93B8JYr+8V&Gs{%fMO0!N9@Eumb=*!dhGa

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2
new file mode 100644
index 0000000000000000000000000000000000000000..2f2494d00e5219213e7921688e4c683628fa5fb8
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zTCp<mv1yk7Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW5^sj0<9Oh-`MXx;KCk%5tkt(=*GFSV%5Uh6-|s40(@{$|);#n{5}AELUbOhbt2
qB^v_+!~axekXam@JM7m6t9LNAJYr+8V&Gs{%fMO0!N9@Eumb=avRUQ;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256
new file mode 100644
index 0000000000000000000000000000000000000000..c7464b2940d0c8c5f4edc6b40223d651ff20895b
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zTCp<mv1yk7Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW5^<qQlAsj0<9Oh-`MY2ETDk%5tkt(=*GFSV%5Uh6-|xG9g8{$|);#n{5}AELUb
wOhbt2B^v_+!~ay}wJZXh9GpAs*9NO~Ft$8mW3Xc2U|7q*S;WD>!O5@#06vmhYybcN

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23 b/test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23
new file mode 100644
index 0000000000000000000000000000000000000000..7a8b503e22f0a58a41fa9c4e7edf05f1e1973a29
GIT binary patch
literal 368
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK2@dsEmnEfq{)7
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKuS~XK}sQp6(Mx2ReY_^Sk%J6(9ZCmgMqO(
zl!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZJb$n`Zg{)aM*UWu**^
zW%mCWix{-HKqM2xBLxO-1|B9BuxbXzmPczf88{djSQx-;76#52sj0<9Oh+KDfq0F9
z!Mf#9A_F6n7Sz@D8e0E<OYJXWd?e7q!KAOx#!#QCY;O?!AEFBs9!xLU7#JA-rz)>y
zVc_K8++n}gAXu-Xh>7hSUn)qRL9wjpzgh=l%Of_1wG5m^91I+sU^g%@wlFe0TFbz|
M$-%Ie!D9yl0OSv0g#Z8m

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363 b/test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363
new file mode 100644
index 0000000000000000000000000000000000000000..2affb44a1bf097e46250923530c13b1bed0ed786
GIT binary patch
literal 325
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&uk2F4-=CN_{>DF#M{^rC{5dKo1p1x9)q1&PVo@g<2#IjQl*nN_KJsd>ry
zDXB#aii)q*8H-vN7}^>Bb1*RWhB7b~X))=yJYxF)pCee0i7mBwb1D;Cc`8R)mqQT)
z7;vp+V6<Z5W791EpZc7msH~KMvCRHIV-dsu|NsAMae-J&4388TxEXkuSiw3NI9ndA
z)nwpcWME-nU~GA`mW6@yMQUns5z`T<2g}MdwEi<NShqY%WMG7d6_wd*{r@eszliaX
xKnurzn4pFh(@Qo628REs${=GnICt2uH4IkkU~GBB#;}%=)2fJrfrFD_2LORHV0{1p

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e b/test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e
new file mode 100644
index 0000000000000000000000000000000000000000..728aabd066dd727e58728c64ca7c6c614b6b29ca
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}f$cjVN2<M=EfX78xqWI;
z855rZ0~<r`|GPzHOxz5NMH&oDY#^Ny42+MiutD@fG&3+TLd*eaO|^$<O$BRRtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do2?^5d#=-tz}?L
zwPI!BW791EpZc7mpsbXEkwJ^=KVuOC6T>3~25tr(CMJ+l76wj61_lOB4n_tB#+FBG
zSr|B-Q&WqJn2s>9rRC(8Czs?fX#HofZh4f*z{tc_&dk7<T2yAQ^&e!^lt)W{GwiQo
zY~lD1@la8jh7i+BHU<WU|EbC#vp6_+*sl#%>tJko#KvI7z`?MVfwPE%frFD_2LR>T
BTR;E+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32 b/test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32
new file mode 100644
index 0000000000000000000000000000000000000000..ee45b1dba81b2670bf7412e5ddccd87396b62f55
GIT binary patch
literal 343
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIctK6P3y{I5rFC{fC
zu{5V7KC!eUBfluKq>>@EsEmnEfq{)7_5a<XGA0JbA_gWlkckoujE}B>O)M(Y02z^L
z4^j%TqzI%V7p!Bg;%jxrq80{*c832P42->@42(ruO!_U4nEwCg2-ag_OD*1<%EVTl
z%2C$kP{aTRTx%H^tyr1(*fh)kr#|N>DpO}*EVKX3Sj3>k^&jK{hDQnv+zdQSEMVmf
zj4hAWYBF#zGO#d!*(?m4FH%#Bi<pi;oCEPQ2ZMFXqeKQqh*(jXz1IKVQu~V-9|^Q@
w{D%o@XfeHHV_;zTpQ^l;g@KcUbBFy}gJ87|#+FBH3~L!Ui#QlKI2m>T0B87Jng9R*

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e b/test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e
new file mode 100644
index 0000000000000000000000000000000000000000..9bdcea1432f37e0f1b2dcf613c2c713eda173fec
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zS{XC(S!<U6Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW3-sj0<9Oh-`MXx;KCk%5tkt(=*GFSV%5Uh6-|s40(@{$|);#n{5}AELUbOhbt2
qB^v_+!~axekXam@JM7m6t93B8JYr+8V&Gs{%fMO0!N9@Eumb>d+ggnP

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9
new file mode 100644
index 0000000000000000000000000000000000000000..4929da76fc46f766acd8ea35ccc07d547e16c5ed
GIT binary patch
literal 345
zcmWek*2qZA%S+8+U@}fEDoZV5;P}tP#8%Fi%E3`orlIwpiHU)&oR1^bUd@(?jjP-~
zwWy4VPl17rA@%>=qB151#v%qLHjqXM2F6EM*pRg{FffA5DJs(d=}fgRDpN$#xmNMD
zI%82wJHvmDRb>o}he8<`i?o>ZTOKho{r}GqtjENbTD&=xiLK?)+Va%+GKV4tFyLCt
zz?hoF%EZT}S^huuIY&`hDFY*e7T14}Ll_<@FmN;QFfoCYvM_LRa56A3GB7eQFt$8e
z%fi6voSIr(#B>DJk=8Ab5*Zko*vgq1_)?3??6v-b%$o9O>2C(9{Y8wAS~&hgG!&I-
u2r<26V_;zTpQ;Qpj)QZD{aV9dwGPIXM{Eq%3>*w=890kL7&tf?b^rh#(p$;^

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579 b/test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579
new file mode 100644
index 0000000000000000000000000000000000000000..4f21985e6fba3b80d6ccea97b22e3e128ef54067
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zTCp<mv1yk7Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW5^sj0<9Oh-U&Ec?&FQKY4j%3$5{D3O7YiLIQOfiJbF%wFq1$fzlgmi}hgU&YwM
y@gJlb92i1OFWDFv82+a!gUsUK++n{qSgnJx<q;c$6$1yuS_aM{4h9ZRh8+MPELr6M

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f b/test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f
new file mode 100644
index 0000000000000000000000000000000000000000..e550cfcd1c562870dd0e12818d51ee7168d47e70
GIT binary patch
literal 337
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#Kcz4!J)xdR-~2spNWZqt(=b|)n3h(iH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RU|2cy7nAlQ_H>WbOmH$cQDC=@4VgLiKwG50_tW11tn&tmf
zpK}zIl`=3gXmR~#EYf0NVtAy$z|FwJ#KOS9puoWR|NsC0AWe)dkJd7=fmmGS2p9ZM
z<zQjpbWTkzE@C>u#8z$vbvoNqrqrUMG7SdCM{607T-Wlb3v9$%21W*rR1T1rwEi<N
mShqY%WME{HFXv-m;F!e#@~XYo|KAMzix?lVv~c`qVgLZ#6Iq`C

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7
new file mode 100644
index 0000000000000000000000000000000000000000..8b997a5d2a6d9e9c17878fb0270876032148b6e1
GIT binary patch
literal 936
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#MgiJ_>BiBExn
zjUn~_-J&u^1||l^A_gWlCZ<&7|MeV2Y#?JK7#JDSiwctUGD=DcjPx=J5|gvzOA?cE
zQsav=t5Wq+^OEyZQi~WA6<@0}7PT-iv@`tYU|{SGWne7QV$yGU^o{BNe~w^1Cbrb#
z&8bXm<*6KHT@FPIV8FGOfzgVUiH}XQ{D10mj-s+s2F5b`|BOWp|NsC0uf+voF)=(+
zVBlupVPXYqVc=|ev{sXWgOP!Sfq}8*(OMP;&KIev#YId<AikYnR;Ho#pMk-;<xwI7
zBSfsI%wFsNZ>jx7jE@9bIR3)~HME#svVlzfpQ^l;g<%JW{n}tdPENHBMtB(RK@LQ%
z|4d8_Y>?o{O{|D7N=?qs%S%lziBC#Q&dyIui_a})U|<9X7f$)~BCUdCz2wxq;?iOU
zuJTlSP$WQI1c{6OyG3P+OlxrkD1q>7dH9HpVJ#!4RS^dR2WJ^$5d&ijBLmT)%m@k(
zNXVjwGVhDjM0hA`GU>B1{ZCc4Hwf12C}LtO=ineZ*!fa9ikKJ}%8JTh;SUae1x^mm
z9rkOD{(~(CMJ>Y)t+k8{kJd79axes|{r~?zIU_MI&nkz30pz*044}v;=i^AVSF>ee
z<0`jL1%)Ie2=5k^K@&4d8U{s5ZfbFHVtQ(PPHJ9yNd^N-x@15~mkb^Zpp*$un0yS7
t^ytCBz`?l`o+?=w7&I6d7#SFxkrN>(%YhOhBSs=**uSHQ@ewEy0suIU4{QJc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d b/test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d
new file mode 100644
index 0000000000000000000000000000000000000000..251a5061d4b59ee3ae0e3f7248351527a0d5035c
GIT binary patch
literal 360
zcmWekW@0Pn%Sg=2OU+?mDo!mbOD$sH_|F6qP30&m)6n|Q#Kgc>&c~5zuV%}{##L^g
zT2#iwr@+9*ko*5`Q5h2hW03{}6B|gQ1OwxvD{K(05WNfxjC^2YKsr<H!8$eA7*fGH
z*DAhNXDn)IXZX*ts*Hj0P$&aqkrtDF%Ogdm|Nl9H^_bXFi#Mk-v9&x}Tb{~M=1{}{
z23%_y7*nlSnfTZ=%l~&i=P1xDD`jA0(Bk^fSj51@@JNAyn}LUk38a>Vfs>Jefq|2Q
zk%57+<<VLe22SVH)Z!whBPfovZh4f*z{tc_&dk7<T2yAQ^&e!^lt)W{GwiQoY~lD1
zQC$QM0|v(ZMU0PH)-rG~lxYYty<}rxVECV^3^JR8bBF!fV6_g$mPc$1Rty{rYZ*9;
LI2brM8Fl~wNoQX~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77
new file mode 100644
index 0000000000000000000000000000000000000000..5e2b705d32c9e585ace40ae2135075eec67fb2d8
GIT binary patch
literal 343
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D82fvKF2Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN2=-
zv8bh;;XlW!G6u#&p$v>gT1@&akC^`d=LptgVoNRFoXW)3@@Q>&Do0tDLlFZQaIIxv
zOtoTV;$zb+*Z80MoTI3$l!1{!i|aqgB@B-g7`PdDm{>q+Sr|AuI2jli85kKD7+W5#
zWntiSPE9Q?VmgBAO6!(KiHuBa<;)CxsT@UR_FDh{D;6<Kd9?I5!~P=1M=h`bDJs(t
tVtUEOz`*c7RT*R&2j>p^wMM~e9gL4!*chxCI2hJ4a29beaBwp0001;ITOa@c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c b/test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c
new file mode 100644
index 0000000000000000000000000000000000000000..f9b3cda8cee50cdc702bbb548639037ae4a1dc40
GIT binary patch
literal 409
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSfy3Qz<4N>fw4%7Nx$WhBFBHG|G|1pY^lYYQ<>OW9<41;<tTF~VgLiK
zwG51@R;)~XY?}X5pK}zIl`=3gXmR}qIfUVn0s}V#4-?b>|Ns9pFoM)`a&R&*FoM{O
zEsxf+FmO7jrWO}59f3IX3fPYf4Aw1=5*Zko*vgq1_)?3??6v-b%$xFP>2HSpMU0PH
zIQ~P_7nNxUF}-ACV&h_9VECU}o}N`yX3eLd3^JI5a|Z((0~5!8P#}U_!v+pd4F<-R
zN1SUJtRa47V0_fFmZ6J*i;v;|e+CZwSqy6pgVj11TOP47STk@itYzRV;$Yz5WY_@!
Di28BD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517
new file mode 100644
index 0000000000000000000000000000000000000000..605bf004b9619f1fcdbe80997ef1f8a53e44275b
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)E*qOzw&5)6!wuCPJ0Li92)FhYz0=}fhU=}ZOdT&wt6
zow2B;o#8*nsxk(~L!k_eMOsYyEsqqL{{QC))?;EzE#92U#Mbg?ZFwq3nL`l+7;vp+
zU`(}QW#VJgEdQVSoTH$ul!1{!i|apQ5d#y$BLxO-1|B9RkWv-~PDTa>22Kt}1_s8K
zM{8LaIGs~di;I|!pt#Yx<xwI7BNJOWGXr00QJKBge~?jA9xeUNu)m72h2uX&by1my
s5YtOG1_p-zsmdU;I5>CMuMJk~U~GBB#$d(3!LXKrvxtL%gOgzg0HK{)WdHyG

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2
new file mode 100644
index 0000000000000000000000000000000000000000..c4bc8989ea621abe9c205a35819d34abe1d6d428
GIT binary patch
literal 410
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$|2cy7nAlQ_H>WbOm8Wu)bvYCjGQa@WS_VcdCO$UJ
z^8cyNIf}|k85qm#|1%abXmNo^CWc1}4BQMnOe`=Bj4hAWYBF#zGO#c(fY?wny{I5r
zFQcTSz(_BnATc>Rz9cazCpEq}vno|DB{exeCAElwfs=)S^F?ZEaS_uIhzB46z`$VL
z@+gs!kx2{cQG2cbzoo4A7co8(XyNz|Q3?t|rk89C3=IEMq2W*m4zlw9pm1bjkOKu-
eYEfAc$XT3g88{e=S|EY(sO6FJT9&m844eSREO7V$

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40
new file mode 100644
index 0000000000000000000000000000000000000000..5a6bb8e027652a2d5f8b58e1e007b12c1a52618b
GIT binary patch
literal 410
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6L)Bi*mWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v>#;n&#_9YjDhh`C<9}W7L$I<BSohF|2cy7nAlQ_H>WbOwLDr|p2|_?P{aTR
zTx%H^Q>|E;_}Dc6r#|N>Dl27RWYFUJ4{`~^BLxO-1|BA+|NsC0XJ7=W=j7mIU|<BX
z8CxE$WntiSPE9Q?VmbnG=@qai85pcv9wjm`GO?92Gw`JrmDy|k2bnkJ(bC@x`->PK
zwQ&50s4pth5Mp}C#>B?Oz`*c7wLCqmsLYyAK^bH)2j>n3HU=h+|DaF=xrPlKpc)K}
zEsr?YGFTV2v@`tYU|@XIvX-HXfs2pf|9=J!`&kTY4TIG>7+W5(F<3KjFsx<ZEaG6`
I;AGeV03?%gLjV8(

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac b/test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac
new file mode 100644
index 0000000000000000000000000000000000000000..8837ba57bbe7589d4473cb078144a8d8bf9e1b58
GIT binary patch
literal 294
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;Caj7fokjUn~_
z-J&uk2F4-=CN_{h2?oYTSJ=w=QaOssG(aj-?TgBo_z+6hD!x`{ENW?I_|L(>cqo*C
zu}F(azvU6r|Nk7pdQ5Do#hX)^*veBm%DNni7{GvQEd!$!D-$1^X8Hfr=Nv_4r3{P=
zT3r7@b}~FtVBlupVPaumU{GLS1gU3id9;>=fzvrPwYZ4s2ou;XAjfF^XJD{ydBl)j
zRFJHfQBqQ1q?ehOS(2HU6JMNKSelxboEo23nwyjgw)TIjGRPDT&K>q^O@q}sS{NU(
QF|1|aEaG6`;AGeV0By!lOaK4?

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef b/test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef
new file mode 100644
index 0000000000000000000000000000000000000000..11ae89a839cf713ba4c3374666c42c893e1fd833
GIT binary patch
literal 343
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@lA>B}9UatK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkSP)jjE}B>O(`nVU}EDcPqharg&16f(6LtWwK`)_
z3j;$t!+#D2#@<i{#v&~y{gy{e|NnCY>oKvV7H>{vVk=MODC=@4VgLiKwG50_Onhvb
z<^NNka}<@8GBB3e|7R>>(BcA-4388TxEXkuSip)I7#J8^9<9}6;9wMBfv}+@Ckq4T
zi`3NOBBmn{XF<Hhz+m0-D3OtoNek+Hd#(S!rL6ZCF+LJ#;rI_x3JMvfmuw6S4F6M=
j*Rn8ha&YdjUuzJo*1_2Fh>c+_17{Hj0|zGq2g42kH^f^t

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5
new file mode 100644
index 0000000000000000000000000000000000000000..1a323ad5cacb273a5fddaef561780d110753baef
GIT binary patch
literal 354
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBI7%
z8$;^<yG3P;3`~p+MGQ<#Y)t=CmFqc**g(ceFfcNt7ZoJyWt5Z@80lpcBqnFamn0_T
zq{bI#R;B8t<|XH+q!u|SD!x`{ENWq3XlMA(!NAxX%D`Bp#iZZz=o{1j{~W=3Ol+ye
zn^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42)&={~3!I{@XAxFmQobObm|{
z7`PdDm{`GD7&u!Vt<_}UU}RunU|?){w3dZ|^F?ZEaS_uIsBg>4G_?LRFj%)dN@QS!
zh!vIDYyJN%wZDk*kw6Q_f0&?#7Sl^Mkg5MumDjQ`?BK9p8*IeMsn)^R^6(KG!&*j8
bt0E2t4$d;hA_m45MutZWJG9m^crX9}!>VRQ

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b b/test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b
new file mode 100644
index 0000000000000000000000000000000000000000..6eaeab554d86e4963a90c6c92f414a069a947284
GIT binary patch
literal 340
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7Ji-E12&xs?|Ud@(?iA{qq6(YgLRc@bJ
zRK~=oz`(|k`u}cG8509z5d#w&$P@_%#z$AcrWBQFFtKr!r`m&*LJTfK=vb@xTAi_|
zg@K`+;XelhV{a$}W04k<e#;}K|Nl9H^_bXFi#Mk-v6ZKClywy`fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0Pj4hAWYBF#zGO#d!*-(;`g@N-$
zYHD#2(-DZHAf94iux@#j$iT>?1$Df=*8ks9`->PK3AAwhho}Sv3)4$B1_p-zsmg0v
h7&tjNci68r3|8x4Y<a}Su$F<dh=YNHlYxU_2LNV=S?vG-

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f b/test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f
new file mode 100644
index 0000000000000000000000000000000000000000..853d3c19218b050fe6c967b1e21469585a8b4b21
GIT binary patch
literal 385
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBI7%
z8$;^<yG3P;3`~p+MGQ<#Y)t=CmFqc**g(ceFfcNt7ZoJyWt5Z@80lpcBqnFamn0_T
zq{bI#R;B8t<|XH+q!u|SD!x`PYGGh#XZX*-z}Oqgz*wZkq~G%B8`J;)9Km`_Y^lYY
zQ<>PxQ#s0z&CAKp&rZxpO-zYTsw_$U^Z)<<Vumh<A_g$vTFby_#mdCTrdj?!^*KjT
zSt$c!nf-spB8LAq3=9lhAQltDBLxO-1|B9>uoec+mPczf88{djSQr=>TOO@tVc>j`
znp#}MbOah0Wn~&#{}~vpTOK7cFhazN%IvlN|CZWc#P~>{h2uX=P(zF9B^$`p|EbDr
wSr~S3*sl#X;^b88U~GB#h>c+_Bd1jn2LlIZ8DkLxV+$k0BZeJXYZ*Kk0Ea_#WdHyG

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5
new file mode 100644
index 0000000000000000000000000000000000000000..7c3ca9098ba286fb24e6c6cef108f49684e924b1
GIT binary patch
literal 345
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqC>twm)Tnp*!E7#Kn36qRW(ah0dqBQ)ME
zDq~u!_*$K@sHL6ZKgX&v2F63742(ruO!_U4nEwCg2-ag_OD*1<%EZ?4Xl;2aM_HFc
z5d#=-tz}?LwPI!BW791EpZc7msH~KMkwJ^=Kgb;nj}#cV8F-jjKuTE{I5{{O7#JBC
z85kH_9<60z;B-z+EiPg@0&ye6dkhTLEsqiznb^vi8Tdf@QaOss?6v-b%$xFP>2HSp
zMU0PHU_nw;rXj@il8u3Z;eV<!$V3j#9rkODg4H@0TOP47STk@itYzRV;$Yz5WY_@!
D^%7e5

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3
new file mode 100644
index 0000000000000000000000000000000000000000..7b8a04edd575cfe8c92db7463b9ac4420b9993b0
GIT binary patch
literal 343
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_1U&%lJ4nn2J)_xXM%QK}sR!79n)3ReY_^
zSk%J6(9ZCmgMqO(l!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZJb$
zn`Zg{)aM*UWu**^W%mCWix{-HKqM2xBLxO-1|B9BuxbVd2F8|0Yc&}-7#Ua~Y$(ae
z!oc|=HMO{i=?KJK5PvZ+ShqY%WMpL00tZ4-nZ2gg|KC#9`->PK3AAwhho}Vw%}X{0
o28RDy%4=B|I5{|X*snDVR_kDFdBn!BmVvW~gMovSfrDWO07N=kD*ylh

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 9f0c19238c..a9b053dfbb 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23520,6 +23520,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin"
@@ -23608,6 +23630,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin"
@@ -23894,6 +23938,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f"
@@ -24466,6 +24532,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef"
@@ -24598,6 +24686,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
@@ -24884,6 +25016,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
@@ -24950,6 +25104,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4"
@@ -25324,6 +25500,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85"
@@ -27414,6 +27612,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
@@ -28536,6 +28756,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
@@ -29484,7 +29726,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29506,7 +29748,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29528,7 +29770,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29550,7 +29792,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29572,7 +29814,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29594,7 +29836,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29616,7 +29858,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29638,7 +29880,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29660,7 +29902,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29682,7 +29924,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29704,7 +29946,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29726,7 +29968,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29748,7 +29990,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29770,7 +30012,51 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30120,6 +30406,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
@@ -30824,6 +31132,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
@@ -30868,6 +31198,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
@@ -31198,6 +31550,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2"
@@ -31330,6 +31704,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
@@ -31528,6 +31924,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
@@ -33134,6 +33552,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3"
@@ -33222,6 +33662,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
@@ -33508,6 +33970,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
@@ -33882,6 +34366,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686"
@@ -34036,6 +34542,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
@@ -34058,6 +34586,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
-- 
GitLab


From d2906ad80cc4dedd017fa4f4992c20fdffb8c238 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 22:45:28 -0700
Subject: [PATCH 177/525] Fix bug

---
 src/core/lib/channel/compress_filter.c        |  10 +-
 .../0468ab4bf4f7e10b680f43efae4bf9686834d220  | Bin 0 -> 327 bytes
 .../07674d39538e07c29342cb2ee8856bc71fc06638  | Bin 0 -> 340 bytes
 .../2501c7c3f78829725e6bf556277785588318106b  | Bin 0 -> 567 bytes
 .../2837baed2fbf1612f88224e91ddc46241dd9d972  | Bin 0 -> 235 bytes
 .../2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b  | Bin 0 -> 344 bytes
 .../32c108ead009572fbe9a216b372e5c0b3843238e  | Bin 0 -> 266 bytes
 .../43676969fb81dcc1699b6a17eb465ef3cd4c2ab8  | Bin 0 -> 353 bytes
 .../528cc09294d2288fc91a4bab7cf6ec621c6621b0  | Bin 0 -> 340 bytes
 .../710f61e5765c91bcf9cf2e07264771cf2feae48d  | Bin 0 -> 339 bytes
 .../72a3729a9bb74378156dcd42171e39ec348c71d7  | Bin 0 -> 340 bytes
 .../76487a234f6f7276d8eba4edabef7623a592fdf6  | Bin 0 -> 493 bytes
 .../90230730fae07c8eeb6b5bd571a119b486a21473  | Bin 0 -> 233 bytes
 .../9b6f00dd2752afbd223aad960168e4e535330d30  | Bin 0 -> 405 bytes
 .../9c5538a5492013e6bdbcce2a373be19fc97c4f20  | Bin 0 -> 111 bytes
 .../a1b04c2504a75f50d47875bd1db804cef3674cf0  | Bin 0 -> 357 bytes
 .../a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc  | Bin 0 -> 344 bytes
 .../b8cd185f946c392f8fb5adca4851043df849ac6e  | Bin 0 -> 314 bytes
 .../b93e4c7538558dfe92d2925646029b5dafe653d0  | Bin 0 -> 339 bytes
 .../bbf053837b7e0e2adc868be62fc91248b8dce176  | Bin 0 -> 328 bytes
 .../cca20202993dda83570ac83c0b1967ce225c78b9  | Bin 0 -> 571 bytes
 ...h-0b1b50227d01f99998b01ed218f5d4dc3839d44f | Bin 0 -> 113 bytes
 .../d80ba5bbc230065821c0c6530f70bdf205e817cc  | Bin 0 -> 233 bytes
 .../e8fd7c4270b5f2cb56fb06684858c39c7ccfa909  | Bin 0 -> 341 bytes
 .../eda5d435276e002a08358fd67a2bbd75902236a3  | Bin 0 -> 722 bytes
 .../f8373fd74d8a4eafc7d015e2643c2a277656b716  | Bin 0 -> 346 bytes
 .../f8a02d7d9317428fd142c05f9428840d3d30aff4  | Bin 0 -> 616 bytes
 .../f96f406763e8d6a53de319e67e942696cc10a4b4  | Bin 0 -> 705 bytes
 .../fb0bfb049d4a99a529ff339218a5d962983118d0  | Bin 0 -> 339 bytes
 tools/run_tests/tests.json                    | 622 +++++++++++++++++-
 30 files changed, 627 insertions(+), 5 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0

diff --git a/src/core/lib/channel/compress_filter.c b/src/core/lib/channel/compress_filter.c
index 229fdb5ef6..3d42d0e616 100644
--- a/src/core/lib/channel/compress_filter.c
+++ b/src/core/lib/channel/compress_filter.c
@@ -268,8 +268,14 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx,
   channeld->default_compression_algorithm =
       grpc_channel_args_get_compression_algorithm(args->channel_args);
   /* Make sure the default isn't disabled. */
-  GPR_ASSERT(grpc_compression_options_is_algorithm_enabled(
-      &channeld->compression_options, channeld->default_compression_algorithm));
+  if (!grpc_compression_options_is_algorithm_enabled(
+          &channeld->compression_options,
+          channeld->default_compression_algorithm)) {
+    gpr_log(GPR_DEBUG,
+            "compression algorithm %d not enabled: switching to none",
+            channeld->default_compression_algorithm);
+    channeld->default_compression_algorithm = GRPC_COMPRESS_NONE;
+  }
   channeld->compression_options.default_compression_algorithm =
       channeld->default_compression_algorithm;
 
diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220
new file mode 100644
index 0000000000000000000000000000000000000000..6bc933444fe255804dbad9f7f4f8b06c5bdc29dc
GIT binary patch
literal 327
zcmZQ7PAw`+En?vK&%~rr&X>x;QB<bEruDz1C^4_NAit<2zBsuuvxFhFsI;hziBExn
zjUn~_-J&uk2F4-=CN_{>2?j=n^rC`fy^NBQ0wcYQg2d$P_>#n=oYeT@%&Jtq)V$>U
zl++>yMa9?Zj73^43=HiI|2Y^KdqWu*i?o>ZTOKj}|IZPu$HbOeyg8MLtvr>ZtjnQ@
z0Svg-GB8@PGV!r#mj6$E&QVlW%D`A=|DUml;s5{t|FyV4EGC9W3Jlx~JWQ-$EexD3
zkJf53a4<5kFfcH-JX*`b!1*FIwYZ4s2ooFFi)CdR3|f!=w^%bIGB85KipuP@{{NQR
zU&Q!GpoQZ<Oi)9M=_MNj1H=DRWsor(oIC8-8V0L%Ft$8mV_3_`X;s9*z`@C|0|4Qq
BV1@ty

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638 b/test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638
new file mode 100644
index 0000000000000000000000000000000000000000..42d608213cd7be0bd08378964dc581a4fab0b86a
GIT binary patch
literal 340
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zS{XC(S!<SC{ZD<)QBYROz{sG*^`Ehbfr;Uf0s}V#4-*qeEeiuDBLf2iCkG<~17pjh
zwJZ#r9jU3sMNCIf9BJM1D3O7YiLIQOfiJbF%wFq1$fzlgmi}hgU&YwM@gJhPs7ynM
r=_MNj1H=DRWsq4MoIC8-2CH>2wmf2Euwvj~Sj)g!#KFM9$*=<e$>dtc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b b/test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b
new file mode 100644
index 0000000000000000000000000000000000000000..f5308f21dbe966bc81a8adb856266cbec4e0d084
GIT binary patch
literal 567
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$1{}e9Ol+yen^T$C%2PSYx*Uoaz<_Hl1EUoaADd?R
z|J3IkMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-jt1_s8KM{6}1I2ajNAZ#ef$-=<-
zA~m(Ri0KH(T_RxrGH5;eZ{5O>$iT>?1$Do@*8ks9`->PK3AAwhXJRY2f`$OoOEv}u
zhX1L`YgrgLIXHLNuLT(c2`2)9^XLlH;}CBj3I%!iKitFWP#-feFfc(p0rE2|6CYdo
zf6eEbU@yabYZ$E7!PxSMjbSYVXAuVj2Pe$?Obj6BF@p3vBYX*qRd5)9e2L^q29PJg
feq;beKPdK@^g)Io`_Uj+4`kn31`d#YI~W)MnwgU=

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972 b/test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972
new file mode 100644
index 0000000000000000000000000000000000000000..5914914395c659104bde220cd2247cba8051c85a
GIT binary patch
literal 235
zcmWek&PdG5OU)@_U@9(4O)X;J_|L>v&X>x;QB<a(^`D7>t(=d8H`QLvmWhq4+&;Ca
zjEPTyfsG;cKVwlDlLKQB0~1?OS!$641LLDBY{*&}7#Kn36qRX!bf(&abuxl<-YqI)
zTC4b4ozcIgo#8*nsxk(~L!k_eMOsYyEsvP~|K|wSV`57!-rSYSq}lRlZFwq3S(if*
z0~m0vWnfITVrAlE(=7l0oTI3$l!1{!i|aqgAq<Zc7`PdDm{>q6Sr|AuI2jli85kKD
L7+W5#WnlmSMNB*Q

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b b/test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b
new file mode 100644
index 0000000000000000000000000000000000000000..038b9167b4c27cd6fd0720db27e62f680eeaea1b
GIT binary patch
literal 344
zcmWek&PdG5OU+?mDo!mbOD$sH_|C*u&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69eO21|~L;J_!bE#z$A!ko7V!FoFy!D$@XIO|?g8y<1eqv{v!8
zI%82wJHvmDRb>o}he8<`i?o>ZTOKj}|IZPu$HbOeyg8MLt>w|$@>GtpE{7rpFyLCt
zz?f>q%EZT}S^huuIY&`hDFfqf1}(1tj71Dg4388TxEXkuSU_r77&tjN85kHD7#SEC
zTOO@tVc>L5O)V~BI)ds->y}4}j7)6h%nW>~97SdJTK_?2O?kBRH^crS#z!q2{~_v&
v$~1(SUa~PTF#Jzd2ARgexx;>~QLtJEW6L8p25SZmhP4cwMH~zqoD4evJ+NFc

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e b/test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e
new file mode 100644
index 0000000000000000000000000000000000000000..6ec8cba327c64a447257eae87f06baccfdffa9a1
GIT binary patch
literal 266
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#Kcz4!J)xdR%Dg>pNWZqt(=b|)m}}LiH)n=
zKDDTfiBExnjUn~_-J&uk2F4-=CN_{p2?oYTSJ=w=QaOssG(bvI?NODkReY_^Sk%(a
z@SlT$@lYrOW04k<{v)RU|2cy7nAlQ_H>WbOm8Wu)bvYC<fC1N921YAZCO$UJ^8cyN
zIf}|k85kL~xc)O1X)!P{JW^obX5e9BVPIfTU|{_J|NnoGCdQUWYgrgLol{ebi<piu
rv6Wk;GB6aCX=wdtV6bj^l*quy1a+gm*8krO`->PKv9xgfXJP;V|7l1a

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8
new file mode 100644
index 0000000000000000000000000000000000000000..5f918d6623fcd7935ef7f1aecb1b9959b9752484
GIT binary patch
literal 353
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&u^1||l^A_gWVHm?7vO7$E?Y#?JK7#JDSiwctUGD=DcjPx=J5|gvzOA?cE
zQsav=t5Wq+^OEyZQi~WA6<@0}7PT-iv@`tYU|{SGWne7QV$yGU#Pt6^N3b3fTWay<
zR3^6aRF1MPhav_r;9ASTXvNCJ$EI2SKlM3BQCTSiW10Pb#v+FQ|NsBj;sUXl7#=Aw
za5L~Qv4XWQaJD>JtI5E@$iTwDz}WI=EeiwZi`3NOBBmoy&z6;GX#Hnkux@#j$iN5@
zD=M?s`u|&Me-Yy&ffkPcFhLD1rk89WQ~#$bgUsRJ++n}gFj%dFvE|_-Hior~oK{5~
Y3>=(gj71ELEsPA07<Oo_W$<7C07$H79RL6T

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0
new file mode 100644
index 0000000000000000000000000000000000000000..0d9559d1d21bf6e9863fe64fc6192abf1b0a091d
GIT binary patch
literal 340
zcmWek&PdG5OU+?mDo))~mRiKX@t=u_t(-5Fqo_<n>pv3{16w&CN2<M=EfX78xqWI;
z855rZ0~<r?|GPzHObm=g8f*+@Ohu_h5)6!wuCPJ0Li92)Fhb2KOD*TJXDebt(yFLl
z)bg5*acw)pe~wjU42*|D85oPSnDkp7DKh>4&k?N0#FkpTIhBd6<<Z*mRE{!-A_g$v
zTFbzgYQ@UL$EI2SKlM3BQCTSiBZC&#f5svPCWc1}4BQMnOiUo9EDW5C3=9mM9E=PM
zj4hAWvM_Kur=}JcX&gZ~@;`%C3xoBeL`EjIa%Kj;)S@zbt^XjSraW5un_+(yV++TB
xi0Yy;4I!qNYzzzx|5KGgW^r)tuwNUj*1_2Fh>gLTfrDW!17{Hj0|zI=4geF?TFU?c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d b/test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d
new file mode 100644
index 0000000000000000000000000000000000000000..e7db03360691a49dc25e489217ce87d5df5de185
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zS{XC(m0PF&*L==VP*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW3-sj0<9Oh-`MXx;KCk%5tkt(=*GFSV%5UhBU)V-drYM@xS*?5|>M;rI_xT~wwa
s#Po}efq~(Fsxrtd4$d9+YlGD~7+W5(F<3EhFsx<ZEaG6`;AGeV06?5s#sB~S

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7 b/test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7
new file mode 100644
index 0000000000000000000000000000000000000000..ab3ed16d4831a50bbfa36c7429257b293438ef3f
GIT binary patch
literal 340
zcmWek&PdG5OU+?mDo))~mRiKX@t=u_t(-5Fqo_<n>pv3{16w&CN2<M=EfX78xqWI;
z855rZ0~<r?|GPzHObm=g8f*+@Ohu_h5)6!wuCPJ0Li92)Fhb2KOD*TJXDebt(yFLl
z)bg5%acw)pe~wjU42*|D85oPSnDkp7DKh>4&k?N0#FkpTIhBd6<<Z*mRE{!-A_g$v
zTFbzgYQ@UL$EI2SKlM3BQCTSiBZC&#f5svPCWc1}4BQMnOiUo9EDW5C3=9mM9E=PM
zj4hAWvM_Kur=}JcX&gZ~@;`%C3xoBeL`EjIa%Kj;)S@zbt^XjSraW5un_+(yV++TB
xi0Yy;4I!qNYzzzx|5KGgW^r)tuwNUj*1_2Fh>gLTfrDW!17{Hj0|zI=4ge5&TE_qY

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6
new file mode 100644
index 0000000000000000000000000000000000000000..f1405c95b8b150320653a5e4ac6de3dbdfcb0c52
GIT binary patch
literal 493
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmPw4O+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEA}b9hHm>qidsLlk
z6<@0}7PYi9{O4Fz#=v+el!38Gi%GwQ>5=09{~W=3Ol+yen^T$CS{|(}Pvt0cC}RKv
zuC)w|saC8^d~BNkQ=fAbm6b9uGH7xA2f2gckpcrZ0}m4u10zT+CkH1310#sd*z#yC
z3j?QfYHD#2(-DXpuYkSBz+m0-D3O5?<YhjPm+h4q*vgq1_)?3??6v-bjGgjm>2HSp
zMU0PHIQ~Pl7L{oTF}-ACV&h_9VECU}o}N`yX3eLdyq1H3lYxbE2O9$u)W>y9TK^ds
zK-M#W0<HW%$O<L~IZ&Xb7L^r&q&U|ya6kisf#W|Y1{jN&*ciZ(p~1k&@`!USgE}Oj
z7#JV5JX*`p#lXeK@c%yphy5&uwFbdz9gHoH*chxCI2hJ4a29bu6ge<3aB_fx0Tcin
MoD5t${{LqH0EoAQvj6}9

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473 b/test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473
new file mode 100644
index 0000000000000000000000000000000000000000..d8db0ebbba3e0d079b005e1bfdbd3f68ac84b73b
GIT binary patch
literal 233
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7>t(=d8H`QLvmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqF4S{WD^LFN>dX@GR5+9Pz{Eh=MLtN5DH
zzonhwKgX&v2F63742(ruO!_U4nEwCg2-ag_OD*1<%EZ?4Xl;2aM_HFc5d#=-tz}?L
zwPI!BW791E|D2<!tdxO~L5u4@$QcZe6d1S}c$io~Dp?pfIXD>@7#SED7#Ld~tz}^V
E0EUD*;s5{u

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30
new file mode 100644
index 0000000000000000000000000000000000000000..bb310854433560e2cdb9f8099e9ef1415a7931fe
GIT binary patch
literal 405
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|RxX#yQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;c|J|Z8CI-eL1|~L;J_!cKM_1UG*vk1*IUrgY7#KmEqB0GT&QyC;oof|e
zt1}k0v@`tYSXIWrcqo*Cu}F(azvYo4)Bpb*!Fo(=sl}U9nb=w$tu0UGD03)c00XYI
z42-E(tW11tn*URua}<@8GB7e|as3CmgW-_^12+Q?6B7d?NG&G^Cj$c`h|SpYXe|o^
zr*mp*aS_uIh#Rkfy~n^{-SQ}rfsu)=oSA_ywW!Qq>p#e>DUX)^X4qfE_^5^BKSX^|
znT8P4OExApE(QjM|Ec8~Sw&^md<uyLnGBp9oI4oU7??QzgTfEw5;ky9YA`UiJmOr-
zpbqgS1LLEXM{60n7`XTt{{Ls-u%E@S)+ku5gR$ii8-q0i2g6zh&LR#54o-$00N9#t
Ak^lez

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20 b/test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20
new file mode 100644
index 0000000000000000000000000000000000000000..ef72f01fbe6a844eaaebca78b86ed853b967a970
GIT binary patch
literal 111
zcmZQ#<0?<JFDhf=Q($0YNd3>kP{zc-Sj51@R#cW+q`|=W=*n7kb;hEWc832P4CzG$
z$$H88xdlb3#l@NVdGU!k>G?&OB^kL4P{6g8fsvJoFQcTSfT5@)m4T6gf$KlWJcdUK
H4BR{bh%X%H

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0
new file mode 100644
index 0000000000000000000000000000000000000000..6e596462522d9473731a90a3679f7b6e75df605b
GIT binary patch
literal 357
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U8wK6a;g3Ku@(*WsAwMW&tR`InuV^K>x!+#D2#zUbD
zj73^Z`Yn%`{{QC))?;EzE#92U#Mbg?ZFwq3S(if*0~m0vWni>oW#VJgEdQVSoTI3$
zl!1{!i|aqg6%3CQ7`PdDm{>q6Sr|AuI2jli85kKD7+W5#WntiSPE9Q?VmgBALhF`C
zi42TPY~{=he5v*vT4hE5e>3baVtmxX@gJhHs7ynM=_MNj1H=DRWso@>oIC8-8V0L%
zFt$8mV_3_;S;UZDRFJHfQBqQ1q?ehOS(2HU6JMNKSelxboEo23nwta)Rt64Eh8+Nf
CxM2DK

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc b/test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc
new file mode 100644
index 0000000000000000000000000000000000000000..ab98a6006b7b144a6a9fb277ead959d6f29a006a
GIT binary patch
literal 344
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@lA>B}9UatK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkSP)jjE}B>O(`nVU}EDcPqharZGs3PbgWf;t<G4~
z!obkZ@SlT$u{V@~u}F(azvU6r|Nk7pdQ5Do%Eg;gnb^uxIm)^miWtCvYb^t#6%!wu
zX8Hfr=Nv_4r3{Q^_Wv1+7__)RB*P;G25tr(CKj+_1_lPkmPczf88{dPSRiaD$;raN
z`64y7xQOWpvWFWOtXm!>GBPr0K^$9Vul4`8l=c21#zz7z9RDFoK|#axl8u3Z;eV>~
jS{4RQ4$d9+YYl?cIv86Xu`#S=;4I=`;NWE7VAufw9h_WP

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e b/test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e
new file mode 100644
index 0000000000000000000000000000000000000000..d9b0e8c0fbcd7d3fd3340c336089add5a4636fe3
GIT binary patch
literal 314
zcmWek%*kP3Vk>82V`3^!Eh<YbV&M4C#KgwIQLe#PR-~2spNWZqt(=b|)n3h(iH*xX
zwWy4VPl17rA@%>=qB16iO2#4vCN_{p2?oYTSJ=w=QaOssG?>`9%2Vx8)vi^1t<G4~
z($4UogMsl-C<9}W7L)#?fB*mg57uL1OJ!nX`k$&?yg8MLtvr>ZtjnQ@0Svg-GB8@P
zGV!r#mj6$E&QVlW%D~8=#r2=DNQ;4q;gJFZHv<n73j+g#0t4g!|NsAkG%>b3TFb(~
z>8zQWT3p0*go&-(DwPA|F0KCz4Azel85o(MF16SC|2slaQ&oe3p^UMJp@o5QEdwLd
oBQ_>w233xtA`b@p|BOWpHjE7Wi&`G7W#C|7e8kei@t=tS0GIYu*Z=?k

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0
new file mode 100644
index 0000000000000000000000000000000000000000..1fb234567a1b1de92dea452aa0f4001acdc33e35
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)E*qOzw&5)6!wuCPJ0Li92)FhYz0=}fhU=}ZOdT&wt6
zow2B;o#8*nsxk(~L!k_eMOsYyEsqqL{{QC))?;EzE#92U#Mbg?ZFwq3nL`l+7;vp+
zU`(}QWy)vMEdQVSoTH$ul!1{!i|apQ5d#y$BLxO-1|B9RkWv-~PDTa>22Kt}1_s8K
zM{8LaIGs~di;I|!pt#Yx<xwI7BNJOWGXr00QJKBge~?jA9xeUNu)m72h2uX&by1my
s5YtOG1_p-zsmdU;I5>CMuMJk~U~GBB#$d(3!LXKrvxq~BgOgzg0NsmP@Bjb+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176 b/test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176
new file mode 100644
index 0000000000000000000000000000000000000000..af7b33e61d542aa41e942660c2712f3628816133
GIT binary patch
literal 328
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBsuuvxFhFsI;hziBExn
zjUn~_-J&uk2F4-=CN_{>2?j=n^rC`fy^NBQ0wcYQg2d$P_>x4YoYeT@%&Jtq)V$>U
zl++>yMa9?Zj73^43=HiI|2Y^KdqWu*i?o>ZTOKj}|IZPu$HbOeyg8MLtvr>ZtjnQ@
z0Svg-GB8@PGV!r#mj6$E&QVlW%D`A=|DUml;s5{t|FyV4EGC9W3Jlx~JWQ+%EFevs
zEsxe}GH@`0c#JKN*0L~gzDP|iE@C<Y^<r6>27}h4|1H)Gi42Sov7$12t^dEJ_7^ce
z5@_N04-?eTVtUEOz`*c7^?@?T91hMM_G=A;)jAkk9<ed3W#qIf;$Yz5WY_@!5FlYF

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9
new file mode 100644
index 0000000000000000000000000000000000000000..663f2164df627535c6d45689d3ef20a17c665330
GIT binary patch
literal 571
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsKJ7y{I5rFE_Cwz9=<0KQAvexg<U*F*!RwEiFE`m?8B)V^Ntk69Z$B2m=!v
z$Y2Qu#z$A!kj-XbU<6rIRHgwkI@KO#bn5@RMP*ED6<@0}7PYi9{O4Fz#=v+el&RdF
zgO4p0;t;TE2F4;SCjFL2O#lCL1nV)er50~aWnyc2w6;8zqpZt;zlZ@0xYjZ-rdqKw
z@v&)^|4)6+QB+pSz{sG*^`Ehbfr;Uf0s}V#4-*SWDGLK92PXpqBLgD?17pjhwJZ#r
zV9!Ea!~jyymRy!vqyh5FT19nr#%72M85j?7FfcHLBHU7(3UUkBAq))gKn5vd0J#U`
zn)3gtSlq(H$iTpmnp#}MbR?01fpLEk<D(W1hE-*${~41QraW3|4UeIsGA#xseGO-b
zV$_heZh4f*$i!C842mi~kUjQV|3My}@@VOAhW$m1^IBjLUBvJ|RoQ;6L9kv&5kr}V
r5YtOG1`UuH$om|eJM7mQ2CH>2wmf2Eux8+3Sj)g!#KFM9$*=<e=@6R&

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f b/test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f
new file mode 100644
index 0000000000000000000000000000000000000000..3dbc7a033ecaf9dec7945feed3dfc9698ccb94cf
GIT binary patch
literal 113
zcmZQ#<0?<JFJt0UU|?fN{m;Ts#>Bu_#K6Q>RF+z#!NB<F%35`G#-f&XhW{K4=|u&}
zddc~@1x2aF#hLke@rgO<`9+x}8MzGq{{R2a00vxZ85mia_%cdL3K)t?QW+Q-7`Xm}
MjAVGEz`)G|05_H(Z~y=R

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc b/test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc
new file mode 100644
index 0000000000000000000000000000000000000000..64d1577640ce6310e918b1690dabdf85fef59a22
GIT binary patch
literal 233
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7>t(=d8H`QLvmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrBepBZS{WD^LFN>dX@GR5+9Pz{Eh=MLtN5DH
zzonhwKgX&v2F63742(ruO!_U4nEwCg2-ag_OD*1<%EZ?4Xl;2aM_HFc5d#=-tz}?L
zwPI!BW791E|D2<!tdxO~L5u4@$QcZe6d1S}c$io~Dp?pfIXD>@7#SED7#Ld~tz}^V
E0EM<X;s5{u

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909
new file mode 100644
index 0000000000000000000000000000000000000000..e2d0ca33cc7c8516c99dfc1c43005e4206f2d24c
GIT binary patch
literal 341
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}f$cjVN2<M=EfX78xqWI;
z855rZ1DjUv|GPzHOxz5NMH&oDY#^Ny42+MiutD@fG&3+TLd*eaO|^$=Wk>~UU8|}1
zTAi_|rJdnF$Eq?0#zUbDj73^Z`Yn%`{{QC))?;EzE#92U#Mbg?ZFwq3nL`l+7;vp+
zU`(}QW#VJgEdQVSoTH$ul!1{!i|apQ5d#y$BLxO-1|B9RkWv-~PDTa>22Kt}1_s8K
zM{8LaIGs~di;I|!FtMfO<d-Lx<S=OcXRvO0l*quy#8%GCz?WK7X0P=hWYm;LOMf%$
zuVQTB_z&?>QJIDi(@Qo628REs${@2iICt2u4OZ)5Y<a}SV8y_}uvU?QvxtL%gOgzg
E0JE-Jv;Y7A

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3 b/test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3
new file mode 100644
index 0000000000000000000000000000000000000000..7cb7b453927073b832b95df09d4b3e2047d47758
GIT binary patch
literal 722
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4++HiS
zsEmnEfq{)7_y66ZGA0JbA`J#6HjqvU2F6EM*dTf#ni&`vA?ARzrrN`Frh;{@ReY_^
zSk%(a@SkH<83W^?PzJ^#EhhbzM~Y1U|8oTEF|nx@Z%$=mYk9P`Je8x2sW{c4hye_^
z)-o`rS{XC(S!<U6Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|Rm
zW6PtpEDW3-sj0<9Oh-_hY2ETDk%5tkt(=*GFSV%5Uh6-|s40(@g1p7Ru?H3+5MP0U
zgfYFSAX%?CH90>oC9$Y7zO*>CC_XVgHLrvL>^TOIQ;<Rh8lH%7fY@II3dq#|{dbGX
z6q%p_!oUCu5(dUzc!0pdBNZGTpup%t4hkz)CO$SuNECrWqRbxT`v3p`|3?cFP*5;H
z0z#94gOPy+!e(LMeSs7xO!{n0|5KIi4TAMLikR5SIXKEd34wtD9!lUiwb%OpTWWt1
z<0F9<j{i{KfF+n17=APCuVO?9muUzwy<}rxVECV^42l8{&K>q^gVj11TOP47STS%g
ztYzRV;$SEPB{(F73Y=htM*qRiWZ>XrY++=0w3dOBgCSTA<UNQ1YZ*8htcp0+GI%gB
K?BL*J*Z~0X>&mYH

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716
new file mode 100644
index 0000000000000000000000000000000000000000..8359f3ad0ee346848120ab03076eee56be86b639
GIT binary patch
literal 346
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;cKVwlD69Z!r0}~rap9BNrqbqC>twm)Tnp*!E7#Kn36qRW(ah0dqBQ)ME
zDq~u!_*$K@sHL6ZKgX&v2F63742(ruO!_U4nEwCg2-ag_OD*1<%EZ?4Xl;2aM_HFc
z5d#=-tz}?IwPI!BW791EpZc7msH~KMkwJ^=Kgb;nj}#cV8F-jjKuTE{I5{{O7#JBC
z85kH_9<60z;B-z+EiPg@0&ye6dkhTLEsqiznb^vi6&d(I8dEun%IvlNgAAPVXz6c;
z{Y8wAT3}&PRHh-s^pcH%f#H9uGRQ~{&K>q^4TIG>7+W5(F<3KjFsx<ZEaG6`;AGeV
E07aNv8UO$Q

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4
new file mode 100644
index 0000000000000000000000000000000000000000..01e2f4eb84c21a6c5ea87167183c13212b00dfd3
GIT binary patch
literal 616
zcmZQ#D`zTBEh<YbV&M4C#Kcz4m&(CWRK}t8pNWZqt(?z^Bh_BbmWhq4+&;CajEPTy
zfsG;c|J|Z8CI-eL1|~L;P6-CaM_0f)i^?=WN>lAYN+E_7A#|)&e67B<sD*){o#8(R
z17mL}17ndElYYx1rvLvrg7ui#Qj0gIGO?9&lyx~2F@OQrS_VcdRwh0+&GP@L&pC?9
zN*Nf-?Ef<sF=%mtNG66y3Jlx~JWMQL<qV81kJd79Ffs@x=HxJd{Km$F>OBq)4ZgA>
zt5m4>$oCzpw-}3BAf7q|^%T0FQVDnp;vX#rgojudK)$hJVc>j`n#u(69s@XXG_?LR
zFj%)dN@QS!hH;s_*8ks9`->Q}9tpH?FfcGEFfjiA|NlQo7br+r7&x6%Q;Un3jxe#6
zTct8E6qWsFD#|a-ONlSa$6;JjW*#U3q;eFMX=pLMWMg1p_@Ao0mW6?ngL8-dTBBe-
wP~fRCsC6*5JYrkRz*)q>z`@DDuw#D_<0F<9j{i)IR{I|nt!?38U}Rtb0LAsBdjJ3c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4
new file mode 100644
index 0000000000000000000000000000000000000000..b99bc9f46cf95dc2b1de9d4d01881c6db9bdcde8
GIT binary patch
literal 705
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&uk2F4-=CN_{>DF#M{^rC{5dKo1p1x9)q1&PVo@g<2#IjQl*nN_KJsd>ry
zDXB#aii)q*8;e>P7}^>Bb1*RWhB7b~X))=yJYxF)pCee0i7mBob1D;Cc`8R)mqQT)
z7;vp+V6<Z5W791EpZc7msH~KMvCRHIV-dsu|NsAMae-J&4388TxEXkuSiw3NI9ndA
z)nwpcWME-nU~GA`mW6@yMQUns5z`T<2g}MdwEi<NShqY%WMG7d6_wd*{r@eszliaX
zKnurzn4pFh(@Qo628REs%J6X7gB(y=|CyK=*vk2Woj6hj-?H1Q*)p+lmD{J{3MvT(
z#z$Ac!CX|P0aBW34^j%X4-&ZjpwL~b_*$J2XIQZ@>7^E94=Yw81B($7SfBtx4J_Ul
zsi~ka<KWz3zZOd>fCnU#J{!~jRAqb9V7-naCbn`84x$5=FO_3QQJIDo14suvh~c&x
v{RhV!17iy#!=tqfoE!|nYVZI5|KGvb@`#OLEd!@j5yx5v4+aK~e+)YS&tTCK

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0 b/test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0
new file mode 100644
index 0000000000000000000000000000000000000000..b1de1e2d0423b68b3216c63909dbc7e22beb286d
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#;~z*m8aUnbf$uJu2p=k
z&REpa&hVdORT%^0p-=|KA}uEUmPd+A|NnCY>oKvV7H>{vVrzM{wmg-i%%O+@47k=Z
zFs53uGV!r#mj6$E&QVZS%D~8=#r2=Dh=GaWkpcrZ0}m4uNGS^gCnEy`11AR~0|R5r
zqqQsyoX)AK#YId<KyEDi&%sforIE^D-SQ}rfsu)=oSA_ywW!Qq>p#e-DUX)^X4qfF
z*uwE2q&gSmAt9!hYzzzx|5KGgW^r)tuwNUj*1_2Fh>gLDfrDW!17{HjCj$q=4ge)$
BS@8e>

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index a9b053dfbb..5e79189b0a 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23520,6 +23520,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14"
@@ -23762,6 +23784,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c"
@@ -25170,6 +25214,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5"
@@ -25258,6 +25324,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
@@ -25610,6 +25698,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060"
@@ -25962,6 +26072,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41"
@@ -26446,6 +26578,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
@@ -27062,6 +27216,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
@@ -28162,6 +28338,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
@@ -28228,6 +28426,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d"
@@ -28404,6 +28624,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a"
@@ -29592,6 +29834,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7"
@@ -29902,7 +30166,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29924,7 +30188,7 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d"
     ], 
     "ci_platforms": [
       "linux", 
@@ -29946,7 +30210,51 @@
   }, 
   {
     "args": [
-      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20"
     ], 
     "ci_platforms": [
       "linux", 
@@ -30120,6 +30428,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
@@ -30274,6 +30604,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee"
@@ -31198,6 +31550,50 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517"
@@ -31286,6 +31682,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a"
@@ -32188,6 +32606,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298"
@@ -32342,6 +32782,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
@@ -33552,6 +34014,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef"
@@ -34520,6 +35004,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
@@ -34762,6 +35268,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
@@ -35334,6 +35862,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
@@ -35356,6 +35906,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7"
@@ -35400,6 +35972,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b"
@@ -35510,6 +36104,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2"
-- 
GitLab


From d5c6eca64b4f6a36b2477e06e7e6f80e2992907d Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sun, 24 Apr 2016 23:10:47 -0700
Subject: [PATCH 178/525] Expand corpus

---
 .../092b85d1f5c922287e476e6e75ad8a0a80c779a6  | Bin 0 -> 354 bytes
 .../0bbd89b21cfd192174c25803c7f1afeec88e6524  | Bin 0 -> 593 bytes
 .../0d8bd296d63a5aca5f80d7a7d00387048babda36  | Bin 0 -> 236 bytes
 .../19dcc3082c76b85177ce6a56d195473aaa285268  | Bin 0 -> 232 bytes
 .../26865cd90c1461694d94d96232436372df2a91fb  | Bin 0 -> 331 bytes
 .../2f120ceed5250084f62010df9bf8fe8e8f3f643b  | Bin 0 -> 338 bytes
 .../71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2  | Bin 0 -> 339 bytes
 .../9fb07d3aba4e2d39eff7d31111515d7df2c981ab  | Bin 0 -> 342 bytes
 .../aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093  | Bin 0 -> 703 bytes
 .../ab4a63521f8afd81d6f5bf117597039cb02d453a  | Bin 0 -> 345 bytes
 .../abe27eee1a472ac0dafe73619602ff44bf7d0657  | Bin 0 -> 322 bytes
 .../b05cbc7820c94bb3ee46dd3869ea39923338b4ba  | Bin 0 -> 353 bytes
 .../be0ccf7b9b4581e01a42e9cad6343c93ccf6f362  | Bin 0 -> 587 bytes
 .../c1937db2c3dff32ff22a53a8b76614602cf41d73  | Bin 0 -> 274 bytes
 .../cc34f9a0d85a22556faffadf90182f7c44bf168a  | Bin 0 -> 664 bytes
 .../e42fc248764aac6f6e0af5b5705272f82101287f  | Bin 0 -> 232 bytes
 .../e72218971bac83f556e86b0a65ec303e2a05eac8  | Bin 0 -> 347 bytes
 .../f7c686af20a3cf5b5c569a570656df83db3fe165  | Bin 0 -> 353 bytes
 tools/run_tests/tests.json                    | 396 ++++++++++++++++++
 19 files changed, 396 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6 b/test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6
new file mode 100644
index 0000000000000000000000000000000000000000..766c0ade0470cb55bccaddf743752f07282fb6ea
GIT binary patch
literal 354
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBI7%
z8$;^<yG3P;3`~p+MGQ<#Y)t=CmFqc**g(ceFfcNt7ZoJyWt5Z@80lpcBqnFamn0_T
zq{bI#R;B8t<|XH+q!u|SD!x`{ENWq3XlMA(!NAxX%D`Bp#iZZz=o{1j{~W=3Ol+ye
zn^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42)&={~3!I{@XAxFmQobObm|{
z7`PdDm{`GD7&u!Vt<_}UU}RunU|?){w3dZ|^F?ZEaS_uIsBg>4G_?LRFj%)dN@QV#
zh!vIDYyJN%wZDk*kw6Q_f0&?#7Sl^Mkg5MumDjQ`?BK9p8*IeMsn)^R^6(KG!&*j8
bt0E2t4$d;hA_m45MutZWJG9m^crX9}#Rg_c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524
new file mode 100644
index 0000000000000000000000000000000000000000..b1776ca2f023fb13a8a25e54852b96db345827ee
GIT binary patch
literal 593
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZl79I
z#>A(<z{ZgJ|87wk69Z!r0}~s_5D5mxM_0gx6qRW(v2m5B+Jlrr%q>FbSgZJ2ow2Be
zfuWt@KL-P2Zzuy}krtDF%Oj@$1{}e9Ol+yen^U>i%2PSYx*Uoaz<_Hl1EUoaADd?R
z|J3IkMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-jt1_s8KM{6}1I2ajNAZ#ef$-=<-
zA~m(Ri0KH(T_PMDMG(J2yh_-AP{%`@ekio%5!3tsa7Qyi9L-R48te>^qgk2w*br`J
z&;UD^L4oNJ)VWMxl?)7w3=GZ)cfsNT?CL}YMvz-UQDCq2|2M<_BF0B89RHcv%0W>D
zjT)wxYzzzx|5KIMvM_LRaPF}GxYmGy!Mf!UNVgU=RzTXNlFJwv81nP-Qj<$E%Q8zU
z<BLlYOH#q63V@6aR_kD7E4M;7x8>1V2F@Z52AKJ44H-ZxTOP47KqNRg88{er003Zh
Bo(li~

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36 b/test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36
new file mode 100644
index 0000000000000000000000000000000000000000..4c0ac757d1a0ee5daa2aeb9f161aaa334a506508
GIT binary patch
literal 236
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7>t(=d8H`QLvmWhq4+&;DF
zXBiWp0)rwOL+XFVqB151#v%qLHjqvU2F6EM*pM|dFff8lDk{?e=}omS0&4~7yjxVp
zv{v!8I-`F}JHvmDRb>o}he8<`i?o>ZTOKj}|IZPu$HbOeyg8MLt>w|$@>GtpE{7rp
zFyLCtz?f>q%ETw8S^obyM^RZR10#bL*ME>Z7#=Awa5L~Qv4B*vFmQ5kGB7YQFfuSO
Kwme$P!T<oH8$2@r

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268 b/test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268
new file mode 100644
index 0000000000000000000000000000000000000000..03dd65a0d05956bd8220193afa9ad8d95cda73e7
GIT binary patch
literal 232
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&c~6;QB<a(^`D6W#Nkb~SF>ee<0`jLEh=N;
zQ($0YNd3=PRK~=>Sj51@2GS?N!1##m3P@`z2Sh6a17kTK*cgz`RC|QZyG3P8YZYHJ
z`nR+*{O4Fz#=v+el!38Gi%Gxb(f|J(!Fo(=sl}U9nb=w$tu0UGDC=@4VgLiKwG51@
zfB!S_v1yk7f6h@<R?5K0pvCnc<O+sI3Jlx~JWMPgl`IUL9Gnacj0}tn42&(0*0L}F
E0J=Clod5s;

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb b/test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb
new file mode 100644
index 0000000000000000000000000000000000000000..3f9d57983d44a8336e1579f9674e782b5de73e93
GIT binary patch
literal 331
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvub`*oh<6Ud@(?jjP-~wWy4VPl17r
zA@%>=qB151#v%qLHjq{c2F6EMz*>vSG(bvI?LkT*rWJv7q!$$=>t&Rb6d37c6eK2R
z$Co4~<)p?JXI7=^rKBe3r=%7!{QLj^zaA4?YVqb&Cbsfaj<PO?A_g$vTFby_#mdCT
zrdj?!^*KjTSt$c!nf-spB8LC}|NqzG0<oAF9w{(zGw?96fweF&wme#^$-u$Lz`_7#
zvoLVJNKGv+VmbnG7DpM_lMD<D)-8_`85kj=MP>F{|8Gm}FJgQo(8BQ_Ca9ss!1R)h
nf#H9u@>&)KP7cl;_G=A;)jAkk9<ed3W#F_b;$Yz5WY_@!j{sf8

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b b/test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b
new file mode 100644
index 0000000000000000000000000000000000000000..356f4a89775e2a9629343fe4f2110a4db9503f7a
GIT binary patch
literal 338
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R&K?Y%28CNq4l4MiGi)0k0aGy&6bIctK2@d
zsEmn^fsG;e|J|Z8CI-eLjRqz*kVXjx#z$A!nApnsQaK=685kHLrm(Sbm8aT+G%7H#
zF{FZZu2p=k&REpa&hVdORT%^0p-=|KA}uEUmPd+A|NnCY>oKvV7H>{vVrzM{wmg-i
z%%O+@47eB=Q>|E;_}Dbd|EE6ZC@3psU}VtZ`p;Ozz{K!Kfq|QWhlvTKl7)ejk%57M
zlY^0gfwAS$S{4RQ=hW2VBBmoCCzk!^;3(44NM*2Yd6dY&$i!C8%)pmgRA#UBA7s>&
zM@xS*?5|>M;rI_yoeT1h5YtOG1_p-zsVr-i88|sOci68DR_kDFdBnzG#lXR^mVvW~
KgOh=SVFv&!ELq+F

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2 b/test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2
new file mode 100644
index 0000000000000000000000000000000000000000..aeebc9b69f216cc733258dcdc90da42a011430ef
GIT binary patch
literal 339
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R?e5oQB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsG;e|J|Z8CI-eL4F)DQkVXjx#z$A!AX*`M85kHL#(;FD+QW3Ff_1J{e67w{
z)Y8uIpJP=S1LL7k2F4;SCjFL2icJ6ia|G)#v85JoPGw?id9=1Xm7~m|hye_^)-o`r
zTCp<mv1yk7Pkqi&P*%#o$e_jbpRtI6iQ$m~12+Q?6B9@&3j-%30|Nsm2O|RmW6Ptp
zEDW5^sj0<9Oh-`MXx;KCk%5tkt(=*GFSV%5Uh6-|s40(@{$|);#n{5}AELUbOhbt2
qB^v_+!~axekXbv{at7OXsBtj1JYr+8V&Gs{%fMO0!N9@Eumb=fN?GLq

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab b/test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab
new file mode 100644
index 0000000000000000000000000000000000000000..028086f5c21494d1306937e4719bfbe9e3c09db6
GIT binary patch
literal 342
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@lA>B}9UatK2@d
zsEmnEfq{)7_5a<XGA0JbA_gWlkSP)jjE}B>O(`nVU}EDcPqharZGs3PbgWf;t<J#E
zUc}hK@SlT$u{V@~u}F(azvU6r|Nk7pdQ5Do%Eg;gnb^uxIm)^miWtCvYb^t#6%!wu
zX8Hfr=Nv_4r3{Q^_Wv1+7__)RB*P;G25tr(CKj+_1_lPkmPczf88{dPSRiaD$;raN
z`69Kri0KHje;XLATOK7cGBRm_-CAa^_5Zh&_5LEpM*=Mz{~;<t0mJl?je&vTf2#6Y
i76wiZ&K>q^4TIG>7+W5(F|1|aEaG6`;AG%n*Z}}gMq7da

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093 b/test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093
new file mode 100644
index 0000000000000000000000000000000000000000..5cde5e081b7a719041012694b6e82e5f15423d08
GIT binary patch
literal 703
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz1C^4_NAit<2zBo0xv?#NrlA)-KiBExn
zjUn~_-J&uk2F4-=CN_{>DF#M{^rC{5dKo1p1x9)q1&PVo@g<2#IjQl*nN_KJsd>ry
zDXB#aii)q*8;e>P7~0kUb1*RWhB7b~X))=yJYxF)pCee0i7mBob1D;Cc`8R)7XuV<
ztz}@eV&Y@dEdQVSoTI3$l!39#{y$?8!~g&P|7&r9SWFC$6d1S}c$iordN^Ait<_}U
zU}RunU|?){w3dZ|^F?ZEaTU`Ms0Yi+G_?LRFj%)dN@QS!h!vIDYyJN%wZDk*kw6Q_
zf0&?#7Sl^M1_p-zsmkzh+JhWWTK}1t7}(1Bf}J>01>dsUtJyNKah2Pr;tDDW2F6EM
zz`<NprU6o#Y7bHhwGR@w{h-iYtN2=-5gb+wSi*{pNiVe+9##%T5RZeyij~N~Vua`c
z1rTar@xDk+1%(+0=MMX|SW-c85i}r~^x2sHrz+c<2J3YcF|n0%a1b4^e5o8eipn&!
z7(hDUK@7Lm=szgt7#Ld^86Gikaxes|z5oCJe+OgBBQ}P$44hU)9BUao7#KMIG3)>U
D_b<-?

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a b/test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a
new file mode 100644
index 0000000000000000000000000000000000000000..5adc2cf86264c038268355099592c1cd238bfbd9
GIT binary patch
literal 345
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@lA>B}BrSjjP-~
zwWy4VPl17rA@%>=q9P^+#v%qLHjptA42+MifQ>0C(_mubDo?csDQyA?{bwuUU`S<9
zxLZ`lv{v!8I%81_14BE*e+~x5-cSa{A}uEUmPbtg|8oTEF|nm87jI5wVk=MODC=@4
zVgLiKwG50_Onhvb<^NNka}<@8GBB3e|7R>>(BcA-4388TxEXkuSip)I7#J8^9<9}6
z;9wMBfv}+@Ckq4Ti`3NOBBmqAK5k&JZh4f*$jGDxax6ztnZ4Hk-%{55ix?jXv~c`~
wC<TQL(@Qo628REs%4=B|I5{|X*snDWR_kDFdBn!BmVvW~gMovSfrDWO0C4YIlmGw#

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657 b/test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657
new file mode 100644
index 0000000000000000000000000000000000000000..245d0d651fc65132d76bb36968bfa8afb0eb7ee7
GIT binary patch
literal 322
zcmZQ7PAw|aC}QCF&&0%5&X>x;QB<a(^`D7}L9(3Bi6hnCmWhq4+&;CajEPTyfsKJV
z_5a<XGA0JbA_gY5qO#N?2?oYTSHL=p$}~V~Q|*h&nB*Xa6@j!sbgWf;t<G4~!obkZ
z@SlT$u{V@~u}F(azvU6r|Nk7pdQ5Do#hX)^*veBm%DNni7{GvQEd!$!D-$1^X8Hfr
z=Nv_4r3{Q^_Wv1+7__)RBoo6U1qN;g9wrvBat6khM{5~47#Ua?z)Thf&KIev#YIq`
zfjkDXzzXCSw(|d}97RkV!Fop^PKEeeFfk{G0VKeYYOj`@k(ig4niF4Kl9-&G%EZ86
W6`xd^nVMOanUj)Q1P%h0l1c!VKvc{C

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba b/test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba
new file mode 100644
index 0000000000000000000000000000000000000000..1ef06a4198d81bfbd7f5bd1112fbf9487154662b
GIT binary patch
literal 353
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz5BrmbJAit<2zBo0xv?#NrlA)-KiBI7%
z8$;^<y9H&83`~p+MGQ<#Y)t=CmFqc**g(ceFfcNt7ZoJyWt5Z@80lpcBqnFamn0_T
zq{bI#R;B8t<|XH+q!u|SD!x`{ENWq3XlMA(!NAxX%D`Bp#iZZz=o{1j{~W=3Ol+ye
zn^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42)&={~3!I{@XAxFmQobObm|{
z7`PdDm{`GD7&u!Vt<_}UU}RunU|?){w3dZ|^F?ZL5z`T<XUobowEi<NShqY%WMG7d
z6_wd*{r@eszliaXKnurzn4pFh(@Qpxq5o5r*Rn9|;ILmCY|P22*1_2F@DUrsT1HN*
aA`S))&N9X#2F4afhDQuLwAM0sFaQ8gcxB%J

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362 b/test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362
new file mode 100644
index 0000000000000000000000000000000000000000..985e30adcd6cb3ce2b74cba79f1a409f63ec1e89
GIT binary patch
literal 587
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
zKjU4dGEIh}A_gWlkWL8(#z$A!nAqa;i%L`Sit>{(^B5RG1{IZQfV8ICBedQvDq~u!
z_*$K@sHL6ZKL-Qjp-=|KA}uEUmPbtg|8oTEF|nl<Z%$=mYk6c<p2|_y<xs=`23%_y
z7_C^D_#U!p*8fj^&QVlW%D~8=#r2=Dh=GaWkpcrZ0}m4mNGS^gCkH1310w??0|R5r
zqqQsyoX)AK#YId<kiEyiVBPX4k%5tkt(=*GFO{RH%wFsNZ-)IvjE`D4{zFt2m1zhu
z2__a~GGGlOHm(0J*%%lg0Tt|oHK;)TWdJ!57E%o9MFq)v86_nJMtT_qiOJdVC5cHn
zsqw{`RjGQZdCB=HsYMKmkPu>EfP_&mjxfR+Kx~@j@bD?K2L;dn|NsBP1B&5)s`6SE
z21t0Zg2D?DN}3EDoE)4x?AMwyGO$2|SQvuUIyhgTgk2dZX)v}tVqjom$V+8oSj%8#
P#aYC`z`@CoxuXmKN;96w

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73 b/test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73
new file mode 100644
index 0000000000000000000000000000000000000000..eef122a998be31f15a9afc85b32ef9f9bef92218
GIT binary patch
literal 274
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}L9(3BiNjvamWhq4+&;CajEPTyfsKJV
z_5a<XGA0JbA_gWlkWL8(#z$AcI*ZCQKx$L%i^`bfAchrzv_N#MReY_^Sk%J6(9ZCm
zgMqO(l!38Gi%Gxb5!3(w9Km`_Y^lYYQ<>PxQ#s1I9EupgfNL!SqZKO?ADd?R|J3Ik
zMP;Q7jAi!!8H*USxIiQm!y^R-ZU!DE7O-*##+FBG88{djSQx-e76#6jsj0<9P@jQ3
c2C~2k<QKN`|EU~BOdP>_M<7mx`kR3P00m`5+yDRo

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a b/test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a
new file mode 100644
index 0000000000000000000000000000000000000000..e9fa513652cd33d83f1dc3c623f2d8ff194d32dc
GIT binary patch
literal 664
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<a(^`D7}fvud+i6hls&6bIYO@l8LBF@HDZr_($
zRK~=oz`(|k`u}cG8509z5d#w&$P@_%#z$AcrWBQFFtKr!r`m&*LJTfK=vb@xTAi_|
zg@K`+;XelhV{a$}W04k<e#;}K|Nl9H^_bXFi#Mk-v6ZKClywy`fC1N921Y9;J~qwr
z|EbS8ipokE7|ZPcGZryuae+uChDQnv+zdQSEMV0Pj4hAWYBF#zGO#d!*-(;`g@N-$
zYHD#2(-DZHAiiQ?ux@#j$iT>?1$Df=*8ks9`->PK3AAwhho}Sv3)4$B1_p-zsmg0v
z7&tjNci68r2v+N0Y<a}SfHxe2p#cdBJ$!-3m|j$ntXEK!nVVQt8DCnQS`?p{o|;#}
zP^7SyfwPE%fsFyIBBP|Fz(_BnATc>Rz9cazCpEq}vno|DB{exeCAEkFH2@uuLy#3)
z5dQ!F|36wVg8az<2{hzj#0b7JP-0<VVBp|n;9%GR4MjvC-X<y#4Pk+}mVwi%hy!HU
F4geHrwxs|7

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f b/test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f
new file mode 100644
index 0000000000000000000000000000000000000000..3431cfa6732e112f98dd235546cfc0ee23d7cdd5
GIT binary patch
literal 232
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7>t(=d8H`QLvmWhq4+&;Ca
zjEPTyfsG;cKVwlD17i^b6B|gI1OwwEwkyaw85kHr#uSxlfHbDsBQ)MEDq~u!_?pqb
zrJdnF$Eq?0#zUbDj73^Z`Yn%`{{QC))?;EzE#92U#Mbg?ZFwq3S(if*0~m0vWnfIT
zVrAlE(=7l0oTI3$l!1{!i|aqg84QmU7`PdDm{>q6Sr|AuI2jli85kKD7+W5#WnlmS
DbXPjy

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8
new file mode 100644
index 0000000000000000000000000000000000000000..032e07634e5a41f97a0974875a09dce03ae1529e
GIT binary patch
literal 347
zcmZQ7PAw`+En?vK&&0%5&cUI<S5~Bz`k#r3fvud6Bh_BbmWhq4+&;CajEPTyfsG;c
z|J|Z8CI-eL1|~L;MhOPSM_1U&`BFKG$}~VqQ|(ceu2p=k&REpa&LH-mgMsl-C<9}W
z7L)!XrvLvrg7uiV7>YNiGO?AXa+GyB6fuAS*IEWfD^?~xHqG+?sn0oz%1Rj+8ML_m
zGZtwvFflw*VBlupVPaumU{GLS{Qv*|e~>1|mPcz@7?{|Y{#&IgM<}XuI;W-<7cm`S
zVk@^w<p8-&>pug7b&Gl;10xgEx%OKBe>3baVtmxX@gF9pp~du)je&vTf2#6Y76yhg
z#v+Cm2FA6V9GpAs*BS?_bucn8GCg8rQdVbB<!E`t#;~@i%!9%HKVy*<17i!rqqUqx
N91I+s3=BIs7y!v^Tqpnl

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165
new file mode 100644
index 0000000000000000000000000000000000000000..bebe30df79321df778cb28301a233a454ee2f780
GIT binary patch
literal 353
zcmZQ7PAw`+En?vK&&0%5&X>x;QB<bEruDz5BrmbJAit<2zBo0xv?#NrlA)-KiBI7%
z8$;^<y9H&83`~p+MGQ<#Y)t=CmFqc**g(ceFfcNt7ZoJyWt5Z@80lpcBqnFamn0_T
zq{bI#R;B8t<|XH+q!u|SD!x`{ENWq3XlMA(!NAxX%D`Bp#iZZz=o{1j{~W=3Ol+ye
zn^T$C%2PSYx*Uoaz<_Hl1EUoy6Cayq`Tx}C97ScN42)&={~3!I{@XAxFmQobObm|{
z7`PdDm{`GD7&u!Vt<_}UU}RunU|?){w3dZ|^F?ZL5z`T<XUobowEi<NShqY%WMG7d
z6_wd*{r@eszliaXKnurzn4pFh(@Qo61}ldDsmg0v7<O>juMIZl<W%cmY<c*IjbSY#
br&SRL0|#drV-W*m3nRlLh8<dK89W#OT9RfN

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 5e79189b0a..97d43d7894 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23938,6 +23938,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb"
@@ -24070,6 +24092,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin"
@@ -24136,6 +24180,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24"
@@ -24774,6 +24840,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
@@ -25280,6 +25368,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
@@ -25808,6 +25918,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71"
@@ -28360,6 +28492,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
@@ -30384,6 +30538,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
@@ -30890,6 +31066,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
@@ -30934,6 +31132,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85"
@@ -30978,6 +31198,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9"
@@ -31066,6 +31308,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
@@ -32034,6 +32298,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
@@ -32144,6 +32430,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
@@ -32584,6 +32892,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a"
@@ -34718,6 +35048,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d"
@@ -34916,6 +35268,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
@@ -35862,6 +36236,28 @@
       "posix"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165"
+    ], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "windows", 
+      "posix"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716"
-- 
GitLab


From 653ea75ff571c7dc04371372068d240f4aa11983 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 25 Apr 2016 07:40:23 -0700
Subject: [PATCH 179/525] Properly shutdown pollsets before destroying them

---
 test/core/surface/concurrent_connectivity_test.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/test/core/surface/concurrent_connectivity_test.c b/test/core/surface/concurrent_connectivity_test.c
index a2fdf73596..28ddf58cc8 100644
--- a/test/core/surface/concurrent_connectivity_test.c
+++ b/test/core/surface/concurrent_connectivity_test.c
@@ -142,6 +142,12 @@ void bad_server_thread(void *vargs) {
   gpr_free(args->addr);
 }
 
+static void done_pollset_shutdown(grpc_exec_ctx *exec_ctx, void *pollset,
+                                  bool success) {
+  grpc_pollset_destroy(pollset);
+  gpr_free(pollset);
+}
+
 int main(int argc, char **argv) {
   struct server_thread_args args;
   memset(&args, 0, sizeof(args));
@@ -207,8 +213,11 @@ int main(int argc, char **argv) {
 
   gpr_atm_rel_store(&args.stop, 1);
   gpr_thd_join(server);
-  grpc_pollset_destroy(args.pollset);
-  gpr_free(args.pollset);
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  grpc_pollset_shutdown(
+      &exec_ctx, args.pollset,
+      grpc_closure_create(done_pollset_shutdown, args.pollset));
+  grpc_exec_ctx_finish(&exec_ctx);
 
   grpc_shutdown();
   return 0;
-- 
GitLab


From 9a16376dbc848f363c0e58ae4f72ed9a6e0523ea Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Tue, 19 Apr 2016 13:24:18 -0700
Subject: [PATCH 180/525] php: prepare for release 0.14

---
 package.xml                    | 23 +++++++++++++++++++----
 templates/package.xml.template | 23 +++++++++++++++++++----
 2 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/package.xml b/package.xml
index d192ebde2c..3ae810df5e 100644
--- a/package.xml
+++ b/package.xml
@@ -10,7 +10,7 @@
   <email>grpc-packages@google.com</email>
   <active>yes</active>
  </lead>
- <date>2016-03-01</date>
+ <date>2016-04-19</date>
  <time>16:06:07</time>
  <version>
   <release>0.14.0</release>
@@ -22,7 +22,7 @@
  </stability>
  <license>BSD</license>
  <notes>
-- Increase unit test code coverage #5225
+- destroy grpc_byte_buffer after startBatch #6096
  </notes>
  <contents>
   <dir baseinstalldir="/" name="/">
@@ -996,8 +996,8 @@ Update to wrap gRPC C Core version 0.10.0
   </release>
   <release>
    <version>
-    <release>0.14.0</release>
-    <api>0.14.0</api>
+    <release>0.8.1</release>
+    <api>0.8.1</api>
    </version>
    <stability>
     <release>beta</release>
@@ -1009,5 +1009,20 @@ Update to wrap gRPC C Core version 0.10.0
 - Increase unit test code coverage #5225
    </notes>
   </release>
+  <release>
+   <version>
+    <release>0.14.0</release>
+    <api>0.14.0</api>
+   </version>
+   <stability>
+    <release>beta</release>
+    <api>beta</api>
+   </stability>
+   <date>2016-04-19</date>
+   <license>BSD</license>
+   <notes>
+- destroy grpc_byte_buffer after startBatch #6096
+   </notes>
+  </release>
  </changelog>
 </package>
diff --git a/templates/package.xml.template b/templates/package.xml.template
index 2f498c02f4..63132dac94 100644
--- a/templates/package.xml.template
+++ b/templates/package.xml.template
@@ -12,7 +12,7 @@
     <email>grpc-packages@google.com</email>
     <active>yes</active>
    </lead>
-   <date>2016-03-01</date>
+   <date>2016-04-19</date>
    <time>16:06:07</time>
    <version>
     <release>${settings.php_version.php()}</release>
@@ -24,7 +24,7 @@
    </stability>
    <license>BSD</license>
    <notes>
-  - Increase unit test code coverage #5225
+  - destroy grpc_byte_buffer after startBatch #6096
    </notes>
    <contents>
     <dir baseinstalldir="/" name="/">
@@ -157,8 +157,8 @@
     </release>
     <release>
      <version>
-      <release>${settings.php_version.php()}</release>
-      <api>${settings.php_version.php()}</api>
+      <release>0.8.1</release>
+      <api>0.8.1</api>
      </version>
      <stability>
       <release>beta</release>
@@ -170,5 +170,20 @@
   - Increase unit test code coverage #5225
      </notes>
     </release>
+    <release>
+     <version>
+      <release>${settings.php_version.php()}</release>
+      <api>${settings.php_version.php()}</api>
+     </version>
+     <stability>
+      <release>beta</release>
+      <api>beta</api>
+     </stability>
+     <date>2016-04-19</date>
+     <license>BSD</license>
+     <notes>
+  - destroy grpc_byte_buffer after startBatch #6096
+     </notes>
+    </release>
    </changelog>
   </package>
-- 
GitLab


From f4bc99eb004f11e4fd75cccb863b65e9e6cbe414 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 09:13:38 -0700
Subject: [PATCH 181/525] address comments

---
 .../Program.cs                                | 35 ++++++++++++++++++-
 .../StressTestClient.cs                       | 34 ++++++++++++++----
 2 files changed, 62 insertions(+), 7 deletions(-)

diff --git a/src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs b/src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs
index 4285146756..dffdf22fa5 100644
--- a/src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs
+++ b/src/csharp/Grpc.IntegrationTesting.StressClient/Program.cs
@@ -1,4 +1,37 @@
-using System;
+#region Copyright notice and license
+
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
 
 namespace Grpc.IntegrationTesting.StressClient
 {
diff --git a/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs b/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
index b12b28b9a3..8db691cb04 100644
--- a/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
@@ -269,6 +269,8 @@ namespace Grpc.IntegrationTesting
 
         class MetricsServiceImpl : MetricsService.MetricsServiceBase 
         {
+            const string GaugeName = "csharp_overall_qps";
+
             readonly Histogram histogram;
             readonly WallClockStopwatch wallClockStopwatch = new WallClockStopwatch();
 
@@ -277,20 +279,40 @@ namespace Grpc.IntegrationTesting
                 this.histogram = histogram;
             }
 
-            public override async Task GetAllGauges(EmptyMessage request, IServerStreamWriter<GaugeResponse> responseStream, ServerCallContext context)
+            public override Task<GaugeResponse> GetGauge(GaugeRequest request, ServerCallContext context)
             {
-                var snapshot = histogram.GetSnapshot(true);
-                var elapsedSnapshot = wallClockStopwatch.GetElapsedSnapshot(true);
+                if (request.Name == GaugeName)
+                {
+                    long qps = GetQpsAndReset();
 
-                double qps = snapshot.Count / elapsedSnapshot.Seconds;
+                    return Task.FromResult(new GaugeResponse
+                    {
+                        Name = GaugeName,
+                        LongValue = qps
+                    });
+                }
+                throw new RpcException(new Status(StatusCode.InvalidArgument, "Gauge does not exist"));
+            }
+
+            public override async Task GetAllGauges(EmptyMessage request, IServerStreamWriter<GaugeResponse> responseStream, ServerCallContext context)
+            {
+                long qps = GetQpsAndReset();
 
                 var response = new GaugeResponse
                 {
-                    Name = "csharp_overall_qps",
-                    DoubleValue = qps
+                    Name = GaugeName,
+                    LongValue = qps
                 };
                 await responseStream.WriteAsync(response);
             }
+
+            long GetQpsAndReset()
+            {
+                var snapshot = histogram.GetSnapshot(true);
+                var elapsedSnapshot = wallClockStopwatch.GetElapsedSnapshot(true);
+
+                return (long) (snapshot.Count / elapsedSnapshot.Seconds);
+            }
         }
     }
 }
-- 
GitLab


From 482ce5e3a4c8103dbdd20f02c9223b821075dc00 Mon Sep 17 00:00:00 2001
From: Craig Tiller <craig.tiller@gmail.com>
Date: Mon, 25 Apr 2016 13:07:41 -0700
Subject: [PATCH 182/525] Fix typo

---
 src/core/lib/iomgr/resolve_address_windows.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/core/lib/iomgr/resolve_address_windows.c b/src/core/lib/iomgr/resolve_address_windows.c
index a65089c017..914736234d 100644
--- a/src/core/lib/iomgr/resolve_address_windows.c
+++ b/src/core/lib/iomgr/resolve_address_windows.c
@@ -167,8 +167,8 @@ static void resolve_address_impl(grpc_exec_ctx *exec_ctx, const char *name,
   grpc_executor_enqueue(&r->request_closure, 1);
 }
 
-void (*grpc_resolved_address)(grpc_exec_ctx *exec_ctx, const char *name,
-                              const char *default_port, grpc_resolve_cb cb,
-                              void *arg) = resolve_address_impl;
+void (*grpc_resolve_address)(grpc_exec_ctx *exec_ctx, const char *name,
+                             const char *default_port, grpc_resolve_cb cb,
+                             void *arg) = resolve_address_impl;
 
 #endif
-- 
GitLab


From 23a9ca5184d770bfe9893195d4bc5bee908928ec Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 13:14:11 -0700
Subject: [PATCH 183/525] fix assembly version attributes for C#

---
 src/csharp/Grpc.Core/Version.cs                       |  3 ++-
 src/csharp/Grpc.Core/VersionInfo.cs                   | 11 +++++++++--
 .../src/csharp/Grpc.Core/VersionInfo.cs.template      | 11 +++++++++--
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/csharp/Grpc.Core/Version.cs b/src/csharp/Grpc.Core/Version.cs
index 8a26bd8362..f5c44fd098 100644
--- a/src/csharp/Grpc.Core/Version.cs
+++ b/src/csharp/Grpc.Core/Version.cs
@@ -33,5 +33,6 @@
 
 using System.Reflection;
 
-// The current version of gRPC C#.
 [assembly: AssemblyVersion(Grpc.Core.VersionInfo.CurrentAssemblyVersion)]
+[assembly: AssemblyFileVersion(Grpc.Core.VersionInfo.CurrentAssemblyFileVersion)]
+[assembly: AssemblyInformationalVersion(Grpc.Core.VersionInfo.CurrentVersion)]
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index 9014a13f40..f7a9cb9c1c 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -35,13 +35,20 @@ namespace Grpc.Core
 {
     /// <summary>
     /// Provides info about current version of gRPC.
+    /// See https://codingforsmarties.wordpress.com/2016/01/21/how-to-version-assemblies-destined-for-nuget/
+    /// for rationale about assembly versioning.
     /// </summary>
     public static class VersionInfo
     {
         /// <summary>
-        /// Current version of gRPC C# assemblies
+        /// Current <c>AssemblyVersion</c> attribute of gRPC C# assemblies
         /// </summary>
-        public const string CurrentAssemblyVersion = "0.14.0.0";
+        public const string CurrentAssemblyVersion = "1.0.0.0";
+
+        /// <summary>
+        /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
+        /// </summary>
+        public const string CurrentAssemblyFileVersion = "0.14.0.0";
 
         /// <summary>
         /// Current version of gRPC C#
diff --git a/templates/src/csharp/Grpc.Core/VersionInfo.cs.template b/templates/src/csharp/Grpc.Core/VersionInfo.cs.template
index 3ca111e72b..96cf2ee17f 100644
--- a/templates/src/csharp/Grpc.Core/VersionInfo.cs.template
+++ b/templates/src/csharp/Grpc.Core/VersionInfo.cs.template
@@ -37,13 +37,20 @@
   {
       /// <summary>
       /// Provides info about current version of gRPC.
+      /// See https://codingforsmarties.wordpress.com/2016/01/21/how-to-version-assemblies-destined-for-nuget/
+      /// for rationale about assembly versioning.
       /// </summary>
       public static class VersionInfo
       {
           /// <summary>
-          /// Current version of gRPC C# assemblies
+          /// Current <c>AssemblyVersion</c> attribute of gRPC C# assemblies
           /// </summary>
-          public const string CurrentAssemblyVersion = "${settings.version.major}.${settings.version.minor}.${settings.version.patch}.0";
+          public const string CurrentAssemblyVersion = "1.0.0.0";
+
+          /// <summary>
+          /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
+          /// </summary>
+          public const string CurrentAssemblyFileVersion = "${settings.version.major}.${settings.version.minor}.${settings.version.patch}.0";
 
           /// <summary>
           /// Current version of gRPC C#
-- 
GitLab


From cc8a4b384ca247db2c899b6a3b9c44e378755fed Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 13:40:00 -0700
Subject: [PATCH 184/525] disable warnings for use of our own obsolete
 interfaces

---
 src/compiler/csharp_generator.cc | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 69e2738d53..4def6c5e31 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -350,10 +350,12 @@ void GenerateServerClass(Printer* out, const ServiceDescriptor *service) {
 
 void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
   out->Print("// client stub\n");
+  out->Print("#pragma warning disable 0618\n");
   out->Print(
       "public class $name$ : ClientBase<$name$>, $interface$\n",
       "name", GetClientClassName(service),
       "interface", GetClientInterfaceName(service));
+  out->Print("#pragma warning restore 0618\n");
   out->Print("{\n");
   out->Indent();
 
@@ -480,10 +482,12 @@ void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor *service,
                                bool use_server_class) {
   out->Print(
       "// creates service definition that can be registered with a server\n");
+  out->Print("#pragma warning disable 0618\n");
   out->Print(
       "public static ServerServiceDefinition BindService($interface$ serviceImpl)\n",
       "interface", use_server_class ? GetServerClassName(service) :
           GetServerInterfaceName(service));
+  out->Print("#pragma warning restore 0618\n");
   out->Print("{\n");
   out->Indent();
 
-- 
GitLab


From 55fad175dd3909f08ecda6270b324fa4098d0efe Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 13:42:28 -0700
Subject: [PATCH 185/525] regenerate C# protos

---
 src/csharp/Grpc.Examples/MathGrpc.cs           |  6 ++++++
 src/csharp/Grpc.HealthCheck/HealthGrpc.cs      |  6 ++++++
 .../Grpc.IntegrationTesting/MetricsGrpc.cs     |  6 ++++++
 .../Grpc.IntegrationTesting/ServicesGrpc.cs    | 12 ++++++++++++
 src/csharp/Grpc.IntegrationTesting/TestGrpc.cs | 18 ++++++++++++++++++
 5 files changed, 48 insertions(+)

diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index f3bb0d1cdc..1a6482df90 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -103,7 +103,9 @@ namespace Math {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class MathClient : ClientBase<MathClient>, IMathClient
+    #pragma warning restore 0618
     {
       public MathClient(Channel channel) : base(channel)
       {
@@ -167,7 +169,9 @@ namespace Math {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMath serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Div, serviceImpl.Div)
@@ -177,7 +181,9 @@ namespace Math {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(MathBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Div, serviceImpl.Div)
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index 72e11cca3a..e7f779753d 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -56,7 +56,9 @@ namespace Grpc.Health.V1 {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class HealthClient : ClientBase<HealthClient>, IHealthClient
+    #pragma warning restore 0618
     {
       public HealthClient(Channel channel) : base(channel)
       {
@@ -96,14 +98,18 @@ namespace Grpc.Health.V1 {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IHealth serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Check, serviceImpl.Check).Build();
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(HealthBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Check, serviceImpl.Check).Build();
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index cc01ae91a1..11c1572c19 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -72,7 +72,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class MetricsServiceClient : ClientBase<MetricsServiceClient>, IMetricsServiceClient
+    #pragma warning restore 0618
     {
       public MetricsServiceClient(Channel channel) : base(channel)
       {
@@ -120,7 +122,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMetricsService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
@@ -128,7 +132,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(MetricsServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index 46b16cf202..18cf0672e3 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -71,7 +71,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class BenchmarkServiceClient : ClientBase<BenchmarkServiceClient>, IBenchmarkServiceClient
+    #pragma warning restore 0618
     {
       public BenchmarkServiceClient(Channel channel) : base(channel)
       {
@@ -119,7 +121,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IBenchmarkService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
@@ -127,7 +131,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(BenchmarkServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
@@ -241,7 +247,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class WorkerServiceClient : ClientBase<WorkerServiceClient>, IWorkerServiceClient
+    #pragma warning restore 0618
     {
       public WorkerServiceClient(Channel channel) : base(channel)
       {
@@ -313,7 +321,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IWorkerService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_RunServer, serviceImpl.RunServer)
@@ -323,7 +333,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(WorkerServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_RunServer, serviceImpl.RunServer)
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index 31746cbe71..3b915f6df1 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -138,7 +138,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class TestServiceClient : ClientBase<TestServiceClient>, ITestServiceClient
+    #pragma warning restore 0618
     {
       public TestServiceClient(Channel channel) : base(channel)
       {
@@ -226,7 +228,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(ITestService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_EmptyCall, serviceImpl.EmptyCall)
@@ -238,7 +242,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(TestServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_EmptyCall, serviceImpl.EmptyCall)
@@ -303,7 +309,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class UnimplementedServiceClient : ClientBase<UnimplementedServiceClient>, IUnimplementedServiceClient
+    #pragma warning restore 0618
     {
       public UnimplementedServiceClient(Channel channel) : base(channel)
       {
@@ -343,14 +351,18 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IUnimplementedService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(UnimplementedServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
@@ -429,7 +441,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class ReconnectServiceClient : ClientBase<ReconnectServiceClient>, IReconnectServiceClient
+    #pragma warning restore 0618
     {
       public ReconnectServiceClient(Channel channel) : base(channel)
       {
@@ -485,7 +499,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IReconnectService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Start, serviceImpl.Start)
@@ -493,7 +509,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(ReconnectServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Start, serviceImpl.Start)
-- 
GitLab


From 57d1e082689c96e2721122748b08583d6b63d394 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Mon, 25 Apr 2016 15:31:39 -0700
Subject: [PATCH 186/525] resolve comments

---
 src/compiler/cpp_plugin.cc       | 20 +++++++++++++-------
 src/compiler/generator_helpers.h |  2 +-
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index f1a1d80939..a4c6f011c7 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -43,7 +43,7 @@
 #include "src/compiler/cpp_generator_helpers.h"
 #include "src/compiler/generator_helpers.h"
 
-using grpc_generator::GetComments;
+using grpc_generator::GetCppComments;
 
 class ProtoBufMethod : public grpc_cpp_generator::Method {
  public:
@@ -75,10 +75,12 @@ class ProtoBufMethod : public grpc_cpp_generator::Method {
     return method_->client_streaming() && method_->server_streaming();
   }
 
-  grpc::string GetLeadingComments() const { return GetComments(method_, true); }
+  grpc::string GetLeadingComments() const {
+    return GetCppComments(method_, true);
+  }
 
   grpc::string GetTrailingComments() const {
-    return GetComments(method_, false);
+    return GetCppComments(method_, false);
   }
 
  private:
@@ -99,11 +101,11 @@ class ProtoBufService : public grpc_cpp_generator::Service {
   };
 
   grpc::string GetLeadingComments() const {
-    return GetComments(service_, true);
+    return GetCppComments(service_, true);
   }
 
   grpc::string GetTrailingComments() const {
-    return GetComments(service_, false);
+    return GetCppComments(service_, false);
   }
 
  private:
@@ -154,9 +156,13 @@ class ProtoBufFile : public grpc_cpp_generator::File {
           new ProtoBufPrinter(str));
   }
 
-  grpc::string GetLeadingComments() const { return GetComments(file_, true); }
+  grpc::string GetLeadingComments() const {
+    return GetCppComments(file_, true);
+  }
 
-  grpc::string GetTrailingComments() const { return GetComments(file_, false); }
+  grpc::string GetTrailingComments() const {
+    return GetCppComments(file_, false);
+  }
 
  private:
   const grpc::protobuf::FileDescriptor *file_;
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
index 4e32e76a05..93bf3b85d3 100644
--- a/src/compiler/generator_helpers.h
+++ b/src/compiler/generator_helpers.h
@@ -258,7 +258,7 @@ inline grpc::string GenerateCommentsWithPrefix(
 // Get leading or trailing comments in a string. Comment lines start with "// ".
 // Leading detached comments are put in in front of leading comments.
 template <typename DescriptorType>
-inline grpc::string GetComments(const DescriptorType *desc, bool leading) {
+inline grpc::string GetCppComments(const DescriptorType *desc, bool leading) {
   std::vector<grpc::string> out;
   if (leading) {
     grpc_generator::GetComment(
-- 
GitLab


From 11c83e905639ab63252e7e2bf130484771f2577a Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 25 Apr 2016 16:31:15 -0700
Subject: [PATCH 187/525] Dont run fuzzer outputs on windows, mac (save some
 CPU)

---
 tools/buildgen/plugins/make_fuzzer_tests.py |     4 +-
 tools/run_tests/tests.json                  | 25652 ++++--------------
 2 files changed, 5133 insertions(+), 20523 deletions(-)

diff --git a/tools/buildgen/plugins/make_fuzzer_tests.py b/tools/buildgen/plugins/make_fuzzer_tests.py
index e8e1bd0aa6..9d0006973a 100644
--- a/tools/buildgen/plugins/make_fuzzer_tests.py
+++ b/tools/buildgen/plugins/make_fuzzer_tests.py
@@ -50,8 +50,8 @@ def mako_plugin(dictionary):
               'name': new_target['name'],
               'args': [fn],
               'exclude_configs': [],
-              'platforms': ['linux', 'mac', 'windows', 'posix'],
-              'ci_platforms': ['linux', 'mac', 'windows', 'posix'],
+              'platforms': ['linux'],
+              'ci_platforms': ['linux'],
               'flaky': False,
               'language': 'c',
               'cpu_cost': 0.1,
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 97d43d7894..5b9a8fade2 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23261,10 +23261,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/00.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23272,10 +23269,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23283,10 +23277,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/01.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23294,10 +23285,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23305,10 +23293,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0159f564d91869bc07239f5551a493c2845a4524"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23316,10 +23301,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23327,10 +23309,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/02.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23338,10 +23317,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23349,10 +23325,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0211f960c2da343c3cde6406e650d73278e01e47"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23360,10 +23333,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23371,10 +23341,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0236f28708dcc2e044d67ecf93539ce6c33a727a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23382,10 +23349,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23393,10 +23357,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/02434dcdaca96b9eacee76eb351e99f015eaa05e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23404,10 +23365,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23415,10 +23373,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/03.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23426,10 +23381,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23437,10 +23389,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0302b90625ac9f61f45b45d043fda23b5472d711"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23448,10 +23397,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23459,10 +23405,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/04.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23470,10 +23413,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23481,10 +23421,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0433cabb8c28820bda0a6eac35d17d120f1b6865"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23492,10 +23429,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23503,10 +23437,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0452ea591951af85724608917fda16926dad7451"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23514,10 +23445,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23525,10 +23453,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0468ab4bf4f7e10b680f43efae4bf9686834d220"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23536,10 +23461,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23547,10 +23469,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23558,10 +23477,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23569,10 +23485,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/05.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23580,10 +23493,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23591,10 +23501,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0539bf31b2310091ce30d0123142d63589939105"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23602,10 +23509,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23613,10 +23517,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0542a0e5aeb1658cc965724bfced56770569263b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23624,10 +23525,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23635,10 +23533,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/056e56878b249c7fd0b95576b352ab2f4d46582e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23646,10 +23541,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23657,10 +23549,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/05dee1c3847f2bca29bd14ed701ce64999b298b2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23668,10 +23557,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23679,10 +23565,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/06.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23690,10 +23573,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23701,10 +23581,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/064d3beeef29a647deb1b345426ea7212de71cfe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23712,10 +23589,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23723,10 +23597,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/067298a97640cc5e212647864d21bc1fa6bb7e75"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23734,10 +23605,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23745,10 +23613,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23756,10 +23621,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23767,10 +23629,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/070c7005e63abba72c6bc1a0ee6d44e340f2d2be"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23778,10 +23637,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23789,10 +23645,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07674d39538e07c29342cb2ee8856bc71fc06638"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23800,10 +23653,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23811,10 +23661,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07aa7d6c71878eb78b25ca12d79082f70ae7f64c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23822,10 +23669,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23833,10 +23677,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07ae5ed3dedbd83e376c892a9546cc0cd733c26f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23844,10 +23685,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23855,10 +23693,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/07cc8b298d1502d0c30f3f160871e66e5a1f3fe1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23866,10 +23701,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23877,10 +23709,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/08.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23888,10 +23717,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23899,10 +23725,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/085865a209776911782f592c9f30ffe0ad3814a0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23910,10 +23733,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23921,10 +23741,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/09.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23932,10 +23749,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23943,10 +23757,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/092b85d1f5c922287e476e6e75ad8a0a80c779a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23954,10 +23765,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23965,10 +23773,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/09923e3ef02243b1902406c637f9516cbe99d7cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23976,10 +23781,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -23987,10 +23789,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0a.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -23998,10 +23797,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24009,10 +23805,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0a71ae781345f9ee2b08008a81f9055e6c1d5256"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24020,10 +23813,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24031,10 +23821,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0a7aad5682c304b0cbda31445b221238e0293a9f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24042,10 +23829,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24053,10 +23837,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0b.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24064,10 +23845,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24075,10 +23853,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0b6f0ea99a329e054032e6c292b99c3bcad0c9f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24086,10 +23861,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24097,10 +23869,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0bbd89b21cfd192174c25803c7f1afeec88e6524"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24108,10 +23877,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24119,10 +23885,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0c.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24130,10 +23893,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24141,10 +23901,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0d.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24152,10 +23909,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24163,10 +23917,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0d16d6c2c128ac4ee7b596b763822b4194968533"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24174,10 +23925,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24185,10 +23933,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0d8bd296d63a5aca5f80d7a7d00387048babda36"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24196,10 +23941,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24207,10 +23949,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0d9d8241c5568fea586d21f91ae1891dac31ba24"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24218,10 +23957,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24229,10 +23965,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0e.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24240,10 +23973,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24251,10 +23981,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0e2a9ad3aacba320563095a874768a9e546a3db2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24262,10 +23989,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24273,10 +23997,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24284,10 +24005,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24295,10 +24013,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0f2831e0f73521a0991e11115c16847afca16bb3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24306,10 +24021,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24317,10 +24029,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/0fa216ec645b3973b5e6d28baedd5acc1542e69e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24328,10 +24037,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24339,10 +24045,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/10302aa7598eb36d0ac22d0478eb0f2a6b010ea6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24350,10 +24053,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24361,10 +24061,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1109cb814fd134862a3f5ef5c9b2244585882b8f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24372,10 +24069,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24383,10 +24077,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/119410315423e5f37919886ced7f03235e5792aa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24394,10 +24085,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24405,10 +24093,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/12083209096187575021a775826b08b70b39ed4c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24416,10 +24101,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24427,10 +24109,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1254c9256157e6362003c97c8c93d8cd67a28772"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24438,10 +24117,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24449,10 +24125,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/12a97827d0f817e3ffd8d9cf1bdba0f945b6fda4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24460,10 +24133,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24471,10 +24141,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/12ef45f6beba92677a2a7508fc5e1bfef30ded66"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24482,10 +24149,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24493,10 +24157,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/130c41e2dd87c36b4079c8e5bd380dbe3e0a2b38"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24504,10 +24165,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24515,10 +24173,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/13c409dcf7752c25b2b51ac5fad9201b505d7059"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24526,10 +24181,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24537,10 +24189,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/143789594154049441d565b65ce725fc4f8c12bc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24548,10 +24197,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24559,10 +24205,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/149044286608a7945721c61f12196bebd5adb2ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24570,10 +24213,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24581,10 +24221,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/157586c7c0ba8fd0dc9bfc2426229a7da934cec2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24592,10 +24229,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24603,10 +24237,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/15c37fe5be9f23c0f0e59e12ee7666007acdb3c5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24614,10 +24245,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24625,10 +24253,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1661d0799cbf2015fd64e9f648ebb49281d41c6d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24636,10 +24261,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24647,10 +24269,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1671cf01e5baf796c5572b7b0e15d226a5c93f23"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24658,10 +24277,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24669,10 +24285,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/16a9beb811f836a444172a5da9290b47d77c32ef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24680,10 +24293,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24691,10 +24301,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/16d52016278caebf92ba455f7ac8a8c7482c3563"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24702,10 +24309,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24713,10 +24317,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/173ebf4139ee6d7a574b6767059d82375674bbf4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24724,10 +24325,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24735,10 +24333,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/17cfb281eaa8a17d77e08c3648bb93f3b5aa5297"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24746,10 +24341,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24757,10 +24349,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/183c878064b6a0ddf6a22dc4a2aa0d33a2d802d0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24768,10 +24357,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24779,10 +24365,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1887558eb48d6a4341610fd0395cef8e87744044"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24790,10 +24373,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24801,10 +24381,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/18c856af1e2ebb934401e523043eaf80aecc8363"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24812,10 +24389,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24823,10 +24397,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/18f2d7626b6ad4859e735e448b00b6916f1d3e2e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24834,10 +24405,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24845,10 +24413,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/19dcc3082c76b85177ce6a56d195473aaa285268"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24856,10 +24421,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24867,10 +24429,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1a6b907bfa02ceebeb80aab47b3c3c51161eb868"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24878,10 +24437,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24889,10 +24445,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1b699132724acab3d42fb5210c07b74343449873"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24900,10 +24453,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24911,10 +24461,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c0417c96e6408d2902ef8fe4b8cd05f1ce4a50f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24922,10 +24469,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24933,10 +24477,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c6e5ad8dbff133707cc85b05a0057abf55d08ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24944,10 +24485,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24955,10 +24493,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c73564518349ebc87c4023b9d9a3cbc4fbc6cdd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24966,10 +24501,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24977,10 +24509,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1c98433d827ea4aae2ba8a68c4d11bc2527cb15d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -24988,10 +24517,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -24999,10 +24525,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1ccd81836f26b7ececde2b02a22b19ab2a498631"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25010,10 +24533,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25021,10 +24541,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1d8b40b4798e652184df3bcffe1b1d7e32648f79"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25032,10 +24549,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25043,10 +24557,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1e4a2a6998218ea8f475aa2ee27869207b33b612"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25054,10 +24565,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25065,10 +24573,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1e55e5f47b550bab133099e5a98d7c751a0a2d7b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25076,10 +24581,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25087,10 +24589,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1e7d2d8f6109f4c02815ce8582c799134f2ff5dc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25098,10 +24597,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25109,10 +24605,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/1fda93a85f7b5b7a0c2d68a03123e58a6d20f124"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25120,10 +24613,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25131,10 +24621,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/20322515ebf6df572cb2f596d8a20d3d8893193d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25142,10 +24629,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25153,10 +24637,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/207c5a0f80f052ac7b48f6dd45cd33987be27f32"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25164,10 +24645,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25175,10 +24653,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2099db589f606dd8932a950280f5d2b23751af9f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25186,10 +24661,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25197,10 +24669,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/21f3be485826850e4f4670bb81982e2827815426"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25208,10 +24677,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25219,10 +24685,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/240afe42d3e2834c46a79d9df0dd6ca018831398"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25230,10 +24693,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25241,10 +24701,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/24a87af0954c808fbd3f2c55185d4b1fa9459f4e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25252,10 +24709,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25263,10 +24717,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/24df70902c288fcac060365c2e6f61269a3606b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25274,10 +24725,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25285,10 +24733,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2500fc12d5d1b5ed99fc3fe518c28849d1c8d6e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25296,10 +24741,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25307,10 +24749,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2501c7c3f78829725e6bf556277785588318106b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25318,10 +24757,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25329,10 +24765,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2507810915aecd3adf1287edf8c9f54b23a8ebd5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25340,10 +24773,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25351,10 +24781,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/253b8946a7cf403dd466f1685df2f741d4660a34"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25362,10 +24789,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25373,10 +24797,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/26865cd90c1461694d94d96232436372df2a91fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25384,10 +24805,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25395,10 +24813,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2743ee5a764fb0c4e04cdf84c9b3810ac8093998"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25406,10 +24821,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25417,10 +24829,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2748d28f2e03d740a89f7a50ea52450d0c5523f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25428,10 +24837,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25439,10 +24845,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2837baed2fbf1612f88224e91ddc46241dd9d972"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25450,10 +24853,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25461,10 +24861,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/28f8c7af6aab3bbabe028f780e174b27b924a146"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25472,10 +24869,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25483,10 +24877,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2942908b7973da7113098a0ea25487e3372db173"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25494,10 +24885,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25505,10 +24893,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/296c3f5b9880fe7ccff4d2a67f489b38b5b6fd6e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25516,10 +24901,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25527,10 +24909,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2a600cae342e8e9e23406bb1e76133f48d936766"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25538,10 +24917,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25549,10 +24925,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2ab009994e603404e194ebe0120840d388fb765e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25560,10 +24933,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25571,10 +24941,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2ad5ed48b598bd9e2d486a21eed5314736e5b56a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25582,10 +24949,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25593,10 +24957,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2aee21e4d1175963fa719d376406bb10d4818bdd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25604,10 +24965,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25615,10 +24973,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2af392765963966f2d1ddd5d5af4fcadd93c3b06"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25626,10 +24981,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25637,10 +24989,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2af4e625522d128d03252f35b5fa5094cbcebc9f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25648,10 +24997,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25659,10 +25005,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2b931953e9bd02c3310a05234e91550bcd8ddf62"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25670,10 +25013,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25681,10 +25021,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2b933a0ede25a06e32c7d9cc5a3eda78086f3060"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25692,10 +25029,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25703,10 +25037,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2bbe5b2c12a964b53a5e6f78cdd5f595d95082a9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25714,10 +25045,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25725,10 +25053,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2bc326b3ecf6d069595bc27cc1bca76b374c8e85"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25736,10 +25061,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25747,10 +25069,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2c917a39d34aad10d611a1647a6df6502b4d4d59"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25758,10 +25077,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25769,10 +25085,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2d61ec2cff75eadbc47e0932998b8a797e0cd96c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25780,10 +25093,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25791,10 +25101,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2d9440daa210b9298f34982dcf7adc3564ad965c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25802,10 +25109,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25813,10 +25117,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2d974f9fd1c57bce55cb9f1bbc25eb1e7a10454b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25824,10 +25125,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25835,10 +25133,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2db3a358c43c179a728f0650a00be295e88f8060"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25846,10 +25141,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25857,10 +25149,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2e21a2f9bff2514667aaec75629c82daa067ff57"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25868,10 +25157,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25879,10 +25165,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2e82bfb7e8eede401ce75f6afe8c15ffd06130db"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25890,10 +25173,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25901,10 +25181,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2f0a8f0f96402ba1681ab3a9095a3dea47cdc53f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25912,10 +25189,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25923,10 +25197,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2f120ceed5250084f62010df9bf8fe8e8f3f643b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25934,10 +25205,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25945,10 +25213,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2f44fd38efef5818750f9adc9b133e40f9cdec71"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25956,10 +25221,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25967,10 +25229,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2f57224df35ff1583d14436a477330db23d70b0a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -25978,10 +25237,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -25989,10 +25245,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/2fa6a874e625ca4d71941408d94698f898be4ea1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26000,10 +25253,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26011,10 +25261,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/301c057536319f49dcec68ab96677714e3dbf793"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26022,10 +25269,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26033,10 +25277,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/30694ac08ff5a6a10cc781b9042c89f4019cfe0a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26044,10 +25285,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26055,10 +25293,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/307a91e344b94923837e01a1657ff277f44db07d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26066,10 +25301,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26077,10 +25309,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/30fbe0ac4c74e2be3edd4f21b72bcae02e6c623f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26088,10 +25317,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26099,10 +25325,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/313001e1cc15ef9887b43e0c6de398eea2f20e00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26110,10 +25333,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26121,10 +25341,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/31429d04a34cc6643eebed7eeb8a807a83b57b1f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26132,10 +25349,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26143,10 +25357,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3230d9876d770657d86dfb768b80494cda52abc8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26154,10 +25365,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26165,10 +25373,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/32594aaa716c1a04b0f927ef964f1593735cb289"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26176,10 +25381,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26187,10 +25389,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/32b9de8461fd32b1236abb86abc91c82652d6e2c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26198,10 +25397,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26209,10 +25405,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/32c108ead009572fbe9a216b372e5c0b3843238e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26220,10 +25413,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26231,10 +25421,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3399ac8bb9e0d3a2cbf22a95d1e20c70e2415e41"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26242,10 +25429,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26253,10 +25437,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/342d148e59fb500ad76d583cf828c16cd3d3ed2e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26264,10 +25445,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26275,10 +25453,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3465fb573ac3c59a0804aadeba2f205870abcc3d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26286,10 +25461,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26297,10 +25469,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/364f77bffd55805e2be9d2b3a071012e8fc3a083"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26308,10 +25477,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26319,10 +25485,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/368d2b5d4c6776afbed8e5e76cc3a4ccdde1df42"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26330,10 +25493,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26341,10 +25501,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/383043f6c05edc5a18f5c8e7b9d0314db63eab5e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26352,10 +25509,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26363,10 +25517,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3850b085a0a33fa2a08630dddb03e0f1adb1bee9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26374,10 +25525,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26385,10 +25533,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26396,10 +25541,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26407,10 +25549,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3a287590e2d38d5dbc0b85d29ae2497d27aa0305"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26418,10 +25557,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26429,10 +25565,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3a4fa4e81b78cae093b2d53b0a6f272a398a7cda"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26440,10 +25573,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26451,10 +25581,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3aee5ced2869452b8ed65313d01b9b9c87144cd4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26462,10 +25589,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26473,10 +25597,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3b002ab57ff8080fbb1e72d985ca6f59f96a171e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26484,10 +25605,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26495,10 +25613,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3c84d21c46b89e7573750dd4517ea2eb58e37e27"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26506,10 +25621,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26517,10 +25629,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3c8e6352f6c2a07bd5ef2b9a93c103935c8eaf0d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26528,10 +25637,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26539,10 +25645,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3d8c66be71e0ae0dfb0c2c7b84e4d8336f92b7ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26550,10 +25653,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26561,10 +25661,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3dedcaf501bc9718e5d372862b081fc9fdfb3959"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26572,10 +25669,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26583,10 +25677,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3df06a68edfc53fa88634c657a50cc6820354165"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26594,10 +25685,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26605,10 +25693,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3f36ae935255c4bbd2bd8d4a85bfa92bba02225c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26616,10 +25701,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26627,10 +25709,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/3f47ad9ab401599f42d3c4f37ab9f702e3ff0fc9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26638,10 +25717,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26649,10 +25725,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26660,10 +25733,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26671,10 +25741,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/42a8e7c267f66a0747f30b4053ec79325074dc97"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26682,10 +25749,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26693,10 +25757,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/42c3c4a4e7d21e79d1e36494d5324f10a5ecbb04"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26704,10 +25765,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26715,10 +25773,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/43676969fb81dcc1699b6a17eb465ef3cd4c2ab8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26726,10 +25781,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26737,10 +25789,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/439d4e4ed3ab9fe77e2bbda5b2be3d123beefa00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26748,10 +25797,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26759,10 +25805,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/441c94c010d19206c337d3c850cc449523ab480d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26770,10 +25813,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26781,10 +25821,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4449ec3eda232c394fad83e34b002e9bb46862e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26792,10 +25829,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26803,10 +25837,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/449ece0109a8543f26311f3ddc23525a2f288b64"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26814,10 +25845,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26825,10 +25853,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/44bf16b9eb7302a6b02a600ac92dadf916c4e629"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26836,10 +25861,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26847,10 +25869,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/44e1fdcc46db56bf61a6702fd10766b56d35bc74"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26858,10 +25877,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26869,10 +25885,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/45657516294c5426c490e6aa522a79077c972856"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26880,10 +25893,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26891,10 +25901,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/465b299ab3509b61016406e0d1d93f7774c03c8c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26902,10 +25909,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26913,10 +25917,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/46efabc911aab09a5e7a34a19ef97ce710594a77"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26924,10 +25925,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26935,10 +25933,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/472adcbc2a1970f2392e596c28bd44087b8f3431"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26946,10 +25941,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26957,10 +25949,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/47e402f3386843e0055431750f30b710e10295dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26968,10 +25957,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -26979,10 +25965,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/47ecf4079ea23d4de5fd9282f733eb5429f7ab05"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -26990,10 +25973,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27001,10 +25981,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/484ab9d070fffe7e3d1a1704c9fa2ce01e192450"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27012,10 +25989,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27023,10 +25997,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4905b3fb0f7d2196a5612e8e432abda666e4317d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27034,10 +26005,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27045,10 +26013,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/490f5aa97dc05ef1ce089fa9d4fd377bacafcf18"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27056,10 +26021,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27067,10 +26029,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4a3eae69f4c5dc768b166620af348316c9fac3e6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27078,10 +26037,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27089,10 +26045,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4c3dcb9cb14f89b3616fc7cca78f2ebc502907eb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27100,10 +26053,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27111,10 +26061,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4c686a41d4d2226b3cc76b8154d8df090d075f00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27122,10 +26069,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27133,10 +26077,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4d472e5a8e8ee92be6f23a101babbc601dd2512c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27144,10 +26085,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27155,10 +26093,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4d4aa6ddd6404300e5278682e560f25292e9804e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27166,10 +26101,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27177,10 +26109,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4e36813fde9b5de1b62de95f498f2e0a48b5c5f7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27188,10 +26117,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27199,10 +26125,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4ef22ea5b0aa8b80a180a9654f5aef121c5aad83"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27210,10 +26133,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27221,10 +26141,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/4f53cc7b3ed0c77c3b5e4478f54caa40e0bf64b6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27232,10 +26149,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27243,10 +26157,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5000fa3e29de15e7533b0e04b37eb1985ae69891"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27254,10 +26165,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27265,10 +26173,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/50841095cafd9f9de6684fb3d89cd5fe148494ef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27276,10 +26181,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27287,10 +26189,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/50bfe6100bf11339372ba29fe0c9b38c3ec2ebf0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27298,10 +26197,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27309,10 +26205,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/51d7466ac65468db7094bdedc60d1604231acc05"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27320,10 +26213,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27331,10 +26221,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/51ed796a5f8d8fccebe013ccccdc1ed5d8b8b4c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27342,10 +26229,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27353,10 +26237,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/528cc09294d2288fc91a4bab7cf6ec621c6621b0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27364,10 +26245,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27375,10 +26253,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5298ce28a7eab28c99964c0d838b017355607c92"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27386,10 +26261,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27397,10 +26269,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/52dba1b997f903c5fa3d7da71421b36d96d9f55c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27408,10 +26277,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27419,10 +26285,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/53e68cd362f3c8d64941efbb0b527c52da5e8424"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27430,10 +26293,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27441,10 +26301,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/546fe2e2b1e2756c3f121d0545866798c85c9b8b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27452,10 +26309,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27463,10 +26317,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/54a0a2c37ce1830f241f6e2828adc8057cfa385f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27474,10 +26325,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27485,10 +26333,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/55ed466781b547db5957233bd8db0ce1f189183f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27496,10 +26341,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27507,10 +26349,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5677b3500e9353856c8d87fbe1476a22df4231f8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27518,10 +26357,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27529,10 +26365,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/56f3ca8174d263240113de88e7547e7b1c5cb2cf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27540,10 +26373,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27551,10 +26381,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/57798cc4375de344391221fd07d591f5c64d646d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27562,10 +26389,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27573,10 +26397,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/57da1745490c2f21ecb86370f1f72f77752bc739"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27584,10 +26405,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27595,10 +26413,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/57dea4528141649208fa2af10c18e98e80c1758b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27606,10 +26421,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27617,10 +26429,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/588f9166c839baf3102185d38f77f9a750e62c7f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27628,10 +26437,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27639,10 +26445,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5939ec5fd8f4e02ff0720cfa3ef685876bb3549d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27650,10 +26453,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27661,10 +26461,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/594d676c8c05d75ba8587d9e900850dff5e21ff8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27672,10 +26469,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27683,10 +26477,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/595603f4ed37e3716cbe53b3ef180e5cdf8005f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27694,10 +26485,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27705,10 +26493,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5a3c9d98651a315b5bde737482ff54f6b90361e0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27716,10 +26501,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27727,10 +26509,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5a6491ab9c23fae58967d4a4b5d5cfb23f620001"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27738,10 +26517,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27749,10 +26525,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5a85c9bd6a6d7a2f753dd315e4747fc0249c8799"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27760,10 +26533,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27771,10 +26541,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5a8ca84c7d4d9b055f05c55b1f707f223979d387"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27782,10 +26549,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27793,10 +26557,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5be956066b72ea1799e333a7bd17fb0b8fc2b91c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27804,10 +26565,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27815,10 +26573,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5d0137a19ae57cfdf5172a8b51e8ea0a0a893690"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27826,10 +26581,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27837,10 +26589,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5d2f29b31d78b47077b15779d620747034d18c05"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27848,10 +26597,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27859,10 +26605,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5d765c856a9a8650e1b17813340b9b6ba0989b58"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27870,10 +26613,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27881,10 +26621,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5e1391f44f904fa54e66ec174e4c8879921e842a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27892,10 +26629,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27903,10 +26637,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/5ea01efbec747fc55ae29eb2b779f00889ca6922"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27914,10 +26645,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27925,10 +26653,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/60e8618c075ec5fd47a1699271c6da1b5befd579"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27936,10 +26661,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27947,10 +26669,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6184ea16753b0827f728285f18dad4b3bde00024"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27958,10 +26677,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27969,10 +26685,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6186bfc21ff7df3982e5d9757e5c7160da0f493a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -27980,10 +26693,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -27991,10 +26701,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6230cce2862a18c4c92dc6fb4e034a1d15e1ff18"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28002,10 +26709,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28013,10 +26717,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/62fbfe90a1b9ac471bc2644c896f64515f6b3c7e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28024,10 +26725,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28035,10 +26733,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/638c36cfe098b98008e594eddf90fdacfc078fae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28046,10 +26741,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28057,10 +26749,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6421db654fff309bc191aba0330fbcd1347655e3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28068,10 +26757,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28079,10 +26765,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/646c501021c79bf6eb1a39a9bcc82e018f31bca2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28090,10 +26773,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28101,10 +26781,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/64c572e594c2d491a902e8fdff7b617ac0c6881b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28112,10 +26789,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28123,10 +26797,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/64eb970cc80162a4b80d49364f4227db3429e156"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28134,10 +26805,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28145,10 +26813,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/655b880459e6e00100727af9df52b64f6d77a653"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28156,10 +26821,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28167,10 +26829,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/660c071578cbdccb503317ecbf2fd331bc4ac82d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28178,10 +26837,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28189,10 +26845,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/66ac31199d08e7a3b066059cd409457a850847b2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28200,10 +26853,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28211,10 +26861,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/66ef59d5da68fdb5e55b60fc8a8a764afb021b4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28222,10 +26869,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28233,10 +26877,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/682cb8ad9fe4641e7a140ae3d3ee27c841ba397f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28244,10 +26885,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28255,10 +26893,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28266,10 +26901,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28277,10 +26909,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6a10118289fe7179c4e9bb6a1b466ba34c582bfb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28288,10 +26917,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28299,10 +26925,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6bfbea131237606756a12f275e736045c0956536"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28310,10 +26933,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28321,10 +26941,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6c1c2177f3483086607c717d0c6c35a81d79e18e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28332,10 +26949,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28343,10 +26957,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6ded157ecd3fce79fa69c51ee9ecb4639013e6ba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28354,10 +26965,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28365,10 +26973,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6e1cf196e7c8ad4226d89f3ca2c6f7949598bec2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28376,10 +26981,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28387,10 +26989,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6ef96bc0c5b6ab5f8a4453b9cf5784fd55e3b59f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28398,10 +26997,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28409,10 +27005,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6f88ae246aa4af9c74732d87a758ba5ca0f40caf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28420,10 +27013,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28431,10 +27021,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/6f8ffc96f9ebe390929165e32bdc187afb7a40ce"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28442,10 +27029,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28453,10 +27037,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/70bd921a3d4700d49ad6b99e0cfee42c36a13b3a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28464,10 +27045,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28475,10 +27053,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/710f61e5765c91bcf9cf2e07264771cf2feae48d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28486,10 +27061,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28497,10 +27069,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/71c01818823d5c5fd8a3d1cb4c5db4aca51efdb2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28508,10 +27077,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28519,10 +27085,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/71e2b03b503dbbdc0d2e724c562b9f1c77f972fa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28530,10 +27093,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28541,10 +27101,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7240f3408714c2dcdcb448f234efef4f08e6b2fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28552,10 +27109,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28563,10 +27117,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/727f43500183aec9c0d9be7d2363fa1761cda5d5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28574,10 +27125,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28585,10 +27133,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/72a3729a9bb74378156dcd42171e39ec348c71d7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28596,10 +27141,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28607,10 +27149,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/72c363848fe754c23e1f9f2acc2f025666417d2d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28618,10 +27157,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28629,10 +27165,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/73889340124f1f88859aab4e6ce36c0019a44218"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28640,10 +27173,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28651,10 +27181,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7462e4d1834938e8a5fb975da6865cc7d6b225f3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28662,10 +27189,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28673,10 +27197,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/74b69a49c2df95009ff18d820bbe7fe6ae797aae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28684,10 +27205,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28695,10 +27213,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/74cc62178f9c631dc49cf09b0ff5884322d33969"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28706,10 +27221,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28717,10 +27229,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/74eef5817db3984a020b2868f3c9979d0220c829"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28728,10 +27237,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28739,10 +27245,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/758ce3af56f75edb8faa20ef78ffda5511dffb3a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28750,10 +27253,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28761,10 +27261,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/761f683f6486e3efb606bf08fa527a4c1a51f302"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28772,10 +27269,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28783,10 +27277,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/76487a234f6f7276d8eba4edabef7623a592fdf6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28794,10 +27285,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28805,10 +27293,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/767c4f399ccca740ea3032eeade86851f12e7f9a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28816,10 +27301,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28827,10 +27309,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/767d136ac4b3e33d9aa5320d941693e09648e59b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28838,10 +27317,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28849,10 +27325,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/768b6302130ac824947f956e062184afaafcdbab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28860,10 +27333,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28871,10 +27341,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/77d4480781e1e1a9d5d5c02ff53fba10127f8b6a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28882,10 +27349,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28893,10 +27357,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/77e8407dfe09892312213f7d6b2ad8a961b6b88e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28904,10 +27365,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28915,10 +27373,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/792276ed826b9078ecfbd51e0136962f5e10ed6e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28926,10 +27381,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28937,10 +27389,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7a0b2f8659484409af6a76d1df273b8dc66e3439"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28948,10 +27397,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28959,10 +27405,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28970,10 +27413,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -28981,10 +27421,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7c026422a34cb34de673a1d6702cbde67d112d27"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -28992,10 +27429,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29003,10 +27437,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7c58daa09675ba2b11e69636bb78dc0d1343bb51"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29014,10 +27445,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29025,10 +27453,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7c9b4e2ea03542254235893edd042a822145e504"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29036,10 +27461,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29047,10 +27469,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7cdff0948ef64e551ad02f857acd5956d91530c9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29058,10 +27477,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29069,10 +27485,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7d33039255c9611d0e9e0cc7e230f87ad55c007f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29080,10 +27493,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29091,10 +27501,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7d6713afac17551fc2628c0f9f18c41a1aa9c2f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29102,10 +27509,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29113,10 +27517,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7d88455cc77259c8bf17c1cdc0b24edf5667c79c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29124,10 +27525,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29135,10 +27533,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7de73ddcb20d0940b937323599a5094bfb26ae6c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29146,10 +27541,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29157,10 +27549,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7e8f7517bb0bb95011b48f1f4f4a631d4d756a5f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29168,10 +27557,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29179,10 +27565,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/80a249d17248e0dc7dcc9fb64d8ac2dd0320a544"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29190,10 +27573,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29201,10 +27581,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/80a56bd23287d856a653f22f57f7d1442235b713"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29212,10 +27589,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29223,10 +27597,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/80b6a3cf5bb7cdeffcb6cbaaa10889168542a25a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29234,10 +27605,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29245,10 +27613,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/811533455c494627bb5b5802f4ed7a386f57cb1e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29256,10 +27621,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29267,10 +27629,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8123e9dc4d43115412f07fcf9946c99d9a1a55c3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29278,10 +27637,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29289,10 +27645,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/820d5ba2e9d91563dae39a1b02833fbef1e6d8f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29300,10 +27653,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29311,10 +27661,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/83c29132911949c65d508753420708e9a0ffd6ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29322,10 +27669,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29333,10 +27677,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8492f54a92f9a2a05af1a078489a3a68145d8985"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29344,10 +27685,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29355,10 +27693,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/84c995b299f8d6fa0733d11f0b1a0b4414a7e232"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29366,10 +27701,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29377,10 +27709,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/85220ed0c63891f376bee53c785b407fd9548f8b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29388,10 +27717,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29399,10 +27725,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8554d0f8fc68c84fbd8515165a3d98aad0dfab3e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29410,10 +27733,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29421,10 +27741,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/856fb7cd57f36cfcc8a2cad0cf61f9fff9696776"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29432,10 +27749,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29443,10 +27757,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8711e2f477871e3ca68642bbb388e7f473f25394"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29454,10 +27765,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29465,10 +27773,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8713d28e8cf45d3670ad40829a83b1fc7cd41a75"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29476,10 +27781,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29487,10 +27789,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8778868ac7a23d552d93772aa8566cf427a0c1f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29498,10 +27797,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29509,10 +27805,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8791b58ad0dbfdf9c37d48bc60940f86c6c7e3b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29520,10 +27813,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29531,10 +27821,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/87add83a18a25fe585df8adc124eae6d70733f74"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29542,10 +27829,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29553,10 +27837,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/880070b48f04fd1c8ffafd750e1c4d37ff404c6c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29564,10 +27845,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29575,10 +27853,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/885267691bb42bc807b6e578571430a81513eee0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29586,10 +27861,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29597,10 +27869,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/88be31c841a66f523045f7bd1708ce64272e4276"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29608,10 +27877,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29619,10 +27885,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/893ea11ec0c4425940d18a32acf23d5967d98dd9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29630,10 +27893,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29641,10 +27901,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8949e5c946cf6ec7d1981d553972d4f3a6026987"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29652,10 +27909,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29663,10 +27917,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8a034b07b9baf1b441c0fb0322652772973f20ff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29674,10 +27925,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29685,10 +27933,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8a912877743b165b233303efaf502f5092b3c5b0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29696,10 +27941,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29707,10 +27949,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8a9f7329b30a562837353767313df7fa9a1f31f7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29718,10 +27957,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29729,10 +27965,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8b253ba946d6768c147f5d52552e150b703437e0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29740,10 +27973,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29751,10 +27981,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8b53f252f8558726dc0daaee84e2b4d2f0835f44"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29762,10 +27989,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29773,10 +27997,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8b7ebe7fb16e63e2584595ee77afb19359356eda"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29784,10 +28005,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29795,10 +28013,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8c501e1c87c42c4b7765ab027bd537ef72656605"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29806,10 +28021,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29817,10 +28029,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29828,10 +28037,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29839,10 +28045,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8d951b7ab0231fb1dc573433b354eac58c699c36"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29850,10 +28053,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29861,10 +28061,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8e94dd64fdbf453f06b351d6a8f77a43cc34e4bc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29872,10 +28069,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29883,10 +28077,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8ea86819b4ac803bb12fd6b63e6496238aa329c1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29894,10 +28085,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29905,10 +28093,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8f43b11f10961dcce8eaa8340c96d10bdbc937ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29916,10 +28101,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29927,10 +28109,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8f8b66436bade06813ec9ed4fce6774914b73db3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29938,10 +28117,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29949,10 +28125,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8ff5277cdbe1417da64bfdb342747a23f5e4f956"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29960,10 +28133,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29971,10 +28141,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/901c9a33205897999e7e78063ccdc5d363267568"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -29982,10 +28149,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -29993,10 +28157,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/90230730fae07c8eeb6b5bd571a119b486a21473"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30004,10 +28165,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30015,10 +28173,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/90cd72030567bddbce06152fa0af1a024d542fa7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30026,10 +28181,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30037,10 +28189,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/91e2f574e7ceb7f69a93011aac68903cd014a6c7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30048,10 +28197,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30059,10 +28205,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/92273cf09f18534ae700c1f35dfab49faa091c54"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30070,10 +28213,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30081,10 +28221,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/929980ce480ca47855bdebb8f6ebef7fa447fd5b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30092,10 +28229,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30103,10 +28237,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9379dd6ade6947a59a1786435a2d55a705161ae5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30114,10 +28245,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30125,10 +28253,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/950511efda7aea60b3bfae95e31683210a88792c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30136,10 +28261,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30147,10 +28269,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9538327ef9f0a8d380a473bd25114b6859acf9b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30158,10 +28277,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30169,10 +28285,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9629c9a0c98f15eec2b7fd114fa5ff9ff5c61a19"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30180,10 +28293,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30191,10 +28301,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/96a80511d8ef3ffdd370a3cc9467713a538259bb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30202,10 +28309,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30213,10 +28317,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/984b6ee241b92be62923c6dc5bacaadb36183b89"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30224,10 +28325,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30235,10 +28333,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/98b88c0751f1d9e5dc3d4751d2cb52ed8f0b008d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30246,10 +28341,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30257,10 +28349,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9a0de0d63d44e00fc88e6cb88f4b8665db3b4b5e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30268,10 +28357,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30279,10 +28365,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9a24710002a240ad32b7adb5310f4970c09cc8ca"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30290,10 +28373,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30301,10 +28381,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9a425eda58b05407e671f6b86a6664eb728843cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30312,10 +28389,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30323,10 +28397,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9b6f00dd2752afbd223aad960168e4e535330d30"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30334,10 +28405,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30345,10 +28413,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9bc5b4a9a81905cbc7ee4a25482068dcab93898d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30356,10 +28421,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30367,10 +28429,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9bfd723bfa4162bb5801a6050af0a8b2db10d4ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30378,10 +28437,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30389,10 +28445,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9c0911c1a4b91f842670082c14af67d1f4b7bb6f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30400,10 +28453,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30411,10 +28461,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9c5538a5492013e6bdbcce2a373be19fc97c4f20"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30422,10 +28469,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30433,10 +28477,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9c837f4e6cb572b3431b3a5065b889273712810e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30444,10 +28485,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30455,10 +28493,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9d91fac343dd8a7848746ca5472fb1452052bfb7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30466,10 +28501,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30477,10 +28509,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9ebd34b96faba2fea70a50533df78a8c1dc35247"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30488,10 +28517,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30499,10 +28525,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9f1db4144e46f913ca02e0abe2ccd5c7481e2a92"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30510,10 +28533,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30521,10 +28541,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9f77859f13bbe482011164f7a5e1a2a77d8596f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30532,10 +28549,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30543,10 +28557,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/9fb07d3aba4e2d39eff7d31111515d7df2c981ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30554,10 +28565,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30565,10 +28573,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a074a30fc5c627e8093a8f860d67661df22f8148"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30576,10 +28581,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30587,10 +28589,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a10775155c8eb3a834d067c0978753513d5e1d75"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30598,10 +28597,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30609,10 +28605,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b04c2504a75f50d47875bd1db804cef3674cf0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30620,10 +28613,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30631,10 +28621,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a1b153e4cde45a7302094f6c751e3248d2f0fb8e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30642,10 +28629,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30653,10 +28637,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a1dffc6b0fabef88188bc4c140bc2d331d73f997"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30664,10 +28645,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30675,10 +28653,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a25eb9c166a097ea3afa590e3584eb9986bd9445"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30686,10 +28661,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30697,10 +28669,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a2ac5153026b26fcbea42786e238b15017a684be"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30708,10 +28677,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30719,10 +28685,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a3026496fa01a4cae2682da4b3e7cfae09929698"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30730,10 +28693,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30741,10 +28701,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a3c9b6e89b534d02bdad07207c4fdcda536f28a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30752,10 +28709,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30763,10 +28717,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a3cc00f1a2020ff2e2d53bc91a212b5fdbe5c006"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30774,10 +28725,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30785,10 +28733,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a55fb292d4e1ffcdaf933f2dbdd8410628eb7acc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30796,10 +28741,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30807,10 +28749,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a6914c7bbe81fd2138bc20e63b27c0cadd0471ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30818,10 +28757,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30829,10 +28765,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a693801403d7721b5b3d7d4525cc0b830ab35e06"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30840,10 +28773,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30851,10 +28781,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a6f614d434a1fe2162f7872100baef21b2051b53"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30862,10 +28789,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30873,10 +28797,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a78a65e7bd4c3cf41fce74155e97a758658fe8b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30884,10 +28805,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30895,10 +28813,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a8d353c157cc3788a86a0d572adcc7744e7e902a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30906,10 +28821,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30917,10 +28829,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a8f87a7038125bd0e3b753c2a42ebdc3e4c75cba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30928,10 +28837,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30939,10 +28845,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a9548cec37ad3c54d4bff10c9127db3638065d77"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30950,10 +28853,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30961,10 +28861,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a967ca556a517366de03b8a9d21e991783f0896c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30972,10 +28869,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -30983,10 +28877,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a96e54f84588c424c5ff2615fb0745684a11de39"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -30994,10 +28885,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31005,10 +28893,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/a994ed559126fb75d245d34816a727d8585045ac"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31016,10 +28901,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31027,10 +28909,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/aa926963580066aa503c5433dad9889fabc4ee08"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31038,10 +28917,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31049,10 +28925,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/aabcb4ea803e0b5399cb7a2cca8d28baa3f6c4ae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31060,10 +28933,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31071,10 +28941,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/aaf2bf9eaf71df9e0c597335e8d6f8c2d370b093"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31082,10 +28949,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31093,10 +28957,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab013aca29d6027d443e9dc0c550a26e7a23f01d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31104,10 +28965,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31115,10 +28973,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab1a75a7dec4c780749be5afa45fdb9e7e7907ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31126,10 +28981,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31137,10 +28989,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab4a63521f8afd81d6f5bf117597039cb02d453a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31148,10 +28997,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31159,10 +29005,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab850ea6858b0b4798d8d8c60cf7d715b9064c85"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31170,10 +29013,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31181,10 +29021,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ab8c19341f57f87c38055a9aaee515f8e65a33f3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31192,10 +29029,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31203,10 +29037,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/abe27eee1a472ac0dafe73619602ff44bf7d0657"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31214,10 +29045,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31225,10 +29053,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/acb49fc7f5d61f15e2e0b8f391678365381c5ab9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31236,10 +29061,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31247,10 +29069,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ad8f14d76933f67a10d9e8442eaa1b88b2395cd7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31258,10 +29077,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31269,10 +29085,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/af042d0ae8cd624acfa12788ffc0154e6f49394b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31280,10 +29093,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31291,10 +29101,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/af0a181159725d308833841738c5d14d478228e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31302,10 +29109,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31313,10 +29117,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b05cbc7820c94bb3ee46dd3869ea39923338b4ba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31324,10 +29125,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31335,10 +29133,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b0ff62377b87b846f720a70f0b7f7bdc76aa1315"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31346,10 +29141,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31357,10 +29149,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b12be9771ea0f5b687f50fa9abe5cb8bb688fa6a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31368,10 +29157,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31379,10 +29165,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b23f1233d0e21c4aaaebe2fe5931903698b2408c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31390,10 +29173,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31401,10 +29181,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b29d3c87c76355ce07ea4d4c354bf9d40294abb3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31412,10 +29189,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31423,10 +29197,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b33f833f291ebba4d777c2bae51193553c27d138"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31434,10 +29205,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31445,10 +29213,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b37f3e85a80b5dcde6b48b46f162418fd2ee83ec"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31456,10 +29221,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31467,10 +29229,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b3b9e307ce3af6fa515a33668374e15fcc909ae5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31478,10 +29237,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31489,10 +29245,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b4037205abce710935a93d656f69928ecc814b50"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31500,10 +29253,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31511,10 +29261,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b436d6ea729dd071f87b21819cf1f32979216aee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31522,10 +29269,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31533,10 +29277,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b46794fb4115e84da13a79153b2ea44d89d952a5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31544,10 +29285,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31555,10 +29293,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b49df296137b4c86eef0fd5fc55bbdd1cb3c4a7e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31566,10 +29301,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31577,10 +29309,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b4dfbd50da81516e8afcd93def813b4b813c3ae1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31588,10 +29317,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31599,10 +29325,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b51853fe4f799f7f959922fda1b3500668a45157"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31610,10 +29333,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31621,10 +29341,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b56db2235df5a81ff15d0c07612de7eee0272304"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31632,10 +29349,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31643,10 +29357,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31654,10 +29365,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31665,10 +29373,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b61f6be57dd30d8c76aae7b966ffee26093f49ea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31676,10 +29381,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31687,10 +29389,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b766e4a3e84ee0a2f57fccbc3a7f7f812b2032d3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31698,10 +29397,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31709,10 +29405,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b77ca0306f700c8c88854e73ccbdf470fba3f820"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31720,10 +29413,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31731,10 +29421,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b792b464ceb568355e80a4588a3ae1b43f05a34d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31742,10 +29429,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31753,10 +29437,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b7f282fbd77193d822df9c8156370398e1fd099c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31764,10 +29445,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31775,10 +29453,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b821e8d3e12441e1120723cf4eda4d939794b17f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31786,10 +29461,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31797,10 +29469,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b8a74cc440fbfaa2a523f20ca964976bde128fd0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31808,10 +29477,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31819,10 +29485,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b8cd185f946c392f8fb5adca4851043df849ac6e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31830,10 +29493,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31841,10 +29501,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b93e4c7538558dfe92d2925646029b5dafe653d0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31852,10 +29509,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31863,10 +29517,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b94adf31dbe157a38e8b3a873658b8dace55f517"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31874,10 +29525,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31885,10 +29533,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b96fd7809c6f18c465e834a96dd60b43b32fac73"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31896,10 +29541,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31907,10 +29549,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bad.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31918,10 +29557,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31929,10 +29565,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bb349c691efa909b4c5412b9210e1acf4a4b7505"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31940,10 +29573,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31951,10 +29581,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bbf053837b7e0e2adc868be62fc91248b8dce176"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31962,10 +29589,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31973,10 +29597,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bbf7ccb14d60a1d4fa79e572464c687530ca6c2a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -31984,10 +29605,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -31995,10 +29613,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bc5e743f85f6632110277f09847381a402e1624c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32006,10 +29621,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32017,10 +29629,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bc6770a9bad24599ea4970735e9b17702a12b651"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32028,10 +29637,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32039,10 +29645,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bc7f0b79a1781772d7f48e168462f99da27b03e2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32050,10 +29653,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32061,10 +29661,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bc96b9415e9bb48d27f37d91c51d10ec08139974"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32072,10 +29669,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32083,10 +29677,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bc9b5b6ba4b6ccbb9e5ff75edd0df8eef9c36d4c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32094,10 +29685,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32105,10 +29693,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bcae3229d884c5cfc36ae28c672f9b960e30042f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32116,10 +29701,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32127,10 +29709,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bcc7eb464ff05cd0cd2669611776e55ca4dcb2b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32138,10 +29717,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32149,10 +29725,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd1ed73f6cf97f980d23ff2e9f4f4e78b80bda57"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32160,10 +29733,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32171,10 +29741,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd459204c5fee8000abc7d895a317028351d0dec"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32182,10 +29749,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32193,10 +29757,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd4786be14d852c68e605eaefa782f79064f32e2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32204,10 +29765,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32215,10 +29773,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd5c6df9c2cfaa96d768b1fe6e8fff57bf1d02c9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32226,10 +29781,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32237,10 +29789,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd7314ef323557ccf3a97c1b1ba4bed0a9b24de2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32248,10 +29797,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32259,10 +29805,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bd891b3b4256f1c4207c3bbe5bd86f5e90a49ee2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32270,10 +29813,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32281,10 +29821,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bde8a553b10a613c32f800429a07f0b5a2d37e53"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32292,10 +29829,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32303,10 +29837,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/be0ccf7b9b4581e01a42e9cad6343c93ccf6f362"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32314,10 +29845,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32325,10 +29853,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/be40890ee61e101a7429d53cd9ffd59ee600e0f6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32336,10 +29861,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32347,10 +29869,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bef8cedf1a792786a027114c85a89a1bef3155c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32358,10 +29877,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32369,10 +29885,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/bf0d70e0d09e5c2ddd79b55dbabdd58b385307f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32380,10 +29893,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32391,10 +29901,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c004d2a6d36524db9e0c18c5df6170366dd2b6f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32402,10 +29909,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32413,10 +29917,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c17ca23726e7bca7b0d92398f827cfb25c7f0d40"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32424,10 +29925,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32435,10 +29933,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c1937db2c3dff32ff22a53a8b76614602cf41d73"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32446,10 +29941,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32457,10 +29949,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c2d14ed959df62d2f6dbe46c71489bed68e3c0f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32468,10 +29957,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32479,10 +29965,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c343ddb31042500e460861abc70e98ce3088ceed"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32490,10 +29973,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32501,10 +29981,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c45cc40cc387134dec06733a01bde8fc44a2c9d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32512,10 +29989,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32523,10 +29997,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c4a63251d65cb186242e7aba5ab3d4709d3f0065"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32534,10 +30005,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32545,10 +30013,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c53efcb830c4ae5cba7b3e0803635445e1469103"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32556,10 +30021,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32567,10 +30029,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c56726277ddeb233e30b6223158042aafb944191"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32578,10 +30037,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32589,10 +30045,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c5e5b4c1e4e2bae55c1355950c3c7a593cb3fc04"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32600,10 +30053,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32611,10 +30061,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c69863dd21c782e609d6ecdb9150f887a0f39989"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32622,10 +30069,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32633,10 +30077,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c73e85bdaa195d9659ae9b08995a9fb716f9c92a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32644,10 +30085,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32655,10 +30093,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c73fbc2e78f496b5666da99bccac9445ac9feeac"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32666,10 +30101,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32677,10 +30109,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c76a1cca503160ca659aad6f7a05ca8fe5db439e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32688,10 +30117,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32699,10 +30125,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c7c13a37189ce2482f5517f6ef0903431194e11b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32710,10 +30133,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32721,10 +30141,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c837e4dc49146de843c9556c1b3c886abb552db7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32732,10 +30149,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32743,10 +30157,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c918b9e3e9cdfdb21d94ef0fba85b25f3ed9d098"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32754,10 +30165,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32765,10 +30173,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c957b37c99c5bb22b2c1f6dd050c57e685505599"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32776,10 +30181,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32787,10 +30189,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c978dc651b961f2d48aad95b40ac761b3467f212"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32798,10 +30197,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32809,10 +30205,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/c9bda5eb1a93526b4809d147647cc78452988e29"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32820,10 +30213,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32831,10 +30221,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ca086cf78308275212c52012f06edf3b4152204a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32842,10 +30229,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32853,10 +30237,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6add6699d063e2212335264ad3e004327afc1a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32864,10 +30245,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32875,10 +30253,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ca6b20544c093b14703410d792c8f73e73205bce"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32886,10 +30261,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32897,10 +30269,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cc34f9a0d85a22556faffadf90182f7c44bf168a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32908,10 +30277,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32919,10 +30285,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cc7087fd7c7398e7c2afe3fb03e705262b5e843a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32930,10 +30293,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32941,10 +30301,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cca20202993dda83570ac83c0b1967ce225c78b9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32952,10 +30309,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32963,10 +30317,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ccdff5940d61b708f67fcc55dc26ac1ad4f4c298"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32974,10 +30325,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -32985,10 +30333,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cd0e7c4cd361b786b6f27c481ed601fd373cb221"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -32996,10 +30341,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33007,10 +30349,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cd4f2c59f0cf55d9a73fb0b96d701c784c446048"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33018,10 +30357,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33029,10 +30365,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cdc064f39a9a67210b1be6b195d38d5d0d73eaa0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33040,10 +30373,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33051,10 +30381,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ce02561c4cfd1ec7e272cf81678149350f8a066c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33062,10 +30389,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33073,10 +30397,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/cf26c6969c0f649a2ccd780edb8b3dc314ff7701"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33084,10 +30405,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33095,10 +30413,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0a0ee428270236e707457b9560a91c233ed2326c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33106,10 +30421,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33117,10 +30429,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-0b1b50227d01f99998b01ed218f5d4dc3839d44f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33128,10 +30437,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33139,10 +30445,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-14359c8f754c2ecdae21deeeec033ae10360033a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33150,10 +30453,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33161,10 +30461,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1b9aeaf762bb1a972dda8f3a455df2628efd693b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33172,10 +30469,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33183,10 +30477,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-1bc1a02532d212c8975e0cdcd5127c98fcaf752b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33194,10 +30485,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33205,10 +30493,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-212c3b09f310867e1e8ffa7faecac75c12f4cda3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33216,10 +30501,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33227,10 +30509,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2ccee0e61103a767acec12b9146d478202b93b27"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33238,10 +30517,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33249,10 +30525,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-2f1092c48db455fbe1ae5e275f8d221dc8c52f00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33260,10 +30533,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33271,10 +30541,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4ae4941b4c3f857966a0e3c05f789a0a5ae15bbf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33282,10 +30549,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33293,10 +30557,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-4e4d7a383785c83b78ed6597bfed360079a49a08"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33304,10 +30565,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33315,10 +30573,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-5c774460d2dc7ae9d471ef4b87609b13e4e95219"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33326,10 +30581,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33337,10 +30589,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-6db86c556caf542fe8c3345ef396467b1d609d32"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33348,10 +30597,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33359,10 +30605,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-72ab4efc255cfc55ed03c1002187a68e2e18e33b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33370,10 +30613,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33381,10 +30621,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-7ca23a3e10cdbf579cf81a50e51af358f86631eb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33392,10 +30629,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33403,10 +30637,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33414,10 +30645,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33425,10 +30653,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-89e1b03278bad9790ae0f8614a8389414d1eab37"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33436,10 +30661,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33447,10 +30669,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8ab0b6e57b90ab4c6b8d5de8278464eb428f4668"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33458,10 +30677,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33469,10 +30685,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-8e2e3975a865fb107fff8060f4f949aa235727d5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33480,10 +30693,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33491,10 +30701,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-916f6ab61cd358be9a241e2eb09851f700335eda"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33502,10 +30709,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33513,10 +30717,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-97ec5404605d0d7bed44c2b845e06f6d9479c152"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33524,10 +30725,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33535,10 +30733,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9862337313ff89e8dd6fbd6f870a568ec4bd6ecc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33546,10 +30741,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33557,10 +30749,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-9e53b8c6ea7f6ae5c53e5834c50eac8e9f33259a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33568,10 +30757,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33579,10 +30765,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-a6224f954d8234d45e6f6ea27aca4d65ca77b6c7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33590,10 +30773,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33601,10 +30781,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ba2c1509ff87865d9e23c056b9c7fe2732825ef0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33612,10 +30789,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33623,10 +30797,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bac7a77b50e53ff71b0f52ce635e64ac15a787dc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33634,10 +30805,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33645,10 +30813,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-bebee7dd27c149af9e7b573300c686969fde9eb3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33656,10 +30821,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33667,10 +30829,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ca8aa113c22037a2a552c1763f845609d555ef9b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33678,10 +30837,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33689,10 +30845,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-cce6ffed471344173c135e536b454f469bd07e03"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33700,10 +30853,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33711,10 +30861,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-dc6abf90d5e8e1b96f7e25f418b1a7f572e6a738"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33722,10 +30869,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33733,10 +30877,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e45753da8952c41715a65010250efba0a4a4d243"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33744,10 +30885,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33755,10 +30893,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-e7930097a989131890a316b0b1ed85801699562b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33766,10 +30901,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33777,10 +30909,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed3086c0ca03a427fca1817b52a4d6530fb4096b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33788,10 +30917,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33799,10 +30925,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ed7959740df2fdcf62626e370dcd7eb43963731b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33810,10 +30933,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33821,10 +30941,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-ef09afe157880d7f363fb87f6bc194ce1a72554c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33832,10 +30949,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33843,10 +30957,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33854,10 +30965,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33865,10 +30973,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-f8bf4b7d89c07d661b695a3e4fdf269b853fe168"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33876,10 +30981,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33887,10 +30989,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/crash-fb41c97305a2c94d367e40863dc046c8f78a57c9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33898,10 +30997,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33909,10 +31005,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d00326f1b0a93acb1cb7fe02ba0342cc6e1875e6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33920,10 +31013,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33931,10 +31021,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d0692d73e38ed8c154ebddd627ce99890a1cf798"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33942,10 +31029,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33953,10 +31037,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d0fcc9d6dc91ead9fd27f0c613ea031f21fb4de4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33964,10 +31045,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33975,10 +31053,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d17e7451bcef39ce542d84f2539f9586ea35f21e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -33986,10 +31061,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -33997,10 +31069,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d18b5e648be40b0ea52fc8b10bcbae9bd4325f0e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34008,10 +31077,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34019,10 +31085,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d194d6aa501f75ed24fc399ee594fb77341e5d38"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34030,10 +31093,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34041,10 +31101,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d1ade96319d9de82cf3b0480d226a5ad9f31eaa1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34052,10 +31109,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34063,10 +31117,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d1b53c2a386259ce958c34e2cb281514e14e0d03"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34074,10 +31125,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34085,10 +31133,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d290717010121ba2745e551e7a80be6e9f6d59e2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34096,10 +31141,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34107,10 +31149,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d2956eabd7b8b9d6b136731a3a4fa077f184aa13"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34118,10 +31157,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34129,10 +31165,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d2c828ee88b3e352fad3263f1e1ff901a41fc7a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34140,10 +31173,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34151,10 +31181,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d3124f8fe39ebe943d0d5a7087a51d7e852505bd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34162,10 +31189,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34173,10 +31197,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d333dc3999c6dcca82d85f72e65e10c07f12d978"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34184,10 +31205,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34195,10 +31213,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d3bec93d378e7466bacd95be431500ed30cba449"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34206,10 +31221,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34217,10 +31229,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d48a5cefe695d0494df4540ea395dcdd90a332ef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34228,10 +31237,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34239,10 +31245,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d4c3ed789ef8a888244504601964f0a0c994a66d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34250,10 +31253,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34261,10 +31261,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d4caa070bca058455b68c7b96961e3ca0f151b32"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34272,10 +31269,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34283,10 +31277,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d63251b34cf38052b657d62e353aa42d905e52c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34294,10 +31285,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34305,10 +31293,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d65f32b4af92080a496fb0965075c060c70ee444"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34316,10 +31301,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34327,10 +31309,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d712d007679af5438c7bda723ddc724c2e57b0c1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34338,10 +31317,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34349,10 +31325,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d80ba5bbc230065821c0c6530f70bdf205e817cc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34360,10 +31333,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34371,10 +31341,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d8137be32de0a676678672fe6f82992b2ca61fef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34382,10 +31349,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34393,10 +31357,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d8bbba8dd44b71161c835cb09610e47401de44e3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34404,10 +31365,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34415,10 +31373,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d913cc4e8f2900d7035d196fd62707cf1194e02b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34426,10 +31381,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34437,10 +31389,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d91e9bf6b6c78f35a68ba877f3325b3c1ee3db35"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34448,10 +31397,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34459,10 +31405,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d97ade864dccd3eea245411665e5126f97302063"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34470,10 +31413,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34481,10 +31421,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/d9f752e6e02987d7bfe6f0f4c4d70644d357fef5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34492,10 +31429,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34503,10 +31437,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/da23c62c70f6c1174adc08093c429f1ec657921a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34514,10 +31445,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34525,10 +31453,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dab32e8bb17a9bd7b04b8b895b7b48c27d38ef51"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34536,10 +31461,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34547,10 +31469,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dacc3689e0a7b90aeebfaee000adf89e95e50cf9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34558,10 +31477,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34569,10 +31485,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dad2c9af972d2e21c4437f0d94fdeacd7c8c7641"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34580,10 +31493,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34591,10 +31501,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/db7c4b56e701832634e61cc0b3ab5206fabf518d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34602,10 +31509,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34613,10 +31517,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dd0e562fcf5edda051585b70d3b3780a9a6a2818"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34624,10 +31525,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34635,10 +31533,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dddf3303e3e8e558ca6f147ec11d8195b6de30bb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34646,10 +31541,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34657,10 +31549,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dde3b1c08399b61df7de4997194d9392c2e4c3cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34668,10 +31557,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34679,10 +31565,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/de838de0352fc7ee32452bc83043cf587176e120"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34690,10 +31573,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34701,10 +31581,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/deeec423355ed885b906c6770c96d3f17583fdf3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34712,10 +31589,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34723,10 +31597,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/df616ee922cc89908b771e5276e47abcbaff1346"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34734,10 +31605,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34745,10 +31613,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/df8ef8bf4069afd375066fbb74cbe137f73db829"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34756,10 +31621,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34767,10 +31629,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/df949398b0b614309219c4128b167746e16a1ead"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34778,10 +31637,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34789,10 +31645,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dfe6d60fd53eb8f4174366d1515c5a90ce10bf1b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34800,10 +31653,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34811,10 +31661,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/dfefc5d84c18606a3aefd5bb721a06e192b4420e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34822,10 +31669,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34833,10 +31677,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e022322a04b3ac1452055563bb41976a03a146ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34844,10 +31685,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34855,10 +31693,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e06db057637f6738a48464cc2d65d7399fe296e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34866,10 +31701,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34877,10 +31709,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e0e7112238b555fdc12a1c5e9adb50703ae56a43"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34888,10 +31717,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34899,10 +31725,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e140f7efd72850d181a0145bb9ea7d92e61dec95"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34910,10 +31733,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34921,10 +31741,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e1a0398910c28ad61e065e98e884a7492f6dc594"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34932,10 +31749,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34943,10 +31757,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e212833dd63750f436254c0c81f1ddd42fb9a17e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34954,10 +31765,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34965,10 +31773,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e23c0abb4f625880dbae1cc81ce5b146992f5d36"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34976,10 +31781,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -34987,10 +31789,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e33f7d7998fe6e12ecc4014c8434e4ca591371b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -34998,10 +31797,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35009,10 +31805,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e401c1abdd1ef0458dd46e35167c4734667ebcc0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35020,10 +31813,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35031,10 +31821,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e42a9e07845680b8aad95408657c87b01873bcbe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35042,10 +31829,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35053,10 +31837,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e42fc248764aac6f6e0af5b5705272f82101287f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35064,10 +31845,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35075,10 +31853,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e4ba9f46387c5687fb9003724893c0b199debf2d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35086,10 +31861,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35097,10 +31869,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e55693473101ac4626e04012beb1b9b6d93a0a94"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35108,10 +31877,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35119,10 +31885,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e57acbf9e36c755cc50b00bc868c01ca1c1f6842"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35130,10 +31893,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35141,10 +31901,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e590a42febe0442ddf632b05cda112b3aca43380"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35152,10 +31909,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35163,10 +31917,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e5afbabdb437dfc44f06ddf8b9f793868e8fdde0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35174,10 +31925,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35185,10 +31933,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e5d120938961b8ed1e0f46e342683432b9081dd1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35196,10 +31941,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35207,10 +31949,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e62f5243dd375cb4b71c864a18ddd50b5b99762f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35218,10 +31957,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35229,10 +31965,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e6660a661f0adb7be809c558ca15573add24f686"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35240,10 +31973,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35251,10 +31981,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e66b054263dd9e7ea90d7dfaee555e2f24bfb60f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35262,10 +31989,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35273,10 +31997,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e72218971bac83f556e86b0a65ec303e2a05eac8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35284,10 +32005,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35295,10 +32013,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e73a05b1cf7dfeeada6356bb18ec4381485bb3d0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35306,10 +32021,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35317,10 +32029,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e75fa90650f1d67ff9849024e88a91300690778c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35328,10 +32037,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35339,10 +32045,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e79ffffd4bd565b2b5bb8d0f191c8e34385de085"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35350,10 +32053,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35361,10 +32061,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e8c24e95b095fee6053a49f51326479b60949424"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35372,10 +32069,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35383,10 +32077,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e8fd7c4270b5f2cb56fb06684858c39c7ccfa909"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35394,10 +32085,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35405,10 +32093,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/e921037de2e963b653e881fba095eeb33799d749"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35416,10 +32101,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35427,10 +32109,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ea2cf809383d8725bec1b44ab774f04b3e6d5ae5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35438,10 +32117,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35449,10 +32125,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ea351febbe2c4e73fb0e0d34e7d2a23ff46b79f4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35460,10 +32133,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35471,10 +32141,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ea6cc4b0a83ac8d578c4927f3c9d5a57a4464df3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35482,10 +32149,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35493,10 +32157,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/eb342f6fd92411d7beb1f82983a19849d45ff46f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35504,10 +32165,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35515,10 +32173,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9367a74ba61abe8d5f5fdb7c1c840b2d27dab7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35526,10 +32181,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35537,10 +32189,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/eb9faf5efb229c562a6825f930b8316f2aff2864"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35548,10 +32197,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35559,10 +32205,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ebbc2aa89ec745a7201eb4aa1aded15d35e4206c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35570,10 +32213,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35581,10 +32221,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ec012a94d14659f311451e89e757bd06a93d30b8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35592,10 +32229,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35603,10 +32237,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/eca1d41de5486c09c6aa7767289daa7185379220"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35614,10 +32245,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35625,10 +32253,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ed9a1a597bad76e9ed9e52ba2e5c80304583c006"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35636,10 +32261,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35647,10 +32269,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/eda5d435276e002a08358fd67a2bbd75902236a3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35658,10 +32277,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35669,10 +32285,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/edfcf299569efc4788937d2cd4ca0e625fb9e527"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35680,10 +32293,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35691,10 +32301,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ef264406b5a2263cd7a9145f7ca68ed8fd6c50ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35702,10 +32309,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35713,10 +32317,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ef4127bfbb6d1b7490a076c4af795b1e40b2bcd8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35724,10 +32325,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35735,10 +32333,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ef930a505edebc0ff6ca7eef7549bbaa21d95b4a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35746,10 +32341,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35757,10 +32349,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/efa80ac7daa93de08fc91bdf2a912269a3f2396a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35768,10 +32357,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35779,10 +32365,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f0a7e39c194ee3f30312ae2f4827bdbd43416a42"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35790,10 +32373,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35801,10 +32381,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f0e8450c85a3c6dfaa50ee65399270c59a127088"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35812,10 +32389,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35823,10 +32397,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f0ee077bc982be02a547d81d85e5c69e36fe38fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35834,10 +32405,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35845,10 +32413,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f1a6421ddd077ba6971eee7ba1084ed66fd1bee3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35856,10 +32421,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35867,10 +32429,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f1b592b7e1a5af83eea1bccc2d7bcca302173d57"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35878,10 +32437,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35889,10 +32445,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f224ca8baea51bbc26a3814af9253483c66ad8f8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35900,10 +32453,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35911,10 +32461,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f238d0b5973d8d4081ba7036711d8c3091554e28"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35922,10 +32469,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35933,10 +32477,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f2bb9fb90c0fb7dfd765e1c528330881e721c7d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35944,10 +32485,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35955,10 +32493,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f37b108d4dca7cdd24f464ad880a57aa038528ae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35966,10 +32501,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35977,10 +32509,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f3c0468b37c09b998096d18cd13a522dec09888b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -35988,10 +32517,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -35999,10 +32525,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f47f636b8e22e8db428ea956d9336bd12b928a9e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36010,10 +32533,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36021,10 +32541,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f4d74d507a7171e5f116bf750a20435eeaf81f3f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36032,10 +32549,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36043,10 +32557,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f4dc057d97c34f31ea542d67593b8d3a295bf52a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36054,10 +32565,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36065,10 +32573,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f59e8ceab587254d408a4af86cd938d896eb0b6d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36076,10 +32581,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36087,10 +32589,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f65e41c8021049c4ca8782902de25d6791bae63a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36098,10 +32597,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36109,10 +32605,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f693fbf860c6cd1090a6dc220c20eb5c51543208"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36120,10 +32613,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36131,10 +32621,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f71de0dac54e25fe658e8c78208b855d3f0db23c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36142,10 +32629,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36153,10 +32637,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f73f63e243ea6484a97ece29bb8d4f33841410fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36164,10 +32645,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36175,10 +32653,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36186,10 +32661,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36197,10 +32669,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f7b309af25b6ae5029a9548142333a905e3c99be"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36208,10 +32677,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36219,10 +32685,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f7c45ab223810b0b6b77042055a86800e5ec213a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36230,10 +32693,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36241,10 +32701,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f7c686af20a3cf5b5c569a570656df83db3fe165"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36252,10 +32709,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36263,10 +32717,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f8373fd74d8a4eafc7d015e2643c2a277656b716"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36274,10 +32725,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36285,10 +32733,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f861e708b6d0e0ca691d88a31e73f3d2643deacd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36296,10 +32741,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36307,10 +32749,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f8a02d7d9317428fd142c05f9428840d3d30aff4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36318,10 +32757,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36329,10 +32765,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f91f27afa6e72fd653eb41b316ad2d2e88fc0bb7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36340,10 +32773,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36351,10 +32781,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f9540ce65b08ec33d9157d03bf5231b767460d4a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36362,10 +32789,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36373,10 +32797,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f96f406763e8d6a53de319e67e942696cc10a4b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36384,10 +32805,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36395,10 +32813,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f97d97545054500e8035ac3c73957d0f75b2715b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36406,10 +32821,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36417,10 +32829,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fa423921deeaeda55d2ff74e9541e5d89ddc7d36"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36428,10 +32837,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36439,10 +32845,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fa45cfbecd8680693570d90f214abd9febf681a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36450,10 +32853,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36461,10 +32861,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fa99f1f9be3384be1229657b26374545228c2318"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36472,10 +32869,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36483,10 +32877,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fae6e98220e0943926fe570bd32ea7f0dcd34feb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36494,10 +32885,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36505,10 +32893,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fb0bfb049d4a99a529ff339218a5d962983118d0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36516,10 +32901,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36527,10 +32909,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fb9505e4511c982f4f26675979a138a3408d80e2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36538,10 +32917,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36549,10 +32925,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc0cb8a6287528bfbe1e43d452fc40a180c221f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36560,10 +32933,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36571,10 +32941,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc2bb278363a5f7d4dbfe8d123a8092a99d5a9f4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36582,10 +32949,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36593,10 +32957,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc37856ff6d7a1cce83efad8cc7727f5aac44200"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36604,10 +32965,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36615,10 +32973,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fc9879794ab7f7cdc4959c204788fce6146c0579"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36626,10 +32981,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36637,10 +32989,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fda1618a9c7d2d7c22234b3c7f996116bc5e6e4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36648,10 +32997,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36659,10 +33005,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fe680903482b870b820690f61cc607e5d26a652a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36670,10 +33013,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36681,10 +33021,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/fef5208b90316cac47bdc95ffd384b9c9a8a7c78"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36692,10 +33029,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36703,10 +33037,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ff6138cc4a36bad9a76401072dbd41fd2ad437cc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36714,10 +33045,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36725,10 +33053,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/ffd263ba66c7dd7180f5b8e13a3f7b8bf169dd79"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36736,10 +33061,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36747,10 +33069,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-0fa0559576ad2a45b06d0bfb84115963d7d48206"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36758,10 +33077,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36769,10 +33085,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-82b2ae1d2174f5782b32c89ce60f68bf5a30c0e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36780,10 +33093,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36791,10 +33101,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-e45753da8952c41715a65010250efba0a4a4d243"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36802,10 +33109,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36813,10 +33117,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f1536451f002afe7a6ff34a3755026e4ace1fee3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36824,10 +33125,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36835,10 +33133,7 @@
       "test/core/end2end/fuzzers/api_fuzzer_corpus/timeout-f40dcae7e7cc52e44d49c7fd5452e33a77ef4499"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36846,10 +33141,7 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36857,10 +33149,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/001946397b463a3562c5951f6325069d8a3a2ded"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36868,10 +33157,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36879,10 +33165,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/00c8446b230bebbae2b473552b174a06b446337a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36890,10 +33173,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36901,10 +33181,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/01b05a9eaa95950f697627264bbd5006060f68e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36912,10 +33189,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36923,10 +33197,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/01c9569f5835a576fc50ea03141662c7ef1aa088"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36934,10 +33205,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36945,10 +33213,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/025215e11687c7d2e0055e5b2b902d08e0436f78"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36956,10 +33221,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36967,10 +33229,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/02ba99615d1d69eb328adce99670f659959c1bc1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -36978,10 +33237,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -36989,10 +33245,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/03abf728ac1d833c2d4a9ff7e0c912b949edc04c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37000,10 +33253,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37011,10 +33261,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/03beeae554ed6952e94a0bf32cdbe9f97eb3ba43"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37022,10 +33269,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37033,10 +33277,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/05b4eaa1e1a759aa6b23521c06d915174e8fec88"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37044,10 +33285,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37055,10 +33293,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/05cfa5deaead322efce84b710758a24440cef16e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37066,10 +33301,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37077,10 +33309,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/07048654244e377ddf246e8cc18f71443035cd2b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37088,10 +33317,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37099,10 +33325,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/078232947d7ff25557e836b4e9e907214e99b320"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37110,10 +33333,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37121,10 +33341,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/08a8a647b6a8f47ae10852322d14832fc15021f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37132,10 +33349,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37143,10 +33357,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0949f4ac376808482be6ab2dcb18a2ecb08d9a52"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37154,10 +33365,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37165,10 +33373,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0b6fa6330bce65dfe7f758bcbfca2a2844dd07a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37176,10 +33381,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37187,10 +33389,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0c30868720d5e1a19ff23c53740749c37a43540d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37198,10 +33397,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37209,10 +33405,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0c5e0660ddf5f14af8f3fbcc754a967506994c9b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37220,10 +33413,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37231,10 +33421,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0d36da88698737ec1ca7b55b30fe2b2036de7e19"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37242,10 +33429,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37253,10 +33437,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0d8c547f1d261ba07c2648bae009636c17709600"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37264,10 +33445,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37275,10 +33453,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0dd33527db106a3e84172e8f2189734b00ced4ed"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37286,10 +33461,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37297,10 +33469,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0e354d89d02c6c5cbba2f140dab7b609bf00793e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37308,10 +33477,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37319,10 +33485,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0e3a18f0f08dcb9dd174627bc997f74a5c7a1390"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37330,10 +33493,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37341,10 +33501,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0f83cbec19c834f534f353f4fce20c0cd88231f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37352,10 +33509,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37363,10 +33517,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0f98d7d56e9a99b97e5dc7eb122ef22e9684077b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37374,10 +33525,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37385,10 +33533,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/0fd8859246740606c498755ab00d6147abcfec00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37396,10 +33541,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37407,10 +33549,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/100bb8f2e6a0b41da13f4edb5c15d4a04e564840"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37418,10 +33557,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37429,10 +33565,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/101305ccd08c7a8bd0c2913c37d3dd0d39d4bb64"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37440,10 +33573,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37451,10 +33581,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/10f5d1937cb068fee7f85e2654be2bfe77498bb9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37462,10 +33589,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37473,10 +33597,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/110074f658208166d52897c9266fc46cbaa8af36"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37484,10 +33605,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37495,10 +33613,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1160214cdb23e8fc187078a8d6796656c1ade925"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37506,10 +33621,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37517,10 +33629,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/118ffddb43ccf9dae8bdb4702232d1dc39b021f7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37528,10 +33637,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37539,10 +33645,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1306c4c6ea714d4db0e4d814c944d8d40335e0fa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37550,10 +33653,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37561,10 +33661,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1402bbcac6fa24eeb0475250e33f704096e2fb45"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37572,10 +33669,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37583,10 +33677,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/143e0d4f546bbb984a7c3ac1c60a37dcf85ea58d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37594,10 +33685,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37605,10 +33693,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1576c915ee38f5bd19f285ed0ed47e36026518f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37616,10 +33701,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37627,10 +33709,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1602788cf33d0354d6d48ead549e5137cd211979"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37638,10 +33717,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37649,10 +33725,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/17b1758fc7cd69a00d140f113b1ac894023ff20b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37660,10 +33733,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37671,10 +33741,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/18185cbf9e9cfc1fd28d27ed0d651d7cee6a2c06"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37682,10 +33749,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37693,10 +33757,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1875a4acdcffe505ca92ea8af8d9d6b174736e80"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37704,10 +33765,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37715,10 +33773,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/18850965807039500c7f5450a907e86825cf823d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37726,10 +33781,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37737,10 +33789,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/18926cdc608599e8df6b0f4df99d4ad856ef4373"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37748,10 +33797,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37759,10 +33805,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1965cd58fc41578a837231c69075994da2e871d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37770,10 +33813,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37781,10 +33821,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/19e984af62c36fe982284c87421d8ee46173e9f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37792,10 +33829,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37803,10 +33837,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1aee32faadffa3c2ec508e8fd30006423665488f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37814,10 +33845,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37825,10 +33853,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1ba08b63181066ffab948eb301a6a2363a81872d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37836,10 +33861,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37847,10 +33869,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1c222dae4e2cde1fca9f9bf6226200f70d625342"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37858,10 +33877,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37869,10 +33885,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1ca51ab2fefef4f549c4a8e7f4910c6b5a4b4b1d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37880,10 +33893,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37891,10 +33901,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1cbcaad71950c62d41bab50f9c242d014cc0d904"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37902,10 +33909,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37913,10 +33917,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1d19042e6db2a90c52fcc3cb0aa76f2fd335014e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37924,10 +33925,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37935,10 +33933,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1d458954e8174bbb5dd4d0053df47d6b7adf290a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37946,10 +33941,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37957,10 +33949,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1dc86d0febe4adc5353230cea24b5f7cce829283"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37968,10 +33957,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -37979,10 +33965,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1e84d42fcf18bbf81ef6e8a16a0c57abbf8d292a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -37990,10 +33973,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38001,10 +33981,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1f040e756f76357979f317e0c6541f72fd93df06"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38012,10 +33989,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38023,10 +33997,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1fe7d16ffc2084d5d3c5f23d16902ae8810a5393"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38034,10 +34005,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38045,10 +34013,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1ffc4952225dda41de59603e487ff7fd3026b958"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38056,10 +34021,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38067,10 +34029,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/20216d27af2b3dcc83d944e5f7a489ed2eff98fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38078,10 +34037,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38089,10 +34045,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/204093594b568ada9c7857a971f2a4b42123ee1c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38100,10 +34053,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38111,10 +34061,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/20539e464ced1a0a63d74bae731ca0a75db05967"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38122,10 +34069,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38133,10 +34077,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/205cf2b6994f10b783aa0a06938a5e47cb581126"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38144,10 +34085,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38155,10 +34093,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/207e12d6a84dc8fa020b3a60b3f75932ca4f8fa5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38166,10 +34101,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38177,10 +34109,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/20ea73876cc9cd5b3d3efa1bda21deb5eac2d61e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38188,10 +34117,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38199,10 +34125,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2166c7093c424a2136c4cb8b10d0b124047320d4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38210,10 +34133,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38221,10 +34141,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/21a6a133f3d1e06c077032ba56a7df4161f62efe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38232,10 +34149,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38243,10 +34157,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/224fa2e83fd8ecaa9059ad37a55238f74b8e0829"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38254,10 +34165,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38265,10 +34173,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/230527b90b0179139c961aca426187893191fdf2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38276,10 +34181,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38287,10 +34189,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2467fa0f8a9f4bd121f544892f0782498b2df533"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38298,10 +34197,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38309,10 +34205,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/246dcf347eba7f4d4e04d97dabc002f0acf2164e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38320,10 +34213,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38331,10 +34221,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/252de25a5237c830ad8c5e4732c176e03785042b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38342,10 +34229,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38353,10 +34237,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/25761748660a64111a8daa46f72ea1f336c2046a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38364,10 +34245,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38375,10 +34253,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2585dc7b6c095e978b56e0249fe9b5c61a4840af"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38386,10 +34261,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38397,10 +34269,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/25949b623930511f9d43fea4aa56a4389a28e11a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38408,10 +34277,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38419,10 +34285,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/26110f21dcb0fde99942e631366ebbd9d895860d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38430,10 +34293,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38441,10 +34301,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2663ce44ca5832381cbbdf7b252e39d6df021a93"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38452,10 +34309,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38463,10 +34317,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/269afce3bfff993c05c2a3b28c6cf3dfb3f461d7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38474,10 +34325,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38485,10 +34333,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/26b8a9d27cef1ce4c3c5aefa2dee50001aab4b13"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38496,10 +34341,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38507,10 +34349,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/27f37037525aac7a41ffbadd6ce52e5a1851a2b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38518,10 +34357,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38529,10 +34365,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/289cdf83f89f70a13e9078259f764a339617c827"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38540,10 +34373,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38551,10 +34381,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/28ee8cae75efa07da9649933a9482d00643b5395"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38562,10 +34389,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38573,10 +34397,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/299034b9e0cc8d91c049c489dca6d1a2b8b08959"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38584,10 +34405,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38595,10 +34413,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/29952a15459cce9c647255ab5d7486df0507eff4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38606,10 +34421,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38617,10 +34429,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/299faa82b90ef12421d160148dfb6cd0077b57c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38628,10 +34437,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38639,10 +34445,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/29be7d33920998bae7329d77d4c81989eae91647"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38650,10 +34453,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38661,10 +34461,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2a8260b23460f90f770cedcafa14868d24db201e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38672,10 +34469,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38683,10 +34477,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2b230a7b55b17f2f8e89c4be73a662d781f7fb3c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38694,10 +34485,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38705,10 +34493,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2b71439e9ebf611a92386b9f21ad44bde7926184"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38716,10 +34501,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38727,10 +34509,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2c342f8715556398d49bcf3343b5a249d968e19e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38738,10 +34517,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38749,10 +34525,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2c6e69067c68c145dc5d3a60b86d8081fdf95d0d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38760,10 +34533,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38771,10 +34541,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2c79128c697b53256c56b9c57c7259866e0e2347"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38782,10 +34549,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38793,10 +34557,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2d83097b3cbd2245b085e749fe923fb590790e0c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38804,10 +34565,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38815,10 +34573,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2dce4a1fc4bb00bfcd43d549a3785913c9280369"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38826,10 +34581,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38837,10 +34589,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2deb1aeb93c2abca4177b1fe886eb354c83fe8af"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38848,10 +34597,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38859,10 +34605,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2e9860242d55a74cec244bb5c5445eb2797a3157"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38870,10 +34613,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38881,10 +34621,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2f288409c5f3cf2a10b3e1970a9c3d037dabe080"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38892,10 +34629,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38903,10 +34637,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2f5f6d281a3d0473a04a17cbcbc6fd06cb73fd8b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38914,10 +34645,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38925,10 +34653,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/301e10bb6d9f60d91efde4e0c48893203a5b8b88"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38936,10 +34661,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38947,10 +34669,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/302a11eb9b9687464b88c9a670da371f6a6c57e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38958,10 +34677,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38969,10 +34685,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3128887b8e02f1873ed6b36766a870543269ea00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -38980,10 +34693,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -38991,10 +34701,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/31545e9fe4c6aa43329dc0d4a735842574fcaaed"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39002,10 +34709,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39013,10 +34717,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/31d12a2b1378120d15b4097371d792daa95de0a9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39024,10 +34725,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39035,10 +34733,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/320dc10f64b59b0eb0ae140912eded1ef9276556"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39046,10 +34741,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39057,10 +34749,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3336748264594689041e4080b51bc56f716d0689"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39068,10 +34757,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39079,10 +34765,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/333d0554d91872e693d118d6988132d95b7920ae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39090,10 +34773,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39101,10 +34781,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/337d579ab5eb157d7d58e9287d447976062cbd8d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39112,10 +34789,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39123,10 +34797,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/33c32a80db0ec311ee8744991c5b19345bfd8fe9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39134,10 +34805,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39145,10 +34813,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/35fbd748458e3fd6068957d46a9fbb2b0113d2b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39156,10 +34821,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39167,10 +34829,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/361c6f4374443671f039fd9659577e4460178020"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39178,10 +34837,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39189,10 +34845,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/368c75135a7341a96627d0dcfc4b2081003d8979"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39200,10 +34853,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39211,10 +34861,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/370b2c16cc353621091eda4964d4c4329205ffc3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39222,10 +34869,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39233,10 +34877,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/370f893353f792c99754ece93baed2105decd71e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39244,10 +34885,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39255,10 +34893,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/375c2462d6ae891222686f9519294811fa5de010"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39266,10 +34901,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39277,10 +34909,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/379b177d55b1eb86ddb66dc3a037fd8283ee07c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39288,10 +34917,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39299,10 +34925,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3a01c85934363bd2067f76d0d40c491f9f846c8a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39310,10 +34933,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39321,10 +34941,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3a3eb65d51f30f4cd16cc6f8436a5b00702a5712"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39332,10 +34949,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39343,10 +34957,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3ae87e3150628c422ada13002b08f2d9c5a9d78e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39354,10 +34965,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39365,10 +34973,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3afbc4c35885b79c6e6628afce93ce852d7767de"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39376,10 +34981,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39387,10 +34989,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3b3b4f9a985ec49f6c54bae798208625e5adb777"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39398,10 +34997,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39409,10 +35005,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3c7b516e302ad3503a933b5dcfb8c58acaea07a0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39420,10 +35013,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39431,10 +35021,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3d4d961511c1de95a81b129f2fe96390209de2e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39442,10 +35029,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39453,10 +35037,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3da7577acd806e1d92d48211b22fd9db352fd834"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39464,10 +35045,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39475,10 +35053,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3e8f531043a07df2280bca73fe4a7987d82ce67e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39486,10 +35061,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39497,10 +35069,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/3fcc2da89f438b247cb5b4b41e15aceccfa75b36"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39508,10 +35077,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39519,10 +35085,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4040224f3df361afe45bce682d56d26f13829413"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39530,10 +35093,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39541,10 +35101,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/41aad2f11a7ab418213352e84de872d9997db8d2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39552,10 +35109,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39563,10 +35117,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/41b499e86caed7b48c59aaaf51360c3c71029400"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39574,10 +35125,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39585,10 +35133,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/42554ddbe59429d30d718282ca606ed8b5a90eb3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39596,10 +35141,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39607,10 +35149,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/42c395ab373346fb283ace021bdc1f6428f92f80"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39618,10 +35157,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39629,10 +35165,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/43202ad9b1a689d919ab9ae91c2d0223394867bf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39640,10 +35173,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39651,10 +35181,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/438789ebe8a5d676f6f03ef8329c3d77579aeba4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39662,10 +35189,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39673,10 +35197,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/44153f8b7af5a3b27625a46af89e1712daa3ae8a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39684,10 +35205,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39695,10 +35213,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/44d64196fb2e8d9506734a81304f6ef17b9bc29d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39706,10 +35221,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39717,10 +35229,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/44f0973ec77d6fb9eac931e84fa7ec6fdadccca6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39728,10 +35237,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39739,10 +35245,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/450f9f56c80c8b71e37302a254ba7c3f7298dfd7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39750,10 +35253,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39761,10 +35261,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/451e69ab65e0fe0a5731622ed21ab2b5380df677"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39772,10 +35269,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39783,10 +35277,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/46dcb1c399e5a514267fbbd5a50939f34e0ad6be"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39794,10 +35285,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39805,10 +35293,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/47e8aee44c2c7bd870f15b50fc085c5a8030edfc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39816,10 +35301,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39827,10 +35309,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/489e9830136adcc53f4b191199c33504685b3737"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39838,10 +35317,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39849,10 +35325,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/49112bf1277d93601eb6526fe9ee9d45864d759e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39860,10 +35333,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39871,10 +35341,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4a11af9ef42aeb36691185520be281c4760ad27b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39882,10 +35349,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39893,10 +35357,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4a4553c2e939cd50981bc38e8ddb1f2109ddb3a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39904,10 +35365,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39915,10 +35373,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4b2ce115b15082ed951f4dc0b432da6a9d37bf85"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39926,10 +35381,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39937,10 +35389,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4b585eb75ebca2187c0aa5a6abe4c8125aa80127"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39948,10 +35397,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39959,10 +35405,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4b611a3748757e2fa89fcd2fb22d34444fbf5b42"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39970,10 +35413,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -39981,10 +35421,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4e21c4b5c454df51c102f09ea1ba78c42133ee16"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -39992,10 +35429,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40003,10 +35437,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4eaff3c3515a1ca019d46b9be0b7318eaffb63d1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40014,10 +35445,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40025,10 +35453,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4ec113a0126fc5746fa3f955727d009040e8377f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40036,10 +35461,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40047,10 +35469,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4f5b9d5c707a35084918c272efd1295d301ca0b5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40058,10 +35477,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40069,10 +35485,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/4f8b5b7489cca36225acec0f9aa7f5c556d79d8d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40080,10 +35493,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40091,10 +35501,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/50ece7ea16659b4e1a2284cea963fab662c19e6b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40102,10 +35509,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40113,10 +35517,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/514c9cd7b6519b596900d924ff2caa173d688f4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40124,10 +35525,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40135,10 +35533,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/51c6c5297acebf9d21a8a7d6261d0a17c2adfb56"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40146,10 +35541,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40157,10 +35549,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/52c00bde7f4af95a86deb0a6717d1faf2828a939"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40168,10 +35557,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40179,10 +35565,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/534c900ade27c8f7fccb1f3b7e7703f77f13a8f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40190,10 +35573,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40201,10 +35581,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/5360327e8bc8969f31b364df3081b51a1e03900c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40212,10 +35589,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40223,10 +35597,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/542c958c84d1e319b9ba23c52de2c4bca08a8dc7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40234,10 +35605,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40245,10 +35613,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/5482dc4af170def9c183315efaa48f9c186926a1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40256,10 +35621,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40267,10 +35629,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/54e67ed1036f3f5b315e0e3c02948c30eba900fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40278,10 +35637,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40289,10 +35645,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/55ca8f6d9928c239a7abb32554463e6e1e1ee084"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40300,10 +35653,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40311,10 +35661,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/570ca8d2555dde94aa3b3121e8f5256e83eabe5e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40322,10 +35669,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40333,10 +35677,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/57ee6efc38f4c544a3ea3e5e73987e825bdf2980"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40344,10 +35685,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40355,10 +35693,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/58a067ec6eda7191a5a910d8120633271d3af074"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40366,10 +35701,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40377,10 +35709,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/58d6dffb65a1fe1bc4e3fa970a15459587a32f77"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40388,10 +35717,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40399,10 +35725,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/591ef436ef8cc982b48fd827a4555b57cd9780e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40410,10 +35733,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40421,10 +35741,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/59d78f6397f0483d139f5bd0a9f264156f34acc4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40432,10 +35749,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40443,10 +35757,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/5a2447fdfdbf123f4592c1284007b7d50a01750b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40454,10 +35765,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40465,10 +35773,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/5ca233a53e3e425cc12e04b466a49789291eaa00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40476,10 +35781,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40487,10 +35789,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/5dc7b2086a39f56d8b9135f524d34a01fcabafd8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40498,10 +35797,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40509,10 +35805,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/5e1659e7cd840ab3f958273ebffdd215f2c81da6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40520,10 +35813,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40531,10 +35821,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/605e474e9d9436488dfe084d348908e4dfab81a3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40542,10 +35829,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40553,10 +35837,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/6066fc9e28b4ce704230f0e8cf21e7c3195aa2a3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40564,10 +35845,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40575,10 +35853,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/607dac8012f188cb035b189fc3637028137023e0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40586,10 +35861,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40597,10 +35869,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/611343a6b8879b393ba2f38ed41c7f5355355920"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40608,10 +35877,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40619,10 +35885,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/62c843359941660da3fc9eea62a5732aaa3be283"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40630,10 +35893,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40641,10 +35901,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/636a19b8f50c4efccccea83ab78a933d999e41fa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40652,10 +35909,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40663,10 +35917,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/64696e93ead18265cdac3fb37dae29ad3be6d764"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40674,10 +35925,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40685,10 +35933,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/64c0e0b4d9c2d25fdcb1e2bdcb999487fc096dad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40696,10 +35941,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40707,10 +35949,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/64cad305e1858eae27cd723778fb9f4b7052eaa5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40718,10 +35957,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40729,10 +35965,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/64d27dc9f984c49d421a5b0cb0391992d5aac1a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40740,10 +35973,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40751,10 +35981,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/653ec14661c40ea25bdbab4a7cb9371c669d10d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40762,10 +35989,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40773,10 +35997,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/66145518601b1405361df12570f6e0b2b9a2e5b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40784,10 +36005,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40795,10 +36013,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/662d81374a2c96f867ccd88a4295190827c45453"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40806,10 +36021,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40817,10 +36029,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/669256f857011c32f5757ec19b2e5b9a372f6c23"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40828,10 +36037,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40839,10 +36045,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/6749752b02f7d14fff9ac35f6b68dd62f5b49fcd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40850,10 +36053,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40861,10 +36061,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/67e72cea2b7042f08e8dfba5191d27bb390e4d00"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40872,10 +36069,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40883,10 +36077,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/685fbddd9ea612b25e325a50bd659997b4d77da1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40894,10 +36085,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40905,10 +36093,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/69542ed81b00a5ec8daaf4e8d509201eecd502c5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40916,10 +36101,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40927,10 +36109,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/69be4179b28e408a0574935e893c6986bbca0de9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40938,10 +36117,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40949,10 +36125,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/69e52eef5dd0c51012b5c974cf70f4074ba814a9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40960,10 +36133,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40971,10 +36141,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/6b1698d096095d4035ce67a8680b52eada00cce2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -40982,10 +36149,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -40993,10 +36157,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/6bfd3679f4e30aaaa1808e96c980edcfa9cac1c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41004,10 +36165,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41015,10 +36173,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/6e2796549e29e5066f780a5e926fd6e3bb362450"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41026,10 +36181,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41037,10 +36189,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/6e71553967212dfea2c9995f3641e582d8c2105b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41048,10 +36197,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41059,10 +36205,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/71106770243ccca03f5025aadb298ee3a825824b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41070,10 +36213,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41081,10 +36221,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/717695057d76b81c344ed8c23cc024195caa9405"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41092,10 +36229,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41103,10 +36237,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7353a7b2ea9f61325728b2f118416549e89dd79b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41114,10 +36245,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41125,10 +36253,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/739228a1400cd69c47f110002c34dbe1661e8c41"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41136,10 +36261,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41147,10 +36269,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7465a4955a064e8f1bb777d4b0de5b3df8469831"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41158,10 +36277,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41169,10 +36285,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/74e6831be67485fb59b8e226fb8a48d88faf57d6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41180,10 +36293,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41191,10 +36301,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/753efc088d6023ca113a12acc54015a22f7daf9f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41202,10 +36309,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41213,10 +36317,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/759a1e2e34cad14321a5e5790b1e6a783312fea1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41224,10 +36325,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41235,10 +36333,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/77ea9180617391d8503427a1c060538182f7729f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41246,10 +36341,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41257,10 +36349,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7885df741c88ca4b539798d9985c445f41cc2929"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41268,10 +36357,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41279,10 +36365,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7af3156d286a32a6a6fede46d93ec12ded1ac138"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41290,10 +36373,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41301,10 +36381,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7af41e5391204f4596cb1461792e2e23f9390b7b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41312,10 +36389,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41323,10 +36397,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7c2e48b0d08aaeb95b5ca26036384aa2cec9de77"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41334,10 +36405,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41345,10 +36413,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7c73c0671308e37a8075a20863e70e180ef8b6ea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41356,10 +36421,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41367,10 +36429,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/7e18989175bba8d9aea34413d6f328549e1c6825"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41378,10 +36437,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41389,10 +36445,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8021c689f0078c5c59419c9959f5c58472245bc7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41400,10 +36453,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41411,10 +36461,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41422,10 +36469,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41433,10 +36477,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/80bd4827db81a1da28fae8c150f5e2d46651c598"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41444,10 +36485,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41455,10 +36493,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/813d2c34c0df8d4a918e68e58cf0ae3703d0d46f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41466,10 +36501,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41477,10 +36509,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/824152f7bd022996b41327002f6971cd9900b265"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41488,10 +36517,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41499,10 +36525,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/829a1dc2bcb22a230df8aa20540def0e16864983"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41510,10 +36533,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41521,10 +36541,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/82c0e02a867a5fdfb805e01ebf1a008220311e27"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41532,10 +36549,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41543,10 +36557,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/831248cea079b629bf0ef6d9d02c159d6f8ed41b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41554,10 +36565,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41565,10 +36573,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/834527ef0bc1572c584938ca7fe5336961754708"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41576,10 +36581,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41587,10 +36589,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8382c249fc9c7a248833d89de554e63807c475f7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41598,10 +36597,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41609,10 +36605,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/83baaee9b46770d9eef0e161a6e52cda76e3b043"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41620,10 +36613,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41631,10 +36621,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/842cea88bccc41d7e2625dae8ff7268ee79e9f57"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41642,10 +36629,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41653,10 +36637,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/850c639595eae3cc9c2cfef473e28fd4e8174dc8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41664,10 +36645,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41675,10 +36653,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/857ce08213a5106c746767352c6863d7bd134208"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41686,10 +36661,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41697,10 +36669,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/86eb156ff8ddd7edc535840d412342ada6f3b184"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41708,10 +36677,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41719,10 +36685,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/871a2e4d73a7fbb50f71558517a2f704b7fdb868"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41730,10 +36693,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41741,10 +36701,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8795e24f23db36e4f9ab609c9faff601b984eb6f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41752,10 +36709,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41763,10 +36717,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/87e97b460042d045629263ad10ff3de7b000f0a1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41774,10 +36725,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41785,10 +36733,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/89cf42c02d7135afa6c81d8a0c2bc4c3df557769"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41796,10 +36741,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41807,10 +36749,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8b7b914723bfc23ec650cb91d209141641fba09f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41818,10 +36757,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41829,10 +36765,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8b8b9fcdfff1f891b1694614b7309cb4a2098f4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41840,10 +36773,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41851,10 +36781,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8b8f6d58dff9ab0c37183ec93c9a600d5ba5d9e6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41862,10 +36789,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41873,10 +36797,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8ba00963037c9ff548b7a702497441799075f14b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41884,10 +36805,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41895,10 +36813,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8bacacba71bfa5c74fd74cb6577a49a7aec9cf1f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41906,10 +36821,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41917,10 +36829,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8c527bdf0f304a31866f71cdb298511041ecd320"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41928,10 +36837,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41939,10 +36845,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8d352ea63259e26e1bb61f5a8f78254be4e3e7b1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41950,10 +36853,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41961,10 +36861,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8dfc4e78007040009f37109f9ca928c31b3ebb49"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41972,10 +36869,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -41983,10 +36877,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8ea624983d766ed45780378a3eec24eb2faeb229"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -41994,10 +36885,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42005,10 +36893,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/8eeb8cf054ebd546ca0555ef1cd4ac6a08628917"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42016,10 +36901,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42027,10 +36909,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/90a9c3390752b94ca19a58cb2fe6267bc818f718"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42038,10 +36917,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42049,10 +36925,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9125277ed9ec5d59e51f3e1a8d97d25ef88a5d4f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42060,10 +36933,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42071,10 +36941,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/91916df7c8f04d8c2b6b8f4aeaeee6972ce0de74"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42082,10 +36949,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42093,10 +36957,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/92cce6dc5c31acd62347b15d89d52ab94b507e0f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42104,10 +36965,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42115,10 +36973,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/92ea0d3200665e1836ac12bed0837425cb9f43de"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42126,10 +36981,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42137,10 +36989,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9329b80d0125cc994d7ad36540c7a8265d76983c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42148,10 +36997,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42159,10 +37005,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/94108ac8420347598c7cee743b2a158b1270fb8f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42170,10 +37013,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42181,10 +37021,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/954ea72fdbeaf5b46d18c6d5bb77fc1a0f97569d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42192,10 +37029,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42203,10 +37037,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9552c3f6304af40224b800f3a3a5df3887a530f6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42214,10 +37045,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42225,10 +37053,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/96e5126447131d3d59cc6547f6b91d3433ce37c8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42236,10 +37061,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42247,10 +37069,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/970fccda0b34b59ade44d52e1212699b4d2419a8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42258,10 +37077,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42269,10 +37085,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/97c4b73f72b248b4ebf4bf30892d0db828a85297"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42280,10 +37093,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42291,10 +37101,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/98c0c0a3c8c05aec3082755a4635e65baecf4752"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42302,10 +37109,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42313,10 +37117,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/98da5edafac67704810f093b38c86e4c77b75349"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42324,10 +37125,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42335,10 +37133,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/98dddd3f679af150e9933bd864ae20e20b7aa25a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42346,10 +37141,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42357,10 +37149,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/999d0995c2f09beda8783eac95d7643a11d5c89a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42368,10 +37157,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42379,10 +37165,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9a43f48d4f6219618f8cc9e876880fe81109ad72"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42390,10 +37173,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42401,10 +37181,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9a4da2a37a26c114e1226bfbe1cf80ec5ca99a66"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42412,10 +37189,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42423,10 +37197,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9abf980e8909aeb31936553ca22ccfd8680c4dab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42434,10 +37205,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42445,10 +37213,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9b1355c6e2c43ce83001bbead09a79852e04feef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42456,10 +37221,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42467,10 +37229,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9b4d4ce0457f5300d6b4b309762acfdbc41e3965"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42478,10 +37237,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42489,10 +37245,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9bd059ff0a90e86ada1ba7e5b90ae04637ae9e90"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42500,10 +37253,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42511,10 +37261,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9c4eac3dd734a74673c76e6b21fd9c18cdfa831c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42522,10 +37269,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42533,10 +37277,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9d2dd744ba59c1e8ec091e23938e46d1bb5ee519"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42544,10 +37285,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42555,10 +37293,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9d362d2aaeee243a5b54621d8187c4b16f87c9f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42566,10 +37301,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42577,10 +37309,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9d6947df24c9ebcbec72c568d9708d7b1ecae63c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42588,10 +37317,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42599,10 +37325,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9dfdce1b090a559a14f9a5852f78547413b1d1ed"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42610,10 +37333,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42621,10 +37341,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9e2ab07030bd35a4c31df32c79aca5e76c1d04f8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42632,10 +37349,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42643,10 +37357,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9f0ab521c728be21e93112b2730c52bc1d6c0021"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42654,10 +37365,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42665,10 +37373,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9f2316ddcea948c947fbbf35ae87b767b8c1dc55"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42676,10 +37381,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42687,10 +37389,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9f9ed47f98b4905f1f6ef2b552a66905bdf79b1b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42698,10 +37397,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42709,10 +37405,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/9fee3212240d4bccfdab3696dbbc579b06d39982"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42720,10 +37413,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42731,10 +37421,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a09ef34c93fe0ffc13045f67b7ecec683fb72e98"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42742,10 +37429,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42753,10 +37437,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a30fc2605f4e74f7003f902ea4a4c994e3ce9bfd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42764,10 +37445,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42775,10 +37453,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a33e1b28074a41fc5c2611a67161ae5638a47dd5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42786,10 +37461,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42797,10 +37469,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a3cd54d43d3b3bdfcf224d636dc11ce1b5ee4d30"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42808,10 +37477,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42819,10 +37485,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a4874327383ca168f9d9d59cffe327f61e9a6610"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42830,10 +37493,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42841,10 +37501,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a4e4a0473ac1f2b8de86efdf00fcb382a343126d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42852,10 +37509,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42863,10 +37517,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a502dbaf3c842bd86e9ae513e8782eb23c70ad7a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42874,10 +37525,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42885,10 +37533,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a60ae4e21a913e84405814f18555f0c179c24167"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42896,10 +37541,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42907,10 +37549,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a6603e797695274d10bce000f66ca0a715f7d8c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42918,10 +37557,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42929,10 +37565,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a6d4b6043d86c376e9b166d5ca395f3e099ae229"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42940,10 +37573,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42951,10 +37581,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a6f0d1ed80393ec0a884718b44fe2dc9f852d38a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42962,10 +37589,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42973,10 +37597,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a706f2067bfbda7837eaad68972d60547e2957c3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -42984,10 +37605,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -42995,10 +37613,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a814c5743d492b96d2b402f9e819bf8406262224"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43006,10 +37621,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43017,10 +37629,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a8e67676784506d2e6eab3a0dfa25e53a80b40a0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43028,10 +37637,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43039,10 +37645,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/a9d71e1ff2912d8874e38fc61cbd9a8ef28af4a9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43050,10 +37653,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43061,10 +37661,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/aaada46c7f3bff58c2dd6f4a8394135ed5f253ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43072,10 +37669,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43083,10 +37677,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ab27fb527771c7d86f74afb6864e95402328ec0e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43094,10 +37685,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43105,10 +37693,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ab8d6e1ecbd80c6223b8623a386c61023502a57c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43116,10 +37701,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43127,10 +37709,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/abd52da5882855a63632a6917df3639538928cd3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43138,10 +37717,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43149,10 +37725,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ac38a6572f8420b4df37d9e39088d1905fced71d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43160,10 +37733,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43171,10 +37741,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ac727124e46a249419f088c8665324a11b357b84"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43182,10 +37749,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43193,10 +37757,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/adb9bf315315338bcad85929917b9def2aa098cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43204,10 +37765,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43215,10 +37773,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ade2d2f0e120a9527487e9b92458ee6844800e4e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43226,10 +37781,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43237,10 +37789,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ae8c538d4ad7f2996ac724bad7a075e1aea32556"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43248,10 +37797,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43259,10 +37805,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/af8b24ffaecdfaf96c0cd7c76f31dc9e1b4d0935"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43270,10 +37813,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43281,10 +37821,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/afcce9e02e0696a2af073855a386f589cc12c94d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43292,10 +37829,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43303,10 +37837,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b00a32e8bfb75e75f31410dfe3592da6248275c6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43314,10 +37845,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43325,10 +37853,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b09f98e13e5b67a4dd7f74eff00bb247b9967844"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43336,10 +37861,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43347,10 +37869,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b24a0dd1bc0bfabb832f0d1c8410c018c4ddaf4e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43358,10 +37877,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43369,10 +37885,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b283eb8884c98dd50523995ce221aa1ecb3ca182"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43380,10 +37893,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43391,10 +37901,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b2a79b262ee3966c5ce7c7b42dcffd55d7d0956b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43402,10 +37909,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43413,10 +37917,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b2aa4861b5104e8bb8bb173f4b023a2172a7b9a2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43424,10 +37925,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43435,10 +37933,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b33eb7e1bde4c69671dbbf9489b4d4b87c5d23fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43446,10 +37941,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43457,10 +37949,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b39bfaf6a3072d8a50984dcc54967e9246f8d3e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43468,10 +37957,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43479,10 +37965,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b3f33b78433af7f607bc99b569b0cef95a1a6ca0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43490,10 +37973,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43501,10 +37981,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b46e762671a5e28c7061da3baee6fc41dcc0122b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43512,10 +37989,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43523,10 +37997,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b6d86bedf3cf19441114e463458a454709e627b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43534,10 +38005,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43545,10 +38013,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b755933ad6e318ee9e0c430ff69be7a515d44def"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43556,10 +38021,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43567,10 +38029,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b7b664a39372dd6142b8ef7906857e4ab3f1fc84"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43578,10 +38037,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43589,10 +38045,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/b7c31bb5f6acc65b88e31400dcae71f7be392c86"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43600,10 +38053,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43611,10 +38061,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ba942f8fb244b60561a067129c242c4bc4fdd5e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43622,10 +38069,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43633,10 +38077,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/baa28a5baedb645f4430940a4b4b1142f4b03e0f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43644,10 +38085,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43655,10 +38093,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/baf7839388e10ff0c410a58797482cb83693b309"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43666,10 +38101,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43677,10 +38109,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/bbc03bf6274a79528d43e200e8f1aaa770a155d6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43688,10 +38117,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43699,10 +38125,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/bc9e17fed43c5d0668a87e8d6354c344c5b4d00b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43710,10 +38133,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43721,10 +38141,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/bcc7340f8876a7dff381ca676efc39d30eed9f48"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43732,10 +38149,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43743,10 +38157,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/bd0bef14e73aa1073eb5acb6e4cc901c976335f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43754,10 +38165,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43765,10 +38173,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/be3237e72b3d8d56eec0520145dd7d1a5064eede"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43776,10 +38181,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43787,10 +38189,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/be8cc5bab95e0ea7af538ca11175d710da6207d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43798,10 +38197,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43809,10 +38205,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/be988fc0c00a8422020dea3dc72451b09e25e1ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43820,10 +38213,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43831,10 +38221,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c0deaead93c9b3f2fc211fb7f0711ac192715a40"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43842,10 +38229,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43853,10 +38237,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c24143cf5f6f77f002e0ab82e3060906e2e7d062"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43864,10 +38245,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43875,10 +38253,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c3afa705dab02fea4d892134e7c01c3af270cb6e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43886,10 +38261,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43897,10 +38269,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c3de41124a14ea562360aabc9e12666851bff2fe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43908,10 +38277,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43919,10 +38285,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c4e60ae7c05b12a90dd7c43fbc85ae4be7540f18"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43930,10 +38293,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43941,10 +38301,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c5d0c169d326d79fc4ee8521b282dbcbf33c1d5c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43952,10 +38309,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43963,10 +38317,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c5dfb4a82f91d07041d4b0ca6cc34cfa1e9c7199"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43974,10 +38325,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -43985,10 +38333,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c685689a9d5b259afe237d857b7c6551dc95c176"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -43996,10 +38341,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44007,10 +38349,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c77087b4651f4c62a780d77a3b4c233490244e8a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44018,10 +38357,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44029,10 +38365,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c784ad2e205ba49b5bb1302746723dbc57320981"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44040,10 +38373,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44051,10 +38381,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c84da54dacf04445b50448a70fb0ecdd08e9234a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44062,10 +38389,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44073,10 +38397,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c8cb20176e427d2e108187924f570ef1df6d440c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44084,10 +38405,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44095,10 +38413,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c916ea9c6901c1e77af764773bd2843baa2ebdc6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44106,10 +38421,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44117,10 +38429,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/c97ebf43d8a5ce5cdb8e93a5d0362239c284ab4d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44128,10 +38437,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44139,10 +38445,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ca0db313bf949ba3f87a5254646a7a7dc8a7f89d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44150,10 +38453,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44161,10 +38461,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/cc4197d2381a75b674fe4944b8c690fe69a0b3b1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44172,10 +38469,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44183,10 +38477,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/cceb4c620c02337138e489383db0d4f4e2c7a722"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44194,10 +38485,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44205,10 +38493,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/cd4be18b1ae872c40580edc4fe8cbdf1fe2a3881"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44216,10 +38501,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44227,10 +38509,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/cd76ed6aff7e074b0cfdcc6305ec4e453d8304bb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44238,10 +38517,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44249,10 +38525,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ce990633c0f2b2a2ddb66144ed942d4bc9bcd8fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44260,10 +38533,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44271,10 +38541,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ceb297908903ba0fc24982ad4e6010e79dfbdd5e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44282,10 +38549,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44293,10 +38557,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/cedd54df6d34491dbf7843c2621d6818418aca02"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44304,10 +38565,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44315,10 +38573,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/cf75632ee185df2cbbbe148e2e1ad5410f11d361"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44326,10 +38581,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44337,10 +38589,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/cfa40fccc5ea4304e83ca26f4e567765c2c08627"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44348,10 +38597,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44359,10 +38605,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-12b69708d452b3cefe2da4a708a1030a661d37fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44370,10 +38613,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44381,10 +38621,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-3bd02c98286bfa7be8e13c5500ddb587bba74fbb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44392,10 +38629,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44403,10 +38637,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-53e93a1906d8442d058500e7107929cdd3e84ff8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44414,10 +38645,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44425,10 +38653,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-570c79624a2e4d36be107745d2b25e74464553af"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44436,10 +38661,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44447,10 +38669,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-8e546795782dffa5d5f5e94c9510aac178fcee39"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44458,10 +38677,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44469,10 +38685,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-d5af12c391b7bf0ce63ee3dc656ee4410fe496eb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44480,10 +38693,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44491,10 +38701,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-d92bb454bbbd415175df541661e3696453ce3e43"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44502,10 +38709,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44513,10 +38717,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/crash-e470e9fd09a5c9ef303813a40361c897650289fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44524,10 +38725,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44535,10 +38733,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d194592e6f471dd487ca2625e6c3da7802ea372f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44546,10 +38741,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44557,10 +38749,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d1b1863b478e1ea71eafac9e03256080c8f0d1c5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44568,10 +38757,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44579,10 +38765,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d24d1b9d754391fd0b11b0456a2e8c6050cadee6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44590,10 +38773,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44601,10 +38781,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d250e525e8ff2ae4a9bddb2e478a90a1242155f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44612,10 +38789,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44623,10 +38797,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d257c41db22b60cd937de16b9d90a44b9fa8e426"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44634,10 +38805,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44645,10 +38813,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d2df8e95436cf98ef2189191a75a3d9c78b1be6c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44656,10 +38821,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44667,10 +38829,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d3386702918881101368cdba2c4967e86ff3a7b9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44678,10 +38837,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44689,10 +38845,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d363f288f48fba8fde401978b7e764295735645e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44700,10 +38853,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44711,10 +38861,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d36e015b1e14ecb9559d67bb09c2851699f0aa35"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44722,10 +38869,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44733,10 +38877,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d49450b97f489f0dea74a9f83c71abeba1066d3c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44744,10 +38885,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44755,10 +38893,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d4a72650e8218ec551fef6560ddd136d52828a4e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44766,10 +38901,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44777,10 +38909,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d60469c0b5b385f20d55aa5cca55bc2c801f3b95"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44788,10 +38917,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44799,10 +38925,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d70b2046ee62676b525490b70812c2157e5a3585"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44810,10 +38933,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44821,10 +38941,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d727b7edb460c549d7b12b90f581048c9f4747e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44832,10 +38949,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44843,10 +38957,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d89026894e6c5f8b5c88dec12950f56c4b6924ba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44854,10 +38965,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44865,10 +38973,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d90c312791129dee8c5f85cb3308323d0c39b70d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44876,10 +38981,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44887,10 +38989,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/d91281daad9b821294db204dfc244b2d0d5496e4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44898,10 +38997,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44909,10 +39005,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/da322a6b88da87babb52d1527fe54cb4ac214b32"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44920,10 +39013,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44931,10 +39021,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/da4d300d0a8e6f803ec053e3e7689c4b91eaef90"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44942,10 +39029,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44953,10 +39037,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/da538941f1613c627523cb1be71eb220d1ca2579"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44964,10 +39045,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44975,10 +39053,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/da8d4c7f02dbeaa543c159b3a4e527059978a429"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -44986,10 +39061,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -44997,10 +39069,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/data_frame.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45008,10 +39077,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45019,10 +39085,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/dc4a248fa4c903ce3a571dd18aea575019445740"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45030,10 +39093,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45041,10 +39101,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/dc7ebba06558484af10b5aafd01ec4fd59276b12"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45052,10 +39109,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45063,10 +39117,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/dc815fd6d5e817898238481472f359bc50b510c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45074,10 +39125,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45085,10 +39133,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/dccd1fd6d3394f5f68c87950ed7356a2e9ef0f6f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45096,10 +39141,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45107,10 +39149,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/dd662353bad317cee7d16191a39e094bfa4898f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45118,10 +39157,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45129,10 +39165,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/df684493457bc8d87dec2ca0825f7b43978fecfd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45140,10 +39173,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45151,10 +39181,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e0d1ee5e2e169dcae87f790f5c27e84a3453cedb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45162,10 +39189,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45173,10 +39197,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e18cab69ad5cc17c88f8b56ca9929ca8af3eed30"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45184,10 +39205,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45195,10 +39213,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e1bd70aa5c802cd4462ff4833c09ed432ce4c9fa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45206,10 +39221,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45217,10 +39229,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e1f2e203d39ab2509d4a67f7a44265b1e6364334"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45228,10 +39237,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45239,10 +39245,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e262f378a3d27bc519d472ce3650bdffcd48a055"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45250,10 +39253,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45261,10 +39261,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e309e21c69e4b96ab37f675f4e87a52453512ef8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45272,10 +39269,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45283,10 +39277,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e30c4ef6423bd4d872792fbd6954ff8e47d31a97"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45294,10 +39285,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45305,10 +39293,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e3422e8f5d63a9ef180aab552353955c7aba90b0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45316,10 +39301,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45327,10 +39309,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e40b0fa5d814be8f2081ca2c8e0a4090d4893831"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45338,10 +39317,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45349,10 +39325,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e442f9fd63bc5345de1c14803d4ca4bb6f1152cf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45360,10 +39333,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45371,10 +39341,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e4c0e27cfd3690b8255a8214d6dd055385d1d24e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45382,10 +39349,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45393,10 +39357,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e4dc0a111e77dc495c5db07df5e2917adb674697"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45404,10 +39365,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45415,10 +39373,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e5a7c086208248a15ee6fa5195fc4ce22469de15"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45426,10 +39381,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45437,10 +39389,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e5ac3394971400b6636d029aec7ec665a94ecf29"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45448,10 +39397,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45459,10 +39405,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e61f728210ce72ed8b2c066bd1b1ecf9e6824b77"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45470,10 +39413,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45481,10 +39421,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e6a08259a7d47601eab5c0249cb6547024e002c7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45492,10 +39429,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45503,10 +39437,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e6b3c920b47e00055226d49b9f715c5d4353e3e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45514,10 +39445,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45525,10 +39453,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e6f5cc0702a5f38b9e7339849e1dd2e4001e547d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45536,10 +39461,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45547,10 +39469,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e7c26599fb2e2b031346ff1ba09294fd758f7abe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45558,10 +39477,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45569,10 +39485,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e8323c817d18f0c920d3cf53be41a9bc0fd64b76"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45580,10 +39493,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45591,10 +39501,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e969affd8af10a1b87dc63afd3b29cce3e58fbb2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45602,10 +39509,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45613,10 +39517,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/e9f7f7f258c72222397a960652c01d2a37e2afe3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45624,10 +39525,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45635,10 +39533,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/eb969b9ab1b0d6b5d197795223ba7a091ebd8460"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45646,10 +39541,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45657,10 +39549,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ebb0786acc21c6185356eae9a62490a03fddd1f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45668,10 +39557,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45679,10 +39565,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ec180175f0edea0a6c3eea2ae719b006bc029ff8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45690,10 +39573,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45701,10 +39581,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ed6358fbe6721c9ac01a6f4cab4d2df377eb1f11"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45712,10 +39589,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45723,10 +39597,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ee436743977b8e31feec22a91b1ce23dee96665e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45734,10 +39605,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45745,10 +39613,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/ef1984d6146670122c7a7246374bca460e7284e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45756,10 +39621,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45767,10 +39629,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/eff9ad9144a2953fadc019fe72eb1cc3447c33fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45778,10 +39637,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45789,10 +39645,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/empty"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45800,10 +39653,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45811,10 +39661,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f03120d1a8376638e071735bf4746454b6ede389"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45822,10 +39669,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45833,10 +39677,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f09410ab7bc19ee1ff206f94e8eec2931faef15f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45844,10 +39685,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45855,10 +39693,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f1b9b6803e41beabb1a762d511fc148116e09e78"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45866,10 +39701,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45877,10 +39709,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f24f925945aaf5e8b5ee470935e5aa7f847e7a72"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45888,10 +39717,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45899,10 +39725,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f41f9319bda14ef21b925c46945b30728503dfaf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45910,10 +39733,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45921,10 +39741,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f4499e3d4bf60ae3ae929c485a13ea4dc2713369"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45932,10 +39749,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45943,10 +39757,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f5b1eab444efb2664a295d4e6d087eb209c0c480"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45954,10 +39765,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45965,10 +39773,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f66305230042fa83fcd1b98c469d90ffef3ff6da"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45976,10 +39781,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -45987,10 +39789,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f6af3f46aacee395877d7f7909f8e412a6538efb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -45998,10 +39797,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46009,10 +39805,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f74143e8160754e40eb4d21a182c970210707979"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46020,10 +39813,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46031,10 +39821,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f7812b2aca4d12ffbdac67bcacc41b34524de6cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46042,10 +39829,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46053,10 +39837,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f8467d9574de94b9bb904f75a6a7e2405c36f105"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46064,10 +39845,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46075,10 +39853,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f84f5d6188cf099465f0b70337b87ad8aa8efb78"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46086,10 +39861,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46097,10 +39869,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f8fb1348ec3ceeb75c2a03df6a2ead0de6f4127a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46108,10 +39877,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46119,10 +39885,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f91f76fa45a23adfed48a10ec9512cf16bfb6636"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46130,10 +39893,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46141,10 +39901,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f96843fdf2d6fdd661c26201d96ae7bec72c6c3d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46152,10 +39909,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46163,10 +39917,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f9940356ee9b212849fbdf0d818b17af1a4f3c6c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46174,10 +39925,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46185,10 +39933,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/f9c875c00b7327df5bf21c3e051b55b0d2ed3cc8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46196,10 +39941,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46207,10 +39949,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fb340fff42a4d7ebf6b82adb9345655ffeeb05d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46218,10 +39957,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46229,10 +39965,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fc3ef8b3cb43e4d2721b252e7fb578d83ed6605f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46240,10 +39973,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46251,10 +39981,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fcc557c9844892675be823fac8788eb694a3a118"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46262,10 +39989,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46273,10 +39997,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fda07f0de15cac77ccc54ec221d81cdade189bfd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46284,10 +40005,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46295,10 +40013,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fdb553b8d82e68270a7345b048772bf8367b1224"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46306,10 +40021,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46317,10 +40029,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fe1390762579b5c335bbdea73e251b95b979c3c9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46328,10 +40037,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46339,10 +40045,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fecccfc70b1cf1a524b9f28a9ba2c153c8e14d0e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46350,10 +40053,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46361,10 +40061,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/fef80aa34c31700ac8e53bede4a97131176ceef0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46372,10 +40069,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46383,10 +40077,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/hdr_frame.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46394,10 +40085,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46405,10 +40093,7 @@
       "test/core/end2end/fuzzers/client_fuzzer_corpus/settings_frame_1.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46416,10 +40101,7 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46427,10 +40109,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46438,10 +40117,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46449,10 +40125,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0255050a9ccb25f46d6c1bf6a5a8a4c0c7635599"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46460,10 +40133,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46471,10 +40141,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0320a995a8c76c64c8a0e0297f632b76d9bc92d6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46482,10 +40149,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46493,10 +40157,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/042091aeac4cc255506b96fa11c7354e699fde76"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46504,10 +40165,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46515,10 +40173,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0696e7bf7837d98de01c915d3c9d80e5d21b30d2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46526,10 +40181,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46537,10 +40189,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/06995c2f3f01c7ec50547415dc324c64030b7a3e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46548,10 +40197,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46559,10 +40205,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/06f7ce769fe07804fc842462d4be8c1aa2ba82c2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46570,10 +40213,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46581,10 +40221,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0781b055c85ab8fbd0a3d0080a32e394af8761c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46592,10 +40229,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46603,10 +40237,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/080e1f19e6061c5bcac31add2095f87f6ce46129"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46614,10 +40245,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46625,10 +40253,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0828169ba82152a8907f1001e3d98804397d4610"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46636,10 +40261,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46647,10 +40269,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/08ffc4a4160e9fe6f322c28870a89a41fd9c37d7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46658,10 +40277,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46669,10 +40285,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/090a7a758898a6e7c9108b7e8a1cb9cda383e707"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46680,10 +40293,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46691,10 +40301,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0940663729501b750a18542e1041cc26385c6148"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46702,10 +40309,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46713,10 +40317,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0a10bd140c6c5fb109a0816ca061739688a6db9a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46724,10 +40325,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46735,10 +40333,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0a4d3fda02cdcb7adad1daa80d65780c9c8d1464"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46746,10 +40341,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46757,10 +40349,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0ad812832efa33e086874fbf3496664d3f1b4dbe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46768,10 +40357,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46779,10 +40365,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0c9996d4fef87bacd7a001e99a515b3ba3d5788f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46790,10 +40373,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46801,10 +40381,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0d6210208831fe55951af56cdeee3d54a91a5361"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46812,10 +40389,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46823,10 +40397,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0d784965b2262df7ed7a1eb57b92a718cc76bde8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46834,10 +40405,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46845,10 +40413,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0dc9e41eedf35ccedf4e2b0d230ead7c4d72fdb2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46856,10 +40421,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46867,10 +40429,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0dd470c8939ed535de6b36f7b7bfb68aeace493e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46878,10 +40437,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46889,10 +40445,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0e61e471fa6d3405daef4276ee00cf5fc189f378"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46900,10 +40453,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46911,10 +40461,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/0e9196f951874edbb5ed098739ea5c8b6c0751c2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46922,10 +40469,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46933,10 +40477,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/11442d93a554b9e7f9ab02782bbf9443bf6e1ddc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46944,10 +40485,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46955,10 +40493,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/11833b795d04eda5a3af56ef7b3c3a26a8ee3444"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46966,10 +40501,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46977,10 +40509,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/141272316382b0f3e9ec841c735b84e7aa517c3e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -46988,10 +40517,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -46999,10 +40525,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/15ae43369798e48c396dfe7d53a21878b96e66c8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47010,10 +40533,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47021,10 +40541,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/166bf1843c229d34a2880d234dd166c27bdc11fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47032,10 +40549,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47043,10 +40557,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/179e8ac763b4051a953a38b6b3b1f1e1f6cc6c9e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47054,10 +40565,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47065,10 +40573,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/17faf0ba8a491a835d35977a9007b90ab7d30d2a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47076,10 +40581,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47087,10 +40589,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/188f6cf2470e95b228341de305ef839b27f01a5c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47098,10 +40597,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47109,10 +40605,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/1ab3e52adace335d02e2b5130eb4f7c918add7fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47120,10 +40613,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47131,10 +40621,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/1b5150514364e2c17f5a4edac1b7af99b936f55a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47142,10 +40629,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47153,10 +40637,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/1e8befb98cbaba059d6771abd1680e19484e7723"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47164,10 +40645,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47175,10 +40653,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/1e9b962969c359bc2ff766704c8ca8e25f5eccfc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47186,10 +40661,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47197,10 +40669,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/1f80af104acf41b912bf4a48fb938267e3718719"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47208,10 +40677,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47219,10 +40685,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/1fcc4afd6f48e83d61ea74970df3ca9dcd8ec291"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47230,10 +40693,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47241,10 +40701,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/213a734ccdb813b18ad9f2dd99b7f9967ee1460b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47252,10 +40709,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47263,10 +40717,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/2151945f43991c27e123c45dc72b93752a47e65f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47274,10 +40725,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47285,10 +40733,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/21545d998c27a5a1572a89a552937752432b1c14"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47296,10 +40741,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47307,10 +40749,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/23c7443fa1ab713e7c34ec50222b1b8cceaedc65"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47318,10 +40757,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47329,10 +40765,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/2445bb2c6779712dc9e14c01fecb7103f8732858"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47340,10 +40773,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47351,10 +40781,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/244b0a20500e31d3c538418800db816b07f4d210"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47362,10 +40789,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47373,10 +40797,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/2461b9fa6b5bc4b6424dec5b9a18d4ec7c309112"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47384,10 +40805,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47395,10 +40813,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/24ec2f3e17d3850564788f3fed17a5c586c44658"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47406,10 +40821,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47417,10 +40829,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/2537b8d6b902b8dfc6e17f194cf7d05ddecf74cf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47428,10 +40837,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47439,10 +40845,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/253ad01acea4b7038edc3f2a8c4a0c0f5c4dcd05"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47450,10 +40853,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47461,10 +40861,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/256d0bbdbed22f5867a6f503bf082011e61ee12b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47472,10 +40869,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47483,10 +40877,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/26f0e88adbd8f8cdf778131a35b33ecf8711fa49"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47494,10 +40885,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47505,10 +40893,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/2e5dd8fb9d2a31fad9d681eda697d085b647b57c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47516,10 +40901,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47527,10 +40909,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/2fdfd2abf30c636ec8c841f1ac26594e25664f0f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47538,10 +40917,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47549,10 +40925,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/311dac5092e36134d3490f98aa4207425e0ee941"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47560,10 +40933,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47571,10 +40941,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/320fe6224a5b691c0425e34b6b14e8c6fe9f9620"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47582,10 +40949,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47593,10 +40957,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3255f1c7441a7150dc3c33022bfbe8c956c7b7b1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47604,10 +40965,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47615,10 +40973,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/33bc9db104eb72891fb096f34cbac191b3f9918d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47626,10 +40981,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47637,10 +40989,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/342ff1db70a7616b4ef76c03a42802c6702c18cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47648,10 +40997,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47659,10 +41005,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/344c011df992ccfc0ec682c14a1cb2d7959998c7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47670,10 +41013,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47681,10 +41021,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/35775efb9d0d68fa07987b9a84934389b528e436"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47692,10 +41029,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47703,10 +41037,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3650168db6fe115fb1e73eed4b76cd224d977d01"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47714,10 +41045,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47725,10 +41053,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/38228bf98cdb50fd3fa830ba5a9d4c7399063dff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47736,10 +41061,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47747,10 +41069,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/38717bee901151b22a10beb12c6623ccc844d3c2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47758,10 +41077,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47769,10 +41085,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3a4bb427a85bdc5bf66ac71db073c99e0dc9f881"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47780,10 +41093,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47791,10 +41101,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3ab48621d9b8f075369099a8ec7517bd23fd6e70"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47802,10 +41109,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47813,10 +41117,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3aec8d9311130dfbb6584fe6e619579c21992b5f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47824,10 +41125,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47835,10 +41133,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3b14837f22905dcb04f93aed2aa69bf95924fb9d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47846,10 +41141,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47857,10 +41149,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3be63c163805927e04fd7f84d96122c48240e601"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47868,10 +41157,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47879,10 +41165,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3bf2e349747c0f539181e0d4084a5fe506811a9e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47890,10 +41173,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47901,10 +41181,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3c5af4d73e94d0e8ad5666b6acb340f929031e95"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47912,10 +41189,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47923,10 +41197,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3d2b25346a9671d83bd082d170a45eed739bae6b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47934,10 +41205,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47945,10 +41213,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3de7b860c3fba2bc55707fd6875dce276f2f249b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47956,10 +41221,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47967,10 +41229,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3e2004ff9f40e398e0f41138a25a8b66e3d843d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -47978,10 +41237,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -47989,10 +41245,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/3f8983e457033cc85997c356935ba9c21460e86b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48000,10 +41253,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48011,10 +41261,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4105669086d83a20f8d991088553ba08202478cd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48022,10 +41269,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48033,10 +41277,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4180619316eef7912d1cf52ffe85897242e1ae88"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48044,10 +41285,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48055,10 +41293,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/420291d7139d9246de747739fd98102434a742dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48066,10 +41301,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48077,10 +41309,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4256437fc5897c0cd5d755816e4e68c7be326849"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48088,10 +41317,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48099,10 +41325,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/42b25a5413c536478a3e63da5adef4250babf2f4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48110,10 +41333,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48121,10 +41341,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/42bef44ae751a45c671d9da5b1231d2ac747a48d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48132,10 +41349,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48143,10 +41357,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/438c3c9045c3cf7910aceec34f77b47a70ca4abd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48154,10 +41365,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48165,10 +41373,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/43af96b4f65ed0ace7236427f2f8833c4835989e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48176,10 +41381,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48187,10 +41389,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/44c6119bb91a452d6128ce0ea0d62938800779ea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48198,10 +41397,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48209,10 +41405,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/46d595331689ae01d77aff387747a98ff3480096"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48220,10 +41413,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48231,10 +41421,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/471a307b81dc37459087d41532741c5c9d7ba836"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48242,10 +41429,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48253,10 +41437,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/48900b4a5557530922ce45c15ad0d3b0a337520d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48264,10 +41445,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48275,10 +41453,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/48bcce2c6487b18706ef0c609ca39c456215bac8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48286,10 +41461,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48297,10 +41469,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/49027bbd3f3f3cafa315843c8fe8280f86985273"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48308,10 +41477,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48319,10 +41485,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/499376c5e291da2f9c25999abf4960fab5a92ec8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48330,10 +41493,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48341,10 +41501,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4a3b7ce0cdf217963a0b692769e5d6f4befe73b8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48352,10 +41509,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48363,10 +41517,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4a3fdb96bc8c80f1992f0f72f963f84856cbade8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48374,10 +41525,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48385,10 +41533,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4aae80e05793d7adb42a7e6e8a5283b677318777"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48396,10 +41541,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48407,10 +41549,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4c7a034d3a3b4f29d99caf021a0e9bbb89706c2e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48418,10 +41557,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48429,10 +41565,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/4ce8a43fb17a075627160812ad26c25210d8a82d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48440,10 +41573,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48451,10 +41581,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5032a75a98cd14d4dab75c1c5e2cd981abb19dcf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48462,10 +41589,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48473,10 +41597,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/50b3f4b6aed97f442496d27f3b4315a18ba76d5f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48484,10 +41605,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48495,10 +41613,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/51064b88a98658d48a0da7f1545c2d1293ad9538"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48506,10 +41621,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48517,10 +41629,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/51752f12d59fadaaa0dc72e6370612b84ee1555b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48528,10 +41637,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48539,10 +41645,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/51eff6fcbfe1a51ceb3f5f2140c01eea89b4313d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48550,10 +41653,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48561,10 +41661,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/51f65f681cf3a1218d83ad58642c06deaea86210"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48572,10 +41669,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48583,10 +41677,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/521809903d36db80b1ccd707f354361f2bf05075"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48594,10 +41685,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48605,10 +41693,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/52fe8f0e1fa270ea16f66c93f2ffab265ce059e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48616,10 +41701,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48627,10 +41709,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/53de87ae94acdc8e58a369459c12a3240f1294fe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48638,10 +41717,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48649,10 +41725,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/54a2b3993c3483745f6314c870a038a8e58f97a7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48660,10 +41733,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48671,10 +41741,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/55d60c2e5040a38be8ca41de63e137e3fef892a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48682,10 +41749,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48693,10 +41757,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5653c44a5b520bdf2bdc599b7966f1d7c44950b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48704,10 +41765,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48715,10 +41773,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5838b5a683229ebb6e6277e2810863e642b8afc2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48726,10 +41781,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48737,10 +41789,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/588d225784891ac88e30ac6eb5651d63fac34083"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48748,10 +41797,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48759,10 +41805,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/58d51c21a20b6549567a0ab8fee29d162dd3fc5a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48770,10 +41813,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48781,10 +41821,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/58f1036d8ff855841ec25b3c33e85a8fec0d94b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48792,10 +41829,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48803,10 +41837,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5a99df42fb7bbafa2d55714ee235b1c46776b2ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48814,10 +41845,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48825,10 +41853,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5b42793550699b2c015bed677cfcddc052f73513"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48836,10 +41861,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48847,10 +41869,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5b8ca72ba00231c38b19f582127e6a146eba4282"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48858,10 +41877,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48869,10 +41885,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5baa13dc95da05e7ba02bbe9583ea24517a29a1a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48880,10 +41893,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48891,10 +41901,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5bab61eb53176449e25c2c82f172b82cb13ffb9d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48902,10 +41909,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48913,10 +41917,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5c6f6b6f7f3e7b435f060abb73c20d2b773a7f56"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48924,10 +41925,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48935,10 +41933,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5c9fd9cc7100feaeead1e0e45201945a6e76fd85"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48946,10 +41941,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48957,10 +41949,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/5ff49c9edc7361797a951585f3e180222c8dd95d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48968,10 +41957,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -48979,10 +41965,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/6129954942e26c2a9ec071b6659675745613cf3c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -48990,10 +41973,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49001,10 +41981,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/61fa69b6b51b0ed91914fe48779173f8d26a1d54"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49012,10 +41989,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49023,10 +41997,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/6362ac61cfb6e964aff78f3cd648475dfd5fd4e9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49034,10 +42005,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49045,10 +42013,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/644deba51c79b6ebd470bd4367452941045d112a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49056,10 +42021,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49067,10 +42029,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/64beae98e2276749b133e6368c9e0f19a79eba96"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49078,10 +42037,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49089,10 +42045,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/64d7add9192301fd878854dc96f9fa9053f03992"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49100,10 +42053,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49111,10 +42061,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/65566df65e8f55428b6672cc351df414fa8f936c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49122,10 +42069,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49133,10 +42077,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/65bb703af35d5afb824cd68c41d7a1aeb3848d35"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49144,10 +42085,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49155,10 +42093,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/66c537bf59cb3667c037b3517be3d31245c9da8a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49166,10 +42101,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49177,10 +42109,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/66f576baeb0c9435a56eb7375dadc5b5d630ed87"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49188,10 +42117,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49199,10 +42125,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/67b4cec5183659aeae0f5bc71b3adf0542a11828"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49210,10 +42133,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49221,10 +42141,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/68c94721eda2f62481bff9f1d183df70498d0c5b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49232,10 +42149,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49243,10 +42157,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/68ee8169a65d58edb9fc1c752ea81dfec383203c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49254,10 +42165,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49265,10 +42173,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/6b203d49bbba6ee74def0d35c2266e06ad3c45d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49276,10 +42181,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49287,10 +42189,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/6d580f28d785c0bf87ac351a31a89289449feadb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49298,10 +42197,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49309,10 +42205,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/6f231dec759eb2105e09263d53e171de19a92c74"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49320,10 +42213,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49331,10 +42221,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/70ff6621a09e4f641538cb1b27e8b382b2f56a94"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49342,10 +42229,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49353,10 +42237,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/71981b55f27a1eb6274eda247048fa2c597f5004"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49364,10 +42245,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49375,10 +42253,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/71c2b0bebf7f0e916e4ab7eb36d47ccca2b9101c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49386,10 +42261,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49397,10 +42269,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/74610e278a5b90aa12ce1beaf222c4306b02ed43"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49408,10 +42277,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49419,10 +42285,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/748ee9817eba56ec9938601a0e380c74bad4563f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49430,10 +42293,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49441,10 +42301,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7727e3eeb2a48c46bf5a678c300ff8a38b8ffe3a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49452,10 +42309,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49463,10 +42317,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/78176d80c1d74c4b1b820d386ae483ac4d1d92b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49474,10 +42325,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49485,10 +42333,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/789abb571563a6795220046f76b7cf0ade90743c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49496,10 +42341,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49507,10 +42349,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/78f5ff40e5554aa9c31b45f79a7ae9699f93e7fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49518,10 +42357,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49529,10 +42365,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7a28fc2e9c72d51d29e87eed63ed405c9779b5e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49540,10 +42373,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49551,10 +42381,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7a42083be21dce7f96edef1f3b3b2fea0bcaeb3f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49562,10 +42389,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49573,10 +42397,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7a51275b11ecb1efec9251390531681c8d6f2481"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49584,10 +42405,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49595,10 +42413,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7b9682cd7a3984698f6eac034c59c0f91b4fb83d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49606,10 +42421,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49617,10 +42429,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7ba7239a29d6183960e3986abc8f19cfb548b905"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49628,10 +42437,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49639,10 +42445,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7d3b3d5f23d0ede9f7e5dbd1115db58c8a54a213"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49650,10 +42453,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49661,10 +42461,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/7ff3b6239b04479a9caf67f45b2d0c619f712815"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49672,10 +42469,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49683,10 +42477,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8035c81c95dedfc27c3649064f98f49e3e72c21f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49694,10 +42485,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49705,10 +42493,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/804e1052842ce4d44b9c775ade2b18fcb8ce7bcf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49716,10 +42501,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49727,10 +42509,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/80514b85933ea9bdd3462595f949c5af24409b87"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49738,10 +42517,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49749,10 +42525,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8057c32b8bd28a5ec2105d62f2abe8cf69c9f5fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49760,10 +42533,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49771,10 +42541,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/806a3bd4e078d91adeacedfd3e47ef8ae229244a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49782,10 +42549,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49793,10 +42557,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8090444f98218e65ff9594789ff22bbea3c0497c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49804,10 +42565,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49815,10 +42573,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/80e516692955d5f224706f268e247858858e16d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49826,10 +42581,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49837,10 +42589,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/810a1372fa97380265f5529c5043ae96f007f5bb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49848,10 +42597,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49859,10 +42605,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8127597d3c146b2a89579e44daef9d03a0f941ec"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49870,10 +42613,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49881,10 +42621,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/82ed571f8922caa572d13b4cc9b5c5fabafaade9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49892,10 +42629,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49903,10 +42637,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8328e86178800f87a3bf6f80749984f45b0cd0e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49914,10 +42645,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49925,10 +42653,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/84441efd7d8bdb0ce2fac28f218d3d5d4d77f1d4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49936,10 +42661,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49947,10 +42669,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/84cbf70f45a64d5a01d1c96367b6d6160134f1ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49958,10 +42677,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49969,10 +42685,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/85eb0f4502a51e646dab4ae08eabd90613cdf8e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -49980,10 +42693,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -49991,10 +42701,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/86080f33e4eae21b37863c253ce61eaa13021a97"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50002,10 +42709,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50013,10 +42717,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/862e3ccf601ee0f7fbd8b23e6811fd50485a118f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50024,10 +42725,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50035,10 +42733,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/86bae059b18af8ae263e5ae0022b67da0cfc0fbe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50046,10 +42741,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50057,10 +42749,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/870f9cc4bd89c6c04c6a51ceae1efa8634627cd6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50068,10 +42757,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50079,10 +42765,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8762a523cdb78d2344d553fa52a229bd63c44e51"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50090,10 +42773,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50101,10 +42781,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/894211571f9153c3c2ea4102541dac69be8aaa9c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50112,10 +42789,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50123,10 +42797,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/894e9b7832c52acb04bfa994ef53c7105d8db206"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50134,10 +42805,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50145,10 +42813,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8b0e12978b8e2eecf62346e438e47d0993845693"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50156,10 +42821,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50167,10 +42829,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8b3fa0bd4f289eff6a04a5205e04baaeafbdf637"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50178,10 +42837,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50189,10 +42845,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8d1deedd1e463f8c95129a6f839c380a7c83ab04"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50200,10 +42853,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50211,10 +42861,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8d1e029bd72381e382c87e61b4c5a9741d80d644"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50222,10 +42869,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50233,10 +42877,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8dd1983889b6632228d4897c365a1e6124d101e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50244,10 +42885,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50255,10 +42893,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8dfc2183691385432f92957cff0b2538e5a0ebfa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50266,10 +42901,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50277,10 +42909,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8eb9b86b4f0aa79b8ef84b44e1fb03094e7bb426"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50288,10 +42917,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50299,10 +42925,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8ec540c36da3814e93da765bf2ff0825b59c1bd0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50310,10 +42933,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50321,10 +42941,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8f1bec32f4b8e64062f5405a096543e61d771076"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50332,10 +42949,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50343,10 +42957,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8f3e48c49d0794909f6e8e61e5a4312edf484c33"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50354,10 +42965,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50365,10 +42973,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/8fbbf3c0eaa25b64d0a97a8ee08006539e649199"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50376,10 +42981,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50387,10 +42989,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/907d0021d42d0fdc867fd02d3609cdce13c8a055"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50398,10 +42997,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50409,10 +43005,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/919511c217a3427c22cad4a71aae31a6cd47b193"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50420,10 +43013,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50431,10 +43021,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9267c81c3283da8193c198de05e05fa30631a453"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50442,10 +43029,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50453,10 +43037,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/92e80997a4237d76f10b70dae2870b7255c97435"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50464,10 +43045,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50475,10 +43053,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/935322db76f5d4c74c2dc68fc4631915b8e24323"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50486,10 +43061,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50497,10 +43069,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/939f2627ef6263d0176566de267ff3eb910e6a60"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50508,10 +43077,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50519,10 +43085,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/94adea6a0d9a44bee6f5e88adcee57be9e9e3597"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50530,10 +43093,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50541,10 +43101,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/94dcbe0d3352bd9b230096b8dce9c6d8d63f9d51"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50552,10 +43109,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50563,10 +43117,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/95dad738f60e3e5eb0f1cdafd91ad461f4418e8f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50574,10 +43125,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50585,10 +43133,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/960c0a21c9e5c1a61b93b34da3189b0de1c264df"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50596,10 +43141,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50607,10 +43149,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/96903512b1f1dec08206123f024b62d0e31cd4dc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50618,10 +43157,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50629,10 +43165,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/96a89c005e8d9992e34cc149b0be096ad0051446"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50640,10 +43173,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50651,10 +43181,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/97db8a66dd513eea47a5a25115508f4e59984854"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50662,10 +43189,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50673,10 +43197,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/98f2cb84ad89550cf56ee54e11f1448ae7287247"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50684,10 +43205,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50695,10 +43213,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/993497422a59b7f9f0f6db8c867339b5c9e4c978"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50706,10 +43221,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50717,10 +43229,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/999821e3750a7f2c9db663d2d100b4404c225040"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50728,10 +43237,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50739,10 +43245,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/99b2ed83be40cab431d1940e8de2dc3ebfe9352f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50750,10 +43253,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50761,10 +43261,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/99e888b7372b29256dbefd476855ff73584cc00f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50772,10 +43269,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50783,10 +43277,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9b18087deb3cfafa1b964aa65d8ee980bc61404e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50794,10 +43285,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50805,10 +43293,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9b3c745ea3e313909a228a07b49aae110b02ae4a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50816,10 +43301,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50827,10 +43309,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9be1ce0ba77758928ff5e9c45139b1624cbe9c2d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50838,10 +43317,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50849,10 +43325,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9c703141efd69eb8f32a58133c8035fb585e0f4c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50860,10 +43333,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50871,10 +43341,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9c7f77981677499f0426a0ffb5cb79d5fe55dcb2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50882,10 +43349,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50893,10 +43357,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9ca59e6cadaa5be9af30dfe5620d1bcd70f442e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50904,10 +43365,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50915,10 +43373,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9d139835d91474e8d8361d65698a31b8b38c4f7b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50926,10 +43381,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50937,10 +43389,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9e2179564a99e96e179c96f28802a0a2759b581c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50948,10 +43397,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50959,10 +43405,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9e56bb3b68d2e2617cb2d2f0f3941f7fc832e462"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50970,10 +43413,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -50981,10 +43421,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9f318b2c2ff9cf4615bd06ba13bdd086b4ad08c6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -50992,10 +43429,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51003,10 +43437,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/9f8d90b1480989fc46ea2f1c66cf687638994587"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51014,10 +43445,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51025,10 +43453,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a09db5715f0bc3879a0e18e4db5a6b5640b254a3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51036,10 +43461,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51047,10 +43469,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a0c59a090818bca29d76ccf9843f7e2faf330ddf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51058,10 +43477,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51069,10 +43485,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a1cf10478e5e01a0d951c743a3dd45aa5fc409f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51080,10 +43493,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51091,10 +43501,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a22c0f03f8c005a4612a9dcbcd6a643334c35d2f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51102,10 +43509,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51113,10 +43517,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a3154b8ed26b3461f2b091c732da00b63ce8bed3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51124,10 +43525,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51135,10 +43533,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a84a1ed1a24e753a27adfd3ba806f06fc44f899f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51146,10 +43541,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51157,10 +43549,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a871e7ce66afd4f57702cd1299de06cd08995561"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51168,10 +43557,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51179,10 +43565,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a8dc736ea964586b7dcbf2bc065ec4675d1daba3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51190,10 +43573,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51201,10 +43581,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/a91a835836c72217824f0b63491d9b623130502a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51212,10 +43589,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51223,10 +43597,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ab97c1f6033dc7d96f69b9e1461fd594c16f4ebf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51234,10 +43605,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51245,10 +43613,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ac8a8c23acd8c290a11dc7828f7f397957fa6400"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51256,10 +43621,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51267,10 +43629,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ac94b2788f5252f9e2e8502c7c75e04bef4c0b76"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51278,10 +43637,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51289,10 +43645,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ad03b4f58470c43db6593a35be48989486d754f9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51300,10 +43653,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51311,10 +43661,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/af417c83e831a96fda1bdde99a1af6509ef2df3d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51322,10 +43669,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51333,10 +43677,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/affd292cd2ce3306b4651cc7ec0ec0524cbbae3d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51344,10 +43685,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51355,10 +43693,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/b0587e6e319f4b56d877e7ed46bc7da9b1e7249c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51366,10 +43701,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51377,10 +43709,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/b166aa66b5b3ad178bc38aee5768226c8adc082f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51388,10 +43717,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51399,10 +43725,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/b1ade0571262c6e5f1d72f6d25ebb513d2055bc9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51410,10 +43733,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51421,10 +43741,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/b244c690157ff21d073940ef8c77d1898f37cf8e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51432,10 +43749,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51443,10 +43757,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/b523091ee4f17d20f51f9b5cf82293465cf61780"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51454,10 +43765,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51465,10 +43773,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/b7d4d49ac2c530eb8444a449feb689ee50fd210d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51476,10 +43781,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51487,10 +43789,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/b855c161121bfa29c6fb22d3c0236fae4af6984e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51498,10 +43797,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51509,10 +43805,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/bcaa71abf23b2e5130e0cc464755fe769bf4aaa7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51520,10 +43813,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51531,10 +43821,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/bcf4684ce097faa7e9d99b6e93cc2de24f57aee3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51542,10 +43829,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51553,10 +43837,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/bdca6504d2ee7925f62e176355bb481344772075"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51564,10 +43845,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51575,10 +43853,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/beb208fd8675ba7de2ecb12998d2d628d579ca7c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51586,10 +43861,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51597,10 +43869,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/bf0c98689ab81fc32787023300caf9a4175583dc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51608,10 +43877,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51619,10 +43885,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/bf479e97b39b697e715663de6a1e78dd58d64122"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51630,10 +43893,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51641,10 +43901,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/bf826c96be94d1b42eea0666f7239cc5f699a375"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51652,10 +43909,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51663,10 +43917,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c17650d19ae4a48abb36739c83d8979453f5705f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51674,10 +43925,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51685,10 +43933,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c1e5307d88feda2c3b15fc221cba92bcf41622bf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51696,10 +43941,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51707,10 +43949,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c249f408c552a0408eab3fe1d1cbeca95cd537c1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51718,10 +43957,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51729,10 +43965,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c26b460aebc9082c519539069f7e060042989696"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51740,10 +43973,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51751,10 +43981,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c2eae71daad0d3561ab4d09b8b85372b8d790bc1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51762,10 +43989,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51773,10 +43997,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c37fda8d02e99132a1de99f959596c784ab8a53c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51784,10 +44005,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51795,10 +44013,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c4836760377a7091fb20f4afa9c712875792b9a7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51806,10 +44021,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51817,10 +44029,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c48caad597176404f776d532d4baf9faf7655ee2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51828,10 +44037,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51839,10 +44045,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c4eff0f59986fc5ab09d5bd95f394292f2882659"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51850,10 +44053,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51861,10 +44061,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c5fc2086d167c8c3a7d9ec778db69c5fa14a59fe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51872,10 +44069,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51883,10 +44077,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c600877ce547166eb1b9d83afbe128d98767f8a3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51894,10 +44085,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51905,10 +44093,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c6a98fdaf6de78e59e1a149a43f3e42222d650b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51916,10 +44101,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51927,10 +44109,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c8d22f7fb4f37f2d8cc7953fa2d599d38d899aec"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51938,10 +44117,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51949,10 +44125,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c90951c19b24bac84296e3ec32cdeafe99e99cfb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51960,10 +44133,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51971,10 +44141,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/c95ff2a172626efb50e94aa6781feba609820076"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -51982,10 +44149,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -51993,10 +44157,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ca6c557afb9c571de62e9b65ca6469a6133760da"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52004,10 +44165,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52015,10 +44173,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/cb2d0fb23f66c968af2e80d59f71d4c1aed96fbd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52026,10 +44181,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52037,10 +44189,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/cc60a642cc2037ad3c459a57381b8f65d8d7aa35"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52048,10 +44197,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52059,10 +44205,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ccd3b8aa26c52f6d9c607c26ebdf621142aff745"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52070,10 +44213,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52081,10 +44221,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ccdfd1354997eb117bd76b75440a7e4ff20bf564"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52092,10 +44229,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52103,10 +44237,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/cd7a7b8f08c189e95ae3e2ea44b9015000e823f3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52114,10 +44245,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52125,10 +44253,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ce05678d812a5f8ae8e115938410116ce9169456"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52136,10 +44261,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52147,10 +44269,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ce6b642b81373f05baa2a6fe6e9d5d1387046285"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52158,10 +44277,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52169,10 +44285,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/cf84d06e4dddb997a79a41f9b6122bf620bbdb4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52180,10 +44293,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52191,10 +44301,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/cfbcc3e8cd65aa8b654688145ade34b8789468a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52202,10 +44309,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52213,10 +44317,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d000502f32ca5620d7745f39ff6be3b547e26a6d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52224,10 +44325,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52235,10 +44333,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d131f83ee73450ff45565d0c638be7d8beeb30d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52246,10 +44341,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52257,10 +44349,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d1c7ae01a81a122c2fd7c5d8debcae7566e9ee2f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52268,10 +44357,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52279,10 +44365,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d2817b89d7aaa7fa880c077b1a67168ec2f4f0f7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52290,10 +44373,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52301,10 +44381,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d3ccd7039dd34baef465c4b78baa7a30312a8f07"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52312,10 +44389,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52323,10 +44397,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d4cfaf3b59b22b654d7af80ee6715ce5015bfdc0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52334,10 +44405,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52345,10 +44413,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d5670827c8e8d4c95ac0f738c0790c19916c0336"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52356,10 +44421,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52367,10 +44429,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d59d7e94863f1ed89cacfbaabf7bc59946036c8f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52378,10 +44437,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52389,10 +44445,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d76d0c7f24ae3cc3f530d5306b8dcc15290c7ff2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52400,10 +44453,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52411,10 +44461,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d8b15e9e555ad9900ba4be8cc9f87bef75725b24"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52422,10 +44469,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52433,10 +44477,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/d9748abd540810c2449c3dd39a0ebb62754e520f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52444,10 +44485,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52455,10 +44493,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/da9fc821f0c1e00728b139b36269bc3d21c0a8cc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52466,10 +44501,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52477,10 +44509,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/dcd1bd94ad97b4e67fd7e12ff1bf7c039eb17f66"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52488,10 +44517,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52499,10 +44525,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/dd3ba9b139e13324fc76cd62af84b00ca8b87205"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52510,10 +44533,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52521,10 +44541,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/de0a9dce0ea4e4bfdcb13f788ae728bf979fed25"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52532,10 +44549,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52543,10 +44557,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/deb6f9a930d9b31586ede19fd8fd3caae0e5b1f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52554,10 +44565,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52565,10 +44573,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/dee95e0280b70681eddfb68e3b418126c5661e18"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52576,10 +44581,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52587,10 +44589,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/df01203edfa2dfe9e108ddde786ae48235624fef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52598,10 +44597,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52609,10 +44605,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/df0adbe2523508e9afb42a58d98c2657710d6033"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52620,10 +44613,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52631,10 +44621,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e05fcba1b22f658c8bd6f3c330b2b3c9faebf977"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52642,10 +44629,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52653,10 +44637,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e145caa75d73e3d819a9cb4b6217f1f53112f3f8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52664,10 +44645,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52675,10 +44653,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e1d86c0094657386197d191855b5645ac1dd5936"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52686,10 +44661,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52697,10 +44669,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e25adf8de44f5978d00b7e8c52aee89c5cd1fe93"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52708,10 +44677,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52719,10 +44685,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e29f05162e3d96d5549f96aa4a54c868535b2847"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52730,10 +44693,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52741,10 +44701,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e3a970ac8636d29da3ded328b876ed3550cb3209"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52752,10 +44709,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52763,10 +44717,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e3cfdc862187b4ec28bd4fb2ced5094bb5b09909"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52774,10 +44725,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52785,10 +44733,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e4ce52007d001806fc9368b62c124dfc56e8471c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52796,10 +44741,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52807,10 +44749,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e52173f0bc3325629046e85e2dc41acc6ba7d1c3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52818,10 +44757,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52829,10 +44765,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e6589006e3bda4c57247ad66fcd73ac00ee2cbe2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52840,10 +44773,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52851,10 +44781,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e6fab7572fb2a1c6e107b6f83cffd103a233d021"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52862,10 +44789,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52873,10 +44797,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e790f5d312957dbfd20abdefe4b1735779ff9689"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52884,10 +44805,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52895,10 +44813,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e8809017a4cf6c1e80a93f661166ead961f26bb4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52906,10 +44821,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52917,10 +44829,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/e9733e973c33b38c2087b7f1deb36688b3b14259"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52928,10 +44837,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52939,10 +44845,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ea8134769855d574f6673bf0301eb2e24632c6eb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52950,10 +44853,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52961,10 +44861,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/eb489536e4e5589a93a17cd36669475b8f2a5e1b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52972,10 +44869,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -52983,10 +44877,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/eb48ebd4d01e5623dd16ae61938b3333fab3ce78"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -52994,10 +44885,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53005,10 +44893,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/eb6ca7624384239c7f7e0d83edb7cc334b7926d7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53016,10 +44901,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53027,10 +44909,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ec9457ad41ed745ea9377ffdb16ad09f981daa7f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53038,10 +44917,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53049,10 +44925,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/edff5256a2d60d0e51caef25dc1d6f1643dad6d5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53060,10 +44933,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53071,10 +44941,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ee4d9c5d22512da42726f47213ff56404d1d81d1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53082,10 +44949,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53093,10 +44957,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/eef2f30b5e2ecd98ebefb12d57aba8b4ad52d904"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53104,10 +44965,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53115,10 +44973,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ef23911de1a27d03d2d4983ca1527e17d6a7092b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53126,10 +44981,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53137,10 +44989,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ef5b7fc62a2daecf1e8f928b1fa3ebd028413a41"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53148,10 +44997,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53159,10 +45005,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ef718258ca1870198e91a2fbc1eaa90b620673fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53170,10 +45013,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53181,10 +45021,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/efb46deb37a78f41dd760f6b7203b20956eb114e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53192,10 +45029,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53203,10 +45037,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/efdd6824bd2456e3e408e0e84369c4fa3aa14f41"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53214,10 +45045,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53225,10 +45053,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/efec040a5de1969df5e37e4bc50a0a8f0de341d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53236,10 +45061,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53247,10 +45069,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f1e30464c24dc1d7cec7ec1dd2adec8512232b43"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53258,10 +45077,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53269,10 +45085,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f27a617b936814476770a3b31a5afb80d0f3b423"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53280,10 +45093,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53291,10 +45101,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f3f0d99ac2962f8fddb25c65fb4c8c6eb63518a9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53302,10 +45109,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53313,10 +45117,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f4628084cf46f139babb886a782b4ab5977d5d2e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53324,10 +45125,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53335,10 +45133,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f4753e8881e4b3c71f2728149be7d04cc648f6a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53346,10 +45141,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53357,10 +45149,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f4d6ff635ae4fda497221da4bfa3e593df59a44e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53368,10 +45157,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53379,10 +45165,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f52f4d51aaaed0f9c3a20936cf5efd25d0692f67"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53390,10 +45173,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53401,10 +45181,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f7cf30724ab740918eee6e4a6b6658ae3d7706e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53412,10 +45189,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53423,10 +45197,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f823828ffd2a60efee36f1de52cb0f024ac5b4bb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53434,10 +45205,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53445,10 +45213,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/f8760761bd5ab7b47376bfbc5a44e16b2d5ca800"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53456,10 +45221,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53467,10 +45229,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/fb15042c268625089ef6c8aa3d8a6f12d1d02c74"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53478,10 +45237,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53489,10 +45245,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/fc3dd4292d6884a770199596f5e9cbc1e869e5fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53500,10 +45253,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53511,10 +45261,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/fd34ec90fe8f9218fd25c3eac151aec998cff6d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53522,10 +45269,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53533,10 +45277,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/fdf548cde981fab4fb17bd63a124b75eddc5c836"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53544,10 +45285,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53555,10 +45293,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/fe47fb18b064e26479c3c3140082bd01065e897a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53566,10 +45301,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53577,10 +45309,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ff2097734bd7bb8451aece13c9336c4624735170"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53588,10 +45317,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53599,10 +45325,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ff2c949863eb4e14d9e835c51591304403d91b6c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53610,10 +45333,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53621,10 +45341,7 @@
       "test/core/transport/chttp2/hpack_parser_corpus/ff7d6ff060e63355701b2e655c802902338497de"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53632,10 +45349,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53643,10 +45357,7 @@
       "test/core/http/corpus/0299ca2580e4398d170c4a336e0c33eb2cd9d427"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53654,10 +45365,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53665,10 +45373,7 @@
       "test/core/http/corpus/05e613853d64a9669ea3cf41b0de777dc24931ba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53676,10 +45381,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53687,10 +45389,7 @@
       "test/core/http/corpus/069352518a1d1baa05f317c677d275cefda2ac97"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53698,10 +45397,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53709,10 +45405,7 @@
       "test/core/http/corpus/0925527c9358b1e10ec0f0387cd99f35204d9a34"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53720,10 +45413,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53731,10 +45421,7 @@
       "test/core/http/corpus/0c5b7c2569410b526605e308309a7f36574e530d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53742,10 +45429,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53753,10 +45437,7 @@
       "test/core/http/corpus/0ef3d0a84360bb5ad66274f1226f5cb273ecdbcf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53764,10 +45445,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53775,10 +45453,7 @@
       "test/core/http/corpus/1e1273f90187fdf5df3625764245610f86af6aa4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53786,10 +45461,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53797,10 +45469,7 @@
       "test/core/http/corpus/1fbc57d118f3733287e9a9d808bb8947b3260e55"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53808,10 +45477,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53819,10 +45485,7 @@
       "test/core/http/corpus/24756c396bc72894fd720092bb6f9c03e66b469f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53830,10 +45493,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53841,10 +45501,7 @@
       "test/core/http/corpus/276def41311933421ae7a9ee42e906c85b6a4d3f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53852,10 +45509,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53863,10 +45517,7 @@
       "test/core/http/corpus/29daa75432381937fd005cb25e314e328de6e9f9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53874,10 +45525,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53885,10 +45533,7 @@
       "test/core/http/corpus/2a75204bc492084ad853682f8de3fb137d5907bc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53896,10 +45541,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53907,10 +45549,7 @@
       "test/core/http/corpus/2d34ba249b755a880525cf53c665633a5e359305"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53918,10 +45557,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53929,10 +45565,7 @@
       "test/core/http/corpus/33f4ea0c7ea27c37d8f95cfa64d282370efdafd2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53940,10 +45573,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53951,10 +45581,7 @@
       "test/core/http/corpus/35554617ea6418bd43161fe9a2c337ed82d7ec5b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53962,10 +45589,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53973,10 +45597,7 @@
       "test/core/http/corpus/35f0c561297cfc840ddaeebb9fc61091f4eadece"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -53984,10 +45605,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -53995,10 +45613,7 @@
       "test/core/http/corpus/3787bcc22ef645e665cc5f722b8a633af86de9cf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54006,10 +45621,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54017,10 +45629,7 @@
       "test/core/http/corpus/3953688866ccb3b4f371f1a858570d6afdb6452d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54028,10 +45637,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54039,10 +45645,7 @@
       "test/core/http/corpus/39b19c41ba537f37511eff7727733715db432e76"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54050,10 +45653,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54061,10 +45661,7 @@
       "test/core/http/corpus/3e3c4756d5e40b5aa250954cbac86b826e70a7ac"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54072,10 +45669,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54083,10 +45677,7 @@
       "test/core/http/corpus/3f03265921120c6ffa61b944e213e062a5538d4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54094,10 +45685,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54105,10 +45693,7 @@
       "test/core/http/corpus/3fb034e66ee5494a67acae1b4e6ff64ba92a2046"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54116,10 +45701,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54127,10 +45709,7 @@
       "test/core/http/corpus/466059ed07a0d55d6ad5e522c7d367cbf278eaf9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54138,10 +45717,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54149,10 +45725,7 @@
       "test/core/http/corpus/487725eb38511c79a9340bf4560a1411061fa6fa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54160,10 +45733,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54171,10 +45741,7 @@
       "test/core/http/corpus/48b9b205cae8ac21512a3f26f49fd53e21ee13c5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54182,10 +45749,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54193,10 +45757,7 @@
       "test/core/http/corpus/4b1f1f79a0bfa3f942479dd5f8edb59a7c257c55"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54204,10 +45765,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54215,10 +45773,7 @@
       "test/core/http/corpus/5028c56a5116a186b7343ff59567b47347a0796d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54226,10 +45781,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54237,10 +45789,7 @@
       "test/core/http/corpus/533f62b3f495ce704babf3ee8d840f196a714dff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54248,10 +45797,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54259,10 +45805,7 @@
       "test/core/http/corpus/5892cbb284771fc9761caae37b19cd6e27dbc104"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54270,10 +45813,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54281,10 +45821,7 @@
       "test/core/http/corpus/5aeab6e4f7c2a1c09d4ac0dbdb3beac4893607ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54292,10 +45829,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54303,10 +45837,7 @@
       "test/core/http/corpus/5b6292bdf009b0daecbc90b85cca30a88c36eec5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54314,10 +45845,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54325,10 +45853,7 @@
       "test/core/http/corpus/5c1659b77678b41faa4fa13df7772dae3238d1c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54336,10 +45861,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54347,10 +45869,7 @@
       "test/core/http/corpus/5c81f61621e29ec9c6a64ac3af9b3b216141618e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54358,10 +45877,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54369,10 +45885,7 @@
       "test/core/http/corpus/657368df512ca6294b9df16adf935a3f374a8be2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54380,10 +45893,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54391,10 +45901,7 @@
       "test/core/http/corpus/7fc4520094902ce2c760d70eaad5b674d2817337"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54402,10 +45909,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54413,10 +45917,7 @@
       "test/core/http/corpus/81f59a12b458ec3604035cb962165c604d1355e6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54424,10 +45925,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54435,10 +45933,7 @@
       "test/core/http/corpus/8f41c50e88ee8c17ecad3d41d63d38fb12aca0b9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54446,10 +45941,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54457,10 +45949,7 @@
       "test/core/http/corpus/97c16de7fe3c390a2e6c09ff5c28f17d5c67542c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54468,10 +45957,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54479,10 +45965,7 @@
       "test/core/http/corpus/97e4499d450c95660de86747f527e670f2012548"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54490,10 +45973,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54501,10 +45981,7 @@
       "test/core/http/corpus/9a996857196e0998a1278994a9bab3d35526e7f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54512,10 +45989,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54523,10 +45997,7 @@
       "test/core/http/corpus/9b7e00049ec356ecd84b1747e4e1941140139ae8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54534,10 +46005,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54545,10 +46013,7 @@
       "test/core/http/corpus/9f0c38ec455cc363369b3674a2d32bc21c206de1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54556,10 +46021,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54567,10 +46029,7 @@
       "test/core/http/corpus/a1dc7bc235e46eb21d91084d7b52d5ff9f45df85"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54578,10 +46037,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54589,10 +46045,7 @@
       "test/core/http/corpus/aa3bbb876eafa8ad8ca4ff2eabc6dd94341d2441"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54600,10 +46053,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54611,10 +46061,7 @@
       "test/core/http/corpus/ae8ba95d7dbe99926a8f5bfd80347fd6a4b616a0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54622,10 +46069,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54633,10 +46077,7 @@
       "test/core/http/corpus/b04fea5c041c707db0ad9c09a81672557b52cc47"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54644,10 +46085,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54655,10 +46093,7 @@
       "test/core/http/corpus/c4acff8aa2ff886f35439f72625d05002990c940"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54666,10 +46101,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54677,10 +46109,7 @@
       "test/core/http/corpus/c55ce9995b002e88a102ae2891a71e8bacb346c8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54688,10 +46117,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54699,10 +46125,7 @@
       "test/core/http/corpus/ca5a0c00b8969310acb73d15ad0d0c602f1bd0c2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54710,10 +46133,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54721,10 +46141,7 @@
       "test/core/http/corpus/cce734f1b263de6994f7950e0df7bf0c81449f70"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54732,10 +46149,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54743,10 +46157,7 @@
       "test/core/http/corpus/d39c8ee11a697634a09b309460c0bbd967e7effa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54754,10 +46165,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54765,10 +46173,7 @@
       "test/core/http/corpus/d4c3e4cf5d035596433c30eaabbd2b2925f4b453"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54776,10 +46181,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54787,10 +46189,7 @@
       "test/core/http/corpus/d51f7fcc089f269c7afecaaca51966bab5fde629"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54798,10 +46197,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54809,10 +46205,7 @@
       "test/core/http/corpus/d936dad71c129cf659097dc3db64550c4dd467f4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54820,10 +46213,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54831,10 +46221,7 @@
       "test/core/http/corpus/e275b0466a8fb8d9e0e15856e343ddc7112ae66b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54842,10 +46229,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54853,10 +46237,7 @@
       "test/core/http/corpus/e5c364b205855a2991ce07482aebb2a3a6147089"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54864,10 +46245,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54875,10 +46253,7 @@
       "test/core/http/corpus/ee2077e08c3cfccd9bd82adb574ac4fc7d429afb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54886,10 +46261,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54897,10 +46269,7 @@
       "test/core/http/corpus/fc5d4b9117ba9e87388174aee4f4970bdfe8d066"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54908,10 +46277,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54919,10 +46285,7 @@
       "test/core/http/corpus/fdeb2c7daa9e7704f67e141106384e6dd0042c0b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54930,10 +46293,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54941,10 +46301,7 @@
       "test/core/http/corpus/request1.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54952,10 +46309,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54963,10 +46317,7 @@
       "test/core/http/corpus/request2.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54974,10 +46325,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -54985,10 +46333,7 @@
       "test/core/http/corpus/request3.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -54996,10 +46341,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55007,10 +46349,7 @@
       "test/core/http/corpus/request4.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55018,10 +46357,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55029,10 +46365,7 @@
       "test/core/http/corpus/request5.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55040,10 +46373,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55051,10 +46381,7 @@
       "test/core/http/corpus/response1.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55062,10 +46389,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55073,10 +46397,7 @@
       "test/core/http/corpus/response2.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55084,10 +46405,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55095,10 +46413,7 @@
       "test/core/http/corpus/response3.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55106,10 +46421,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55117,10 +46429,7 @@
       "test/core/http/corpus/response4.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55128,10 +46437,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55139,10 +46445,7 @@
       "test/core/http/corpus/response5.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55150,10 +46453,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55161,10 +46461,7 @@
       "test/core/http/corpus/response6.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55172,10 +46469,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55183,10 +46477,7 @@
       "test/core/http/corpus/toolong.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55194,10 +46485,7 @@
     "language": "c", 
     "name": "http_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55205,10 +46493,7 @@
       "test/core/json/corpus/006d552e952c42b5340baaeb85c2cb80c81e78dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55216,10 +46501,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55227,10 +46509,7 @@
       "test/core/json/corpus/007eb985c44b6089a34995a7d9ebf349f1c2bf18"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55238,10 +46517,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55249,10 +46525,7 @@
       "test/core/json/corpus/03b74a08f23734691512cb12d0b38d189a8df905"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55260,10 +46533,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55271,10 +46541,7 @@
       "test/core/json/corpus/0495693af07325fb0d52eafd2d4c4d802c6457c6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55282,10 +46549,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55293,10 +46557,7 @@
       "test/core/json/corpus/05454ab015cf74e9c3e8574d995517e05dd56751"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55304,10 +46565,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55315,10 +46573,7 @@
       "test/core/json/corpus/0716d9708d321ffb6a00818614779e779925365c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55326,10 +46581,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55337,10 +46589,7 @@
       "test/core/json/corpus/0a9b3522a8e711e3bd53e2c2eb9d28b34a003acc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55348,10 +46597,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55359,10 +46605,7 @@
       "test/core/json/corpus/0ade7c2cf97f75d009975f4d720d1fa6c19f4897"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55370,10 +46613,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55381,10 +46621,7 @@
       "test/core/json/corpus/0b1fcf0ac07e1e50cfe27316c7e1c8cc997f1318"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55392,10 +46629,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55403,10 +46637,7 @@
       "test/core/json/corpus/0bc13548356d08009703d35e9c8d74397367bdfb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55414,10 +46645,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55425,10 +46653,7 @@
       "test/core/json/corpus/0ea9a160c57f2c705dce037196e360bf9be739c5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55436,10 +46661,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55447,10 +46669,7 @@
       "test/core/json/corpus/0f20d9c46991c0e97419e2cca07c7389f1d6bdf8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55458,10 +46677,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55469,10 +46685,7 @@
       "test/core/json/corpus/0f2e2e6346f70c419300b661251754d50f7ca8ea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55480,10 +46693,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55491,10 +46701,7 @@
       "test/core/json/corpus/108b310facc1a193833fc2971fd83081f775ea0c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55502,10 +46709,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55513,10 +46717,7 @@
       "test/core/json/corpus/108e5bcd69b19ad0df743641085163b84f376fe8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55524,10 +46725,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55535,10 +46733,7 @@
       "test/core/json/corpus/10e3ecd5624465020fdf0662a67e0f0885536cae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55546,10 +46741,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55557,10 +46749,7 @@
       "test/core/json/corpus/113c8c97cbb0a2b6176d75eaa9ac9baaa7ccddcc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55568,10 +46757,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55579,10 +46765,7 @@
       "test/core/json/corpus/11479d936dd006410a5946b6081a94d573bf8efd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55590,10 +46773,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55601,10 +46781,7 @@
       "test/core/json/corpus/11aa091189b78d1cc35c7ff4907ac16a73aba547"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55612,10 +46789,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55623,10 +46797,7 @@
       "test/core/json/corpus/1227907b2ee5a9492a890beed55332e4560834c8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55634,10 +46805,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55645,10 +46813,7 @@
       "test/core/json/corpus/134d65130947ec69cf8df8483424b45e99cf04e3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55656,10 +46821,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55667,10 +46829,7 @@
       "test/core/json/corpus/13584505caa892d94982a968bbc4391ebcfe0d06"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55678,10 +46837,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55689,10 +46845,7 @@
       "test/core/json/corpus/137f554ee0f6b903acb81ab4e1f98c11fe92b008"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55700,10 +46853,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55711,10 +46861,7 @@
       "test/core/json/corpus/1401ea03ec78b8f20dc7be952555004d7147f0f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55722,10 +46869,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55733,10 +46877,7 @@
       "test/core/json/corpus/141d45a59b073aeec4443cd7bcf20f7833ddbc95"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55744,10 +46885,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55755,10 +46893,7 @@
       "test/core/json/corpus/15a8f2e7f94aa00b46f1b991416aa015dd633580"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55766,10 +46901,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55777,10 +46909,7 @@
       "test/core/json/corpus/15c9c1284c27c8893559e15c9b2a50cbd5bbb56f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55788,10 +46917,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55799,10 +46925,7 @@
       "test/core/json/corpus/15d1a6cda48ef569b368a0c4627435bc2c80a988"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55810,10 +46933,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55821,10 +46941,7 @@
       "test/core/json/corpus/17a29f2ac6df774585d7713091b299729738030c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55832,10 +46949,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55843,10 +46957,7 @@
       "test/core/json/corpus/17b815f1f72cb64481bc40263e91ce063040f739"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55854,10 +46965,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55865,10 +46973,7 @@
       "test/core/json/corpus/182d57403d2c973a394055017d35b7621aa0aa05"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55876,10 +46981,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55887,10 +46989,7 @@
       "test/core/json/corpus/190fbe2da448f6bdec0706c5301ad13363ae3ad9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55898,10 +46997,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55909,10 +47005,7 @@
       "test/core/json/corpus/1b045a24b8f1f1fd6e8234d5019952ee7713a8b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55920,10 +47013,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55931,10 +47021,7 @@
       "test/core/json/corpus/1b6453892473a467d07372d45eb05abc2031647a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55942,10 +47029,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55953,10 +47037,7 @@
       "test/core/json/corpus/1c6463aa2dabcb4fadc8e5441d8b418535e768af"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55964,10 +47045,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55975,10 +47053,7 @@
       "test/core/json/corpus/1dea95b5050b766274ef80847505c0e4f47f3ebb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -55986,10 +47061,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -55997,10 +47069,7 @@
       "test/core/json/corpus/1df0754d3e7970b3afe549b11ca128dcd0d4832b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56008,10 +47077,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56019,10 +47085,7 @@
       "test/core/json/corpus/1dfe267b623b20cd97c6e8969d8b9148af9f4a2c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56030,10 +47093,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56041,10 +47101,7 @@
       "test/core/json/corpus/1e5c2f367f02e47a8c160cda1cd9d91decbac441"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56052,10 +47109,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56063,10 +47117,7 @@
       "test/core/json/corpus/20efdba13ca7a3657d071b3d56997aa3b083068a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56074,10 +47125,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56085,10 +47133,7 @@
       "test/core/json/corpus/215a956168f77421253e947c2436371d56aa7ea1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56096,10 +47141,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56107,10 +47149,7 @@
       "test/core/json/corpus/2174b9ab6bf4f7c21fe1ed56957f1776ef611959"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56118,10 +47157,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56129,10 +47165,7 @@
       "test/core/json/corpus/232f4bced4075545bb1469d5c2360f083ec7ec65"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56140,10 +47173,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56151,10 +47181,7 @@
       "test/core/json/corpus/26aca41ee8f199e7c0c7cf31d979952571c53fc9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56162,10 +47189,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56173,10 +47197,7 @@
       "test/core/json/corpus/27d84210636e9e83786be9e9b96b69f70b743b86"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56184,10 +47205,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56195,10 +47213,7 @@
       "test/core/json/corpus/27da426a5883662d19ea78f306d7a992be52f827"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56206,10 +47221,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56217,10 +47229,7 @@
       "test/core/json/corpus/296dcda6f7e6979e68ddef7cbc1206a355084ad3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56228,10 +47237,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56239,10 +47245,7 @@
       "test/core/json/corpus/29b08c03ca5a6851fa4604a984cb7ff44433a5a5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56250,10 +47253,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56261,10 +47261,7 @@
       "test/core/json/corpus/2a3d964ec4527ad9f02129fcbf087b67a6ea6444"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56272,10 +47269,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56283,10 +47277,7 @@
       "test/core/json/corpus/2b04974149815b143afb17af4388d751217e54ec"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56294,10 +47285,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56305,10 +47293,7 @@
       "test/core/json/corpus/2b3b1ad952e3acb566e32a84e2d503acde13eb53"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56316,10 +47301,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56327,10 +47309,7 @@
       "test/core/json/corpus/2cc301a6ed7f01e2cd339f02bd0fda20c227a17e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56338,10 +47317,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56349,10 +47325,7 @@
       "test/core/json/corpus/2d3d5b9275553430b4cfa68114099120ad7809ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56360,10 +47333,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56371,10 +47341,7 @@
       "test/core/json/corpus/2d5dbf403e0c12e2fe21b04ca3daff171c028ab7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56382,10 +47349,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56393,10 +47357,7 @@
       "test/core/json/corpus/2d7c769bed62004270034b976b1d940a5686106b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56404,10 +47365,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56415,10 +47373,7 @@
       "test/core/json/corpus/2db120231eea12d9cdc6a00f30839b3cef2046be"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56426,10 +47381,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56437,10 +47389,7 @@
       "test/core/json/corpus/2db610e1a230409a205cf22fbad3348a54cbe703"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56448,10 +47397,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56459,10 +47405,7 @@
       "test/core/json/corpus/2df1dd2e2f5d57e7d9d4e60a756a86e603573225"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56470,10 +47413,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56481,10 +47421,7 @@
       "test/core/json/corpus/2e32faacd3ea4461ec7aace297b4be6904d9a389"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56492,10 +47429,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56503,10 +47437,7 @@
       "test/core/json/corpus/2e756d91759d7e74f5b776c0d2a1935292f576d1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56514,10 +47445,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56525,10 +47453,7 @@
       "test/core/json/corpus/2f09b24f9f5fa0af2c29b604b4b0f97fa6163895"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56536,10 +47461,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56547,10 +47469,7 @@
       "test/core/json/corpus/3027d901361162b38fcaf17f97ba7d9646e32495"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56558,10 +47477,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56569,10 +47485,7 @@
       "test/core/json/corpus/30d4467ecb771ece9ed6c78a46adc299072d9db9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56580,10 +47493,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56591,10 +47501,7 @@
       "test/core/json/corpus/311048bbf4c4bbabcde73607d7e76915cee9312e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56602,10 +47509,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56613,10 +47517,7 @@
       "test/core/json/corpus/323b48969d7bf9a50aacf0912f1b5cb02119e2ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56624,10 +47525,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56635,10 +47533,7 @@
       "test/core/json/corpus/33400a242baeb5c46ddb1578c28b10d32a9c3cd3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56646,10 +47541,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56657,10 +47549,7 @@
       "test/core/json/corpus/356a192b7913b04c54574d18c28d46e6395428ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56668,10 +47557,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56679,10 +47565,7 @@
       "test/core/json/corpus/35e995c107a71caeb833bb3b79f9f54781b33fa1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56690,10 +47573,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56701,10 +47581,7 @@
       "test/core/json/corpus/373769c15c145472c8ec3bdde8fc84e85ec79211"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56712,10 +47589,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56723,10 +47597,7 @@
       "test/core/json/corpus/3795d911970a1fd8416b93649051b418948e3edf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56734,10 +47605,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56745,10 +47613,7 @@
       "test/core/json/corpus/37d3333e1e2a384c3ba14a52682ca29f061d1ac7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56756,10 +47621,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56767,10 +47629,7 @@
       "test/core/json/corpus/38cd33bb390445e35b6514024b1317902cb7ba1b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56778,10 +47637,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56789,10 +47645,7 @@
       "test/core/json/corpus/3a90c688f44447a78efc111872b061a001f04d2b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56800,10 +47653,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56811,10 +47661,7 @@
       "test/core/json/corpus/3b1e7b56ad4465d126ea994d34d20dcecbb3a50a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56822,10 +47669,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56833,10 +47677,7 @@
       "test/core/json/corpus/3c0a8d6c31edaca124714624eb64cb8ec0cbab13"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56844,10 +47685,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56855,10 +47693,7 @@
       "test/core/json/corpus/3cc0c9adcf3882f01409c70391c3cd30588ef34c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56866,10 +47701,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56877,10 +47709,7 @@
       "test/core/json/corpus/3d0d9878b812ce4634962ba3dd755c0953550200"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56888,10 +47717,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56899,10 +47725,7 @@
       "test/core/json/corpus/3d4d5887a2fcdc5dd360b8a6f89dbce6500d8580"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56910,10 +47733,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56921,10 +47741,7 @@
       "test/core/json/corpus/3efb5b7ff94c5b9d411c93da9a70e1cc547f4c59"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56932,10 +47749,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56943,10 +47757,7 @@
       "test/core/json/corpus/421b7e8ea86e3c07474af16ab3ccef55d1857205"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56954,10 +47765,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56965,10 +47773,7 @@
       "test/core/json/corpus/428d051e437dd260f2a2f7ed920d9734ca34dc90"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56976,10 +47781,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -56987,10 +47789,7 @@
       "test/core/json/corpus/42adc281578ffb1b8684b78b47aa40a16d10b6e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -56998,10 +47797,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57009,10 +47805,7 @@
       "test/core/json/corpus/43620ecd2e2fd58fe5650da2e9783f980f29ec07"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57020,10 +47813,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57031,10 +47821,7 @@
       "test/core/json/corpus/43b1ffcda49477adb1632822202631990ed3a269"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57042,10 +47829,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57053,10 +47837,7 @@
       "test/core/json/corpus/45279f85bf2f533a629073caf89403006279fab2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57064,10 +47845,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57075,10 +47853,7 @@
       "test/core/json/corpus/455d9bb597f08bf698454157ecd86647b5dec4e0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57086,10 +47861,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57097,10 +47869,7 @@
       "test/core/json/corpus/4561eb5c7e43cae048c06aaaad3d5f5218b376e9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57108,10 +47877,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57119,10 +47885,7 @@
       "test/core/json/corpus/46417b001eeb87c32b642499fd5e1690d5d88c7f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57130,10 +47893,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57141,10 +47901,7 @@
       "test/core/json/corpus/468af040024e96e9878ef33cc52755c5e7f5cbd5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57152,10 +47909,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57163,10 +47917,7 @@
       "test/core/json/corpus/469e5ed2547e9e55a96e96eb832c615631e3b576"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57174,10 +47925,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57185,10 +47933,7 @@
       "test/core/json/corpus/472b07b9fcf2c2451e8781e944bf5f77cd8457c8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57196,10 +47941,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57207,10 +47949,7 @@
       "test/core/json/corpus/486da8aff04083c5e0fe112e733f2ae510e312a1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57218,10 +47957,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57229,10 +47965,7 @@
       "test/core/json/corpus/488a5ed641e340ae51992e04ce6590bdec587218"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57240,10 +47973,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57251,10 +47981,7 @@
       "test/core/json/corpus/4a0a19218e082a343a1b17e5333409af9d98f0f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57262,10 +47989,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57273,10 +47997,7 @@
       "test/core/json/corpus/4a6644a1a3d5218f4bbd60220cab79c0b7bef45e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57284,10 +48005,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57295,10 +48013,7 @@
       "test/core/json/corpus/4b39d4b8a9a04b9469e8fe4016322327fe540882"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57306,10 +48021,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57317,10 +48029,7 @@
       "test/core/json/corpus/4bb0294e14946fb1f64213384097a676d3ef94f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57328,10 +48037,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57339,10 +48045,7 @@
       "test/core/json/corpus/4cd66dfabbd964f8c6c4414b07cdb45dae692e19"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57350,10 +48053,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57361,10 +48061,7 @@
       "test/core/json/corpus/4d134bc072212ace2df385dae143139da74ec0ef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57372,10 +48069,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57383,10 +48077,7 @@
       "test/core/json/corpus/4efa35221b2088e785048d0ff8fd99b03d5316fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57394,10 +48085,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57405,10 +48093,7 @@
       "test/core/json/corpus/4fa2a4a5a2f7dc4ddbdecae3ee85c787817b4cf8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57416,10 +48101,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57427,10 +48109,7 @@
       "test/core/json/corpus/4fed4bf2dc6259d9de54e9fa7db4fd5a61f2535e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57438,10 +48117,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57449,10 +48125,7 @@
       "test/core/json/corpus/4ff800de0863adb5851fa26935159aa53b11cba7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57460,10 +48133,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57471,10 +48141,7 @@
       "test/core/json/corpus/4ff99a030518a132748c44bc1d836018e5b82cd0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57482,10 +48149,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57493,10 +48157,7 @@
       "test/core/json/corpus/531c87b9772e54e3e183ef729f0a7d5a0d584f46"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57504,10 +48165,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57515,10 +48173,7 @@
       "test/core/json/corpus/534d66e7b0709d1e7692faae9e7f7299c92bba4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57526,10 +48181,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57537,10 +48189,7 @@
       "test/core/json/corpus/548775f9d7d13339dba3001f8238b84e9a457533"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57548,10 +48197,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57559,10 +48205,7 @@
       "test/core/json/corpus/54ec3b2d8a9b7a6d8204712eb1b90da703cf8a79"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57570,10 +48213,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57581,10 +48221,7 @@
       "test/core/json/corpus/552cfe1d8958e6d003ec8e883c4983dd67ef255e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57592,10 +48229,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57603,10 +48237,7 @@
       "test/core/json/corpus/55f0c61d096a08506076489ded3b868db4086770"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57614,10 +48245,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57625,10 +48253,7 @@
       "test/core/json/corpus/56cd60743c2cee939f5f357905bd36ec9363f441"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57636,10 +48261,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57647,10 +48269,7 @@
       "test/core/json/corpus/56e5f35e3d08b4e17e3558cacddf9e5ed13a0159"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57658,10 +48277,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57669,10 +48285,7 @@
       "test/core/json/corpus/580b03c49fba02bb8e399500eb66f2ff0482b22a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57680,10 +48293,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57691,10 +48301,7 @@
       "test/core/json/corpus/5852643fbbcf92b0181327b69b4874c6ba6fa9f4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57702,10 +48309,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57713,10 +48317,7 @@
       "test/core/json/corpus/58f497e5efaf9f69080f9eef63b0b9dabcfdbc0d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57724,10 +48325,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57735,10 +48333,7 @@
       "test/core/json/corpus/59129aacfb6cebbe2c52f30ef3424209f7252e82"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57746,10 +48341,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57757,10 +48349,7 @@
       "test/core/json/corpus/598a287a3e56caae23ed63abc95d5f3457165eef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57768,10 +48357,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57779,10 +48365,7 @@
       "test/core/json/corpus/5a37a26dd2482226f534f79d321d28e7a615ab72"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57790,10 +48373,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57801,10 +48381,7 @@
       "test/core/json/corpus/5a710dcd4c78ca1a74ceb9fbfb011f7ac86a5f7b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57812,10 +48389,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57823,10 +48397,7 @@
       "test/core/json/corpus/5ae7b87f5377d5ffc16fd3f69b4a4aa7be8b1184"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57834,10 +48405,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57845,10 +48413,7 @@
       "test/core/json/corpus/5b3fe86d5a309a6ba745881bd220fe1100b271ce"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57856,10 +48421,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57867,10 +48429,7 @@
       "test/core/json/corpus/5c38b7da113ab4535dbc22777ce8a1480c1c9d1e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57878,10 +48437,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57889,10 +48445,7 @@
       "test/core/json/corpus/5ca6c45a8d2e11c782806df43e7668beb4aba8f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57900,10 +48453,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57911,10 +48461,7 @@
       "test/core/json/corpus/5da7b543313339f84fd52e96bacf3a73368a1d2c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57922,10 +48469,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57933,10 +48477,7 @@
       "test/core/json/corpus/5e12ae9117668bcc22832640cc626315940aeba8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57944,10 +48485,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57955,10 +48493,7 @@
       "test/core/json/corpus/5e397439a2680ed827c46704969c6711dabbda84"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57966,10 +48501,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57977,10 +48509,7 @@
       "test/core/json/corpus/5e629dfb8b7533c7c2d173d4c3d587c88112cc29"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -57988,10 +48517,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -57999,10 +48525,7 @@
       "test/core/json/corpus/5e785c7c26813577f3e30ef8f7e37ab2a9ffe39c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58010,10 +48533,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58021,10 +48541,7 @@
       "test/core/json/corpus/5f3394f5058822cc044b92654837625897176480"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58032,10 +48549,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58043,10 +48557,7 @@
       "test/core/json/corpus/5fb9bcbbb30a377209eab0541d144e44e71508d7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58054,10 +48565,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58065,10 +48573,7 @@
       "test/core/json/corpus/6008213a61d06b4382b223768530c3452968b7b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58076,10 +48581,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58087,10 +48589,7 @@
       "test/core/json/corpus/60ba4b2daa4ed4d070fec06687e249e0e6f9ee45"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58098,10 +48597,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58109,10 +48605,7 @@
       "test/core/json/corpus/625ed64c30c8ab2f0b3bc75690f9faa4270f0041"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58120,10 +48613,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58131,10 +48621,7 @@
       "test/core/json/corpus/6314c2b304d04dc0108a95d29a93515e85e2b0b0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58142,10 +48629,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58153,10 +48637,7 @@
       "test/core/json/corpus/6462d8079d2ea921617e7d073b85cfab706800d3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58164,10 +48645,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58175,10 +48653,7 @@
       "test/core/json/corpus/6474383282788e556aa86f57fc8650137ad264d0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58186,10 +48661,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58197,10 +48669,7 @@
       "test/core/json/corpus/648c3f58ecc8fb4b8c779e6b11006ab5b1986dad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58208,10 +48677,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58219,10 +48685,7 @@
       "test/core/json/corpus/66328e03a2ccd5e54dab23b816182786e6f518b6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58230,10 +48693,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58241,10 +48701,7 @@
       "test/core/json/corpus/683e9045bc95e0cb5fc16ec64b118433475ba559"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58252,10 +48709,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58263,10 +48717,7 @@
       "test/core/json/corpus/689f13680f4682303c8aa6828b67955959dc9669"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58274,10 +48725,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58285,10 +48733,7 @@
       "test/core/json/corpus/68c6ba7f0602a5410d1fa3c5de24fe264436b993"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58296,10 +48741,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58307,10 +48749,7 @@
       "test/core/json/corpus/699cafde80b1e1777306f781186d1253f018ab23"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58318,10 +48757,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58329,10 +48765,7 @@
       "test/core/json/corpus/69ab053b59e235fd6af246c5180f15bd95295113"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58340,10 +48773,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58351,10 +48781,7 @@
       "test/core/json/corpus/69afa12510b2e653b0af7c7030832647b2d63c37"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58362,10 +48789,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58373,10 +48797,7 @@
       "test/core/json/corpus/6b75857f86be5c51b21a97f4a61e69e8bb6cd698"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58384,10 +48805,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58395,10 +48813,7 @@
       "test/core/json/corpus/6c75e71ecde9f073a7bad89f4831c8cde0bc1830"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58406,10 +48821,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58417,10 +48829,7 @@
       "test/core/json/corpus/6ce5170dc4f2eee3b31a875b6a41f2444959f3dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58428,10 +48837,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58439,10 +48845,7 @@
       "test/core/json/corpus/6d2859436fbbee637f0a5981ca82e8f88a1d0d28"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58450,10 +48853,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58461,10 +48861,7 @@
       "test/core/json/corpus/6d63e39f56d1d537bab9c2830303cabab3cd9035"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58472,10 +48869,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58483,10 +48877,7 @@
       "test/core/json/corpus/6e05a0a240fe2974e14527bbe390d294564156e2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58494,10 +48885,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58505,10 +48893,7 @@
       "test/core/json/corpus/6e6c9d301adb0f0ddffd79cdf3426a2de99bad48"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58516,10 +48901,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58527,10 +48909,7 @@
       "test/core/json/corpus/6e989edf725ec64849377681ce02641c3d1870e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58538,10 +48917,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58549,10 +48925,7 @@
       "test/core/json/corpus/70142f66475ae2fb33722d8d4750f386ecfefe7b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58560,10 +48933,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58571,10 +48941,7 @@
       "test/core/json/corpus/719edbe667ce2729ac78a22dac29263c91144029"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58582,10 +48949,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58593,10 +48957,7 @@
       "test/core/json/corpus/71f99ca2bda6ef2e15b965479a79587f9d794be0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58604,10 +48965,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58615,10 +48973,7 @@
       "test/core/json/corpus/743e89b768af4bd591ea7228118550b1bfb8e7d1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58626,10 +48981,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58637,10 +48989,7 @@
       "test/core/json/corpus/7714a1a32872442a2eaff472685f3ea69451a732"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58648,10 +48997,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58659,10 +49005,7 @@
       "test/core/json/corpus/7719a1c782a1ba91c031a682a0a2f8658209adbf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58670,10 +49013,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58681,10 +49021,7 @@
       "test/core/json/corpus/775e8ffda1f5d340dba472d06dc7c8bf8159e379"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58692,10 +49029,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58703,10 +49037,7 @@
       "test/core/json/corpus/77de68daecd823babbb58edb1c8e14d7106e83bb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58714,10 +49045,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58725,10 +49053,7 @@
       "test/core/json/corpus/7957dc9aac31e6a6783fb3a6ee073688fed6cf9d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58736,10 +49061,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58747,10 +49069,7 @@
       "test/core/json/corpus/7ae893cbbf9b11ff411640b80985ce618907559c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58758,10 +49077,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58769,10 +49085,7 @@
       "test/core/json/corpus/7b20ac50954063e3ad00813acab4a98b2bfdb858"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58780,10 +49093,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58791,10 +49101,7 @@
       "test/core/json/corpus/7b6273145fb090de1c6163586f884a1da4b5cfbf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58802,10 +49109,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58813,10 +49117,7 @@
       "test/core/json/corpus/7cf84b5a78281e6c6b5a9884110f3dbc6a40e310"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58824,10 +49125,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58835,10 +49133,7 @@
       "test/core/json/corpus/7ef13b83e6bde582d9000be043e729cd3221c150"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58846,10 +49141,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58857,10 +49149,7 @@
       "test/core/json/corpus/82059e250904b478f65daa0e647c1647ba6d6a3d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58868,10 +49157,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58879,10 +49165,7 @@
       "test/core/json/corpus/8207fdf4bd302d6b6b1894990b353944a8716aa7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58890,10 +49173,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58901,10 +49181,7 @@
       "test/core/json/corpus/831a49ad81b59025c241ac9e58bd88463fd798eb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58912,10 +49189,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58923,10 +49197,7 @@
       "test/core/json/corpus/84582c1dbe026475319df14c19967d1dd0bf751f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58934,10 +49205,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58945,10 +49213,7 @@
       "test/core/json/corpus/860d4ad0b7c026d1fcf51932b5e46500be7860a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58956,10 +49221,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58967,10 +49229,7 @@
       "test/core/json/corpus/865c7cf36a4f4499a6242e51b77b58b868a7447b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -58978,10 +49237,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -58989,10 +49245,7 @@
       "test/core/json/corpus/87a2b80f9272583517c0207af176fc40ea55022c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59000,10 +49253,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59011,10 +49261,7 @@
       "test/core/json/corpus/887309d048beef83ad3eabf2a79a64a389ab1c9f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59022,10 +49269,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59033,10 +49277,7 @@
       "test/core/json/corpus/88d89860ccaf21e5f0f002303a2cd853ecbb2acb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59044,10 +49285,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59055,10 +49293,7 @@
       "test/core/json/corpus/88f658400b1870ddf081fb03020c3098b0b1e083"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59066,10 +49301,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59077,10 +49309,7 @@
       "test/core/json/corpus/88f8b0984bb2f081918ad883c8f0ffacb5a8ff0a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59088,10 +49317,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59099,10 +49325,7 @@
       "test/core/json/corpus/89304953495f060c7abd3584d83cb1c8e6d6653b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59110,10 +49333,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59121,10 +49341,7 @@
       "test/core/json/corpus/8a5f6dc6873e3fd51fd866854d85258f8aa83a02"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59132,10 +49349,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59143,10 +49357,7 @@
       "test/core/json/corpus/8a87261277c15667e2957dd52c5db6757ebc8e88"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59154,10 +49365,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59165,10 +49373,7 @@
       "test/core/json/corpus/8aa61d8bd260942521bb1ba82cd4cce2324fdbee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59176,10 +49381,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59187,10 +49389,7 @@
       "test/core/json/corpus/8d8874439569824e371a0284460440175cdb8a27"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59198,10 +49397,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59209,10 +49405,7 @@
       "test/core/json/corpus/8d952ec2e33b2a6a1c7876898719a610f5546388"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59220,10 +49413,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59231,10 +49421,7 @@
       "test/core/json/corpus/8e6fec8a05b24f221b6e94fdfe205e5bf7709a2c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59242,10 +49429,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59253,10 +49437,7 @@
       "test/core/json/corpus/8e7fda77644ff91578d25243fad51a3cd6d60860"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59264,10 +49445,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59275,10 +49453,7 @@
       "test/core/json/corpus/8ea6295ff82bb119acd44a91b463b19fedafb226"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59286,10 +49461,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59297,10 +49469,7 @@
       "test/core/json/corpus/8ee51caaa2c2f4ee2e5b4b7ef5a89db7df1068d7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59308,10 +49477,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59319,10 +49485,7 @@
       "test/core/json/corpus/8ef4dd9f2d0f9d770c937d9a43413d24df83f09b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59330,10 +49493,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59341,10 +49501,7 @@
       "test/core/json/corpus/8efd86fb78a56a5145ed7739dcb00c78581c5375"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59352,10 +49509,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59363,10 +49517,7 @@
       "test/core/json/corpus/8f0ba762c2fed0fc993feb91948902ac397b0919"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59374,10 +49525,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59385,10 +49533,7 @@
       "test/core/json/corpus/8fe81e450694cac1eb4c4a5c966ffbc56ade3513"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59396,10 +49541,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59407,10 +49549,7 @@
       "test/core/json/corpus/902ba3cda1883801594b6e1b452790cc53948fda"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59418,10 +49557,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59429,10 +49565,7 @@
       "test/core/json/corpus/910a1528b28ebc6ff2f2a4fedb013c86de4103e2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59440,10 +49573,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59451,10 +49581,7 @@
       "test/core/json/corpus/92049bf3d8a0ec93c2d1633631c0082e66ca69e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59462,10 +49589,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59473,10 +49597,7 @@
       "test/core/json/corpus/920a3c318f3127b9c30ab02a077555c7dfbb6edb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59484,10 +49605,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59495,10 +49613,7 @@
       "test/core/json/corpus/925fc05dd661aeb4a776dcbc5df3dcb2cefaf0a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59506,10 +49621,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59517,10 +49629,7 @@
       "test/core/json/corpus/9367ba65affd5bf7aabf79c28e783cc5d93518e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59528,10 +49637,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59539,10 +49645,7 @@
       "test/core/json/corpus/939f5049b1eefb91ccbd3fcecaed8cb21ea6b285"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59550,10 +49653,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59561,10 +49661,7 @@
       "test/core/json/corpus/9405c2b00eaa5526f71cc78914dbd3ecaf093b6e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59572,10 +49669,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59583,10 +49677,7 @@
       "test/core/json/corpus/94d3598751569d2a5be258e59665cbbf0692dfbe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59594,10 +49685,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59605,10 +49693,7 @@
       "test/core/json/corpus/94f96d95d01e98fd2f04ce26c0913e5f9a882fb4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59616,10 +49701,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59627,10 +49709,7 @@
       "test/core/json/corpus/95b54a84db75abab401d282fdb04440a879a9708"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59638,10 +49717,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59649,10 +49725,7 @@
       "test/core/json/corpus/96189202e587ec951d5795da3e03062f2fb5d708"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59660,10 +49733,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59671,10 +49741,7 @@
       "test/core/json/corpus/9711703428704ce2827a719eddb9d54be23a0cb7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59682,10 +49749,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59693,10 +49757,7 @@
       "test/core/json/corpus/9734597e96eebe99b2243121a51d178a338ec46f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59704,10 +49765,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59715,10 +49773,7 @@
       "test/core/json/corpus/9747c85a9510011bf87c23a80b029b9f2d04c37d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59726,10 +49781,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59737,10 +49789,7 @@
       "test/core/json/corpus/97d170e1550eee4afc0af065b78cda302a97674c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59748,10 +49797,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59759,10 +49805,7 @@
       "test/core/json/corpus/98e02e7fc96479e8d10ff2cc7610be772e2d6fba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59770,10 +49813,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59781,10 +49821,7 @@
       "test/core/json/corpus/996156b191b619eff79b2fcbb7598518a09b06bc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59792,10 +49829,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59803,10 +49837,7 @@
       "test/core/json/corpus/99667fcfa6d583a742fb5450527fc86dfb78ebbf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59814,10 +49845,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59825,10 +49853,7 @@
       "test/core/json/corpus/9b1ead2dbeeb1a3e9a7bebcf6964c3cfbc7e8867"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59836,10 +49861,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59847,10 +49869,7 @@
       "test/core/json/corpus/9b7669e201574bfb979d56110539a90da5aca2c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59858,10 +49877,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59869,10 +49885,7 @@
       "test/core/json/corpus/9c24b456af3cb51a1ff2780c2d9cbdd7d93f6c76"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59880,10 +49893,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59891,10 +49901,7 @@
       "test/core/json/corpus/9d0441f23ae7d5a3a5b1140497868ee6eeab656b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59902,10 +49909,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59913,10 +49917,7 @@
       "test/core/json/corpus/9d890bd3139a8f9a44d435ff8edfbeb5b072ded0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59924,10 +49925,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59935,10 +49933,7 @@
       "test/core/json/corpus/9e6a55b6b4563e652a23be9d623ca5055c356940"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59946,10 +49941,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59957,10 +49949,7 @@
       "test/core/json/corpus/9ec88420ef0408642f6930996e35f5b9f18ec88c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59968,10 +49957,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -59979,10 +49965,7 @@
       "test/core/json/corpus/9edd067c569315d5e93b0d14c7eac9fa6d81d3cd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -59990,10 +49973,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60001,10 +49981,7 @@
       "test/core/json/corpus/9fbda4f714043d975389b536b4497c6d713452e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60012,10 +49989,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60023,10 +49997,7 @@
       "test/core/json/corpus/9fc8cb8ab3b05e306e5e81d9d949e69f931244ea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60034,10 +50005,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60045,10 +50013,7 @@
       "test/core/json/corpus/a02b857f2eff73e8e188f35529dd91f8144b23b9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60056,10 +50021,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60067,10 +50029,7 @@
       "test/core/json/corpus/a060d5bfd1235cbbe4bcecf332fa3b03bc2282e3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60078,10 +50037,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60089,10 +50045,7 @@
       "test/core/json/corpus/a0931fae1d43e7887c1cabde83fdfc52eaeedba8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60100,10 +50053,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60111,10 +50061,7 @@
       "test/core/json/corpus/a0d4af29c6c223b48fe34d6a09b3a7466242f33c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60122,10 +50069,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60133,10 +50077,7 @@
       "test/core/json/corpus/a1abe8a785030d475a7350438fd23a05c382c110"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60144,10 +50085,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60155,10 +50093,7 @@
       "test/core/json/corpus/a1fb86293eac950c2b4f5182d9e4b5d9e0982ef6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60166,10 +50101,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60177,10 +50109,7 @@
       "test/core/json/corpus/a2d4e3d6f5ba43c9199d5d2011678f82cfd55afc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60188,10 +50117,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60199,10 +50125,7 @@
       "test/core/json/corpus/a39653cb3d97c58c44013197f4d7557577700177"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60210,10 +50133,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60221,10 +50141,7 @@
       "test/core/json/corpus/a4c74ad56ae0e94e96101a8f2ce9b1e588df5e44"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60232,10 +50149,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60243,10 +50157,7 @@
       "test/core/json/corpus/a6b34b06b00e9226f2bd961483f9da81d8de99a8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60254,10 +50165,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60265,10 +50173,7 @@
       "test/core/json/corpus/a72c3b9cc71eb7f0e0e4dabcd2dcd2b997f21c07"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60276,10 +50181,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60287,10 +50189,7 @@
       "test/core/json/corpus/a749d24bac55bc19465acc92b12244c56ca0f20d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60298,10 +50197,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60309,10 +50205,7 @@
       "test/core/json/corpus/a78009ff8b3f4d722ee0eb84795e857e74a58aea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60320,10 +50213,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60331,10 +50221,7 @@
       "test/core/json/corpus/a7ae4b16677806d78d0016c276b6722eba8eef3c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60342,10 +50229,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60353,10 +50237,7 @@
       "test/core/json/corpus/a806f43dd48e35e75c27814c13a2a96c12449bd1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60364,10 +50245,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60375,10 +50253,7 @@
       "test/core/json/corpus/a90a858013f90d2a94e0d62a7156ffd6848bf238"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60386,10 +50261,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60397,10 +50269,7 @@
       "test/core/json/corpus/a94bfbfe16d026b52d7f73cf78fdf7d6a6c5c58b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60408,10 +50277,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60419,10 +50285,7 @@
       "test/core/json/corpus/a9718f029d11a9335ef596cbd42794de5b0b18b5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60430,10 +50293,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60441,10 +50301,7 @@
       "test/core/json/corpus/aa6e08a488d1ed00aa51f20c2477fc89e7b0a852"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60452,10 +50309,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60463,10 +50317,7 @@
       "test/core/json/corpus/aaa038513c192fec501e4e7302156872ce2fde37"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60474,10 +50325,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60485,10 +50333,7 @@
       "test/core/json/corpus/ac2686c095a5a1c92a1d4209a6c287778720c86d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60496,10 +50341,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60507,10 +50349,7 @@
       "test/core/json/corpus/ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60518,10 +50357,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60529,10 +50365,7 @@
       "test/core/json/corpus/ac9231da4082430afe8f4d40127814c613648d8e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60540,10 +50373,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60551,10 +50381,7 @@
       "test/core/json/corpus/adc83b19e793491b1c6ea0fd8b46cd9f32e592fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60562,10 +50389,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60573,10 +50397,7 @@
       "test/core/json/corpus/aff25e569bd8c93157e08cd18ebcd896438e34c9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60584,10 +50405,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60595,10 +50413,7 @@
       "test/core/json/corpus/affced8168ec801de89deac663f708f0c96cf1a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60606,10 +50421,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60617,10 +50429,7 @@
       "test/core/json/corpus/b015dfc2f62b640d7c25adab7b38c5fcb5cb64c8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60628,10 +50437,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60639,10 +50445,7 @@
       "test/core/json/corpus/b021dd7cd98b63092685ea092df0dc01c8f63334"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60650,10 +50453,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60661,10 +50461,7 @@
       "test/core/json/corpus/b17485b8bdec8809b3819a83753ca893871df403"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60672,10 +50469,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60683,10 +50477,7 @@
       "test/core/json/corpus/b32ef51eca9c6c658e6fb75fdf96bbba066404e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60694,10 +50485,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60705,10 +50493,7 @@
       "test/core/json/corpus/b3f0c7f6bb763af1be91d9e74eabfeb199dc1f1f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60716,10 +50501,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60727,10 +50509,7 @@
       "test/core/json/corpus/b45a1635ec526bcc890f9d735976704e516c5f19"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60738,10 +50517,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60749,10 +50525,7 @@
       "test/core/json/corpus/b50ce51a7baa28cd298ebd05b4a3b9b70f9d4370"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60760,10 +50533,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60771,10 +50541,7 @@
       "test/core/json/corpus/b5126721812b925426b30d283d2bb8b6969f230a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60782,10 +50549,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60793,10 +50557,7 @@
       "test/core/json/corpus/b57af943a3ee411bffeaa3872eec9c6fb01569a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60804,10 +50565,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60815,10 +50573,7 @@
       "test/core/json/corpus/b5abf6fd22ed0f852781de35d043059d0f86f3cd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60826,10 +50581,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60837,10 +50589,7 @@
       "test/core/json/corpus/b6589fc6ab0dc82cf12099d1c2d40ab994e8410c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60848,10 +50597,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60859,10 +50605,7 @@
       "test/core/json/corpus/b6f19238d2b04c5b86a17369093dafda34f332e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60870,10 +50613,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60881,10 +50621,7 @@
       "test/core/json/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60892,10 +50629,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60903,10 +50637,7 @@
       "test/core/json/corpus/b9c38fad09c80db7781fefbe51039752de575ecc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60914,10 +50645,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60925,10 +50653,7 @@
       "test/core/json/corpus/bb407c8992800444201dccfe744dac49c0295fde"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60936,10 +50661,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60947,10 +50669,7 @@
       "test/core/json/corpus/bc335734f73502b92d2bd3587259ce915985f0ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60958,10 +50677,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60969,10 +50685,7 @@
       "test/core/json/corpus/bd113c2c8a2328e3674c680c7cff829a6c8ab924"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -60980,10 +50693,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -60991,10 +50701,7 @@
       "test/core/json/corpus/be051d58015d4af1977a5dfd14ef3fd070ecc9d2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61002,10 +50709,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61013,10 +50717,7 @@
       "test/core/json/corpus/be461a0cd1fda052a69c3fd94f8cf5f6f86afa34"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61024,10 +50725,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61035,10 +50733,7 @@
       "test/core/json/corpus/bef524502f8dbbc45af717ece01ec88edd7f903b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61046,10 +50741,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61057,10 +50749,7 @@
       "test/core/json/corpus/bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61068,10 +50757,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61079,10 +50765,7 @@
       "test/core/json/corpus/c0b6a90832b78ed5f6d129d3640c612540527c85"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61090,10 +50773,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61101,10 +50781,7 @@
       "test/core/json/corpus/c18d315f0d35849b2aae4a47cab4608204b85d76"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61112,10 +50789,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61123,10 +50797,7 @@
       "test/core/json/corpus/c257fd6bc9e5254a733378ab4ddd39629c4a3069"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61134,10 +50805,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61145,10 +50813,7 @@
       "test/core/json/corpus/c2bf7f49d8f2e13a60af4473b3b3451b65b3aa9a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61156,10 +50821,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61167,10 +50829,7 @@
       "test/core/json/corpus/c308517acf6f7088634d491a1608240f83a3ac95"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61178,10 +50837,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61189,10 +50845,7 @@
       "test/core/json/corpus/c3badd71ef8a51b97ce93cbfe99f6778048f2128"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61200,10 +50853,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61211,10 +50861,7 @@
       "test/core/json/corpus/c482a632702ae7f532d126e70149dda4fadc3cd7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61222,10 +50869,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61233,10 +50877,7 @@
       "test/core/json/corpus/c541bb86e55b98e083b141114066f9c17d853374"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61244,10 +50885,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61255,10 +50893,7 @@
       "test/core/json/corpus/c5b50b9015b6aaedd7eb1077b1204858f837b53c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61266,10 +50901,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61277,10 +50909,7 @@
       "test/core/json/corpus/c62ef0dbd1350da9ea5a32e56672d385837643e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61288,10 +50917,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61299,10 +50925,7 @@
       "test/core/json/corpus/c7a34d6d49e1da1ccd490350c2df3a168ed09ae8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61310,10 +50933,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61321,10 +50941,7 @@
       "test/core/json/corpus/c88c4bec8d440c56d3ea7abce39276f0927dbe0a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61332,10 +50949,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61343,10 +50957,7 @@
       "test/core/json/corpus/c92f147bfc034003ac42ed9e62a16c84102ab417"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61354,10 +50965,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61365,10 +50973,7 @@
       "test/core/json/corpus/c96b0fe6034668edf37ef0f5f391d5107953dc06"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61376,10 +50981,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61387,10 +50989,7 @@
       "test/core/json/corpus/cac74aa5d7aab7fce0253f00c1a025980c1f9b7a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61398,10 +50997,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61409,10 +51005,7 @@
       "test/core/json/corpus/caea0a0e6d8708cf682eaa446c344da56a7d5515"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61420,10 +51013,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61431,10 +51021,7 @@
       "test/core/json/corpus/cc8a3dd2678d4b400ad630f402012b894e841b05"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61442,10 +51029,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61453,10 +51037,7 @@
       "test/core/json/corpus/cd851bec7adad52f79777fb9347d5fd2f9486aa7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61464,10 +51045,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61475,10 +51053,7 @@
       "test/core/json/corpus/ce3899b62ba3efe00eb31ddad2861ffe16a30d06"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61486,10 +51061,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61497,10 +51069,7 @@
       "test/core/json/corpus/ce8b76fdcdbf1c951afc2b115be9acc8a6358b32"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61508,10 +51077,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61519,10 +51085,7 @@
       "test/core/json/corpus/cec87b67871fc7a59652bc3546fbbb68e4d31e28"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61530,10 +51093,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61541,10 +51101,7 @@
       "test/core/json/corpus/cf32406111908544e504c84731147f072cdf2fbd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61552,10 +51109,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61563,10 +51117,7 @@
       "test/core/json/corpus/cf35dc76bf9a2052636c1ecc92942161830dcdc3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61574,10 +51125,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61585,10 +51133,7 @@
       "test/core/json/corpus/cf6a5e6bfe4f15b43e411dd2782e10f1670c9767"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61596,10 +51141,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61607,10 +51149,7 @@
       "test/core/json/corpus/cfc45616f5f0e7c25df91f6984ff5f6f1648beab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61618,10 +51157,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61629,10 +51165,7 @@
       "test/core/json/corpus/cff891e5858ae68d08ecc8470ca6a68c9438bfa3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61640,10 +51173,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61651,10 +51181,7 @@
       "test/core/json/corpus/cfff4e9d08cba81b663dd1999710008342851e19"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61662,10 +51189,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61673,10 +51197,7 @@
       "test/core/json/corpus/crash-f21867fe8b6df0b54c13e2e6e613dce871ecf0f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61684,10 +51205,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61695,10 +51213,7 @@
       "test/core/json/corpus/d1db03c626fb16c3b9cd44cc38cf40ebd355a194"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61706,10 +51221,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61717,10 +51229,7 @@
       "test/core/json/corpus/d85ca051da784c0441898c5affbf11a2ae8f56bc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61728,10 +51237,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61739,10 +51245,7 @@
       "test/core/json/corpus/da03f536ceaf609972aa2a699687cc6f73ac0dcd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61750,10 +51253,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61761,10 +51261,7 @@
       "test/core/json/corpus/da4b9237bacccdf19c0760cab7aec4a8359010b0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61772,10 +51269,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61783,10 +51277,7 @@
       "test/core/json/corpus/dcc45e405208d7a2db33d0b5b9da2a2f1b034957"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61794,10 +51285,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61805,10 +51293,7 @@
       "test/core/json/corpus/dcc60d3aaa1fc4d00201a3512284fcb79b5b68ef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61816,10 +51301,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61827,10 +51309,7 @@
       "test/core/json/corpus/dd0567ae57bf3cc85891a1ca988c2945d9186678"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61838,10 +51317,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61849,10 +51325,7 @@
       "test/core/json/corpus/dd890a5a32e9f0489c6c77695f2155041f00fc9a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61860,10 +51333,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61871,10 +51341,7 @@
       "test/core/json/corpus/df88e2baf7b76ffb2e94b9da57fd8d137f44b1ef"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61882,10 +51349,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61893,10 +51357,7 @@
       "test/core/json/corpus/e00ee378c3f6e0b3cd89bd6e7517478d093f73dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61904,10 +51365,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61915,10 +51373,7 @@
       "test/core/json/corpus/e0c124e90d068e2a70a3e148052869033453ec58"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61926,10 +51381,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61937,10 +51389,7 @@
       "test/core/json/corpus/e0d87b1f3e54e5adc5c2205f9e14772822a25766"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61948,10 +51397,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61959,10 +51405,7 @@
       "test/core/json/corpus/e1199df649697c570db5d6b2ea09d755eddd32b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61970,10 +51413,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -61981,10 +51421,7 @@
       "test/core/json/corpus/e235f6f2a8b6a22117f1baa932fb6c69799e1136"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -61992,10 +51429,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62003,10 +51437,7 @@
       "test/core/json/corpus/e3a654055a867ae62d8e68fa2c410228ac55cb6d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62014,10 +51445,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62025,10 +51453,7 @@
       "test/core/json/corpus/e3c680aac46b9c46392e3b2c43ecdcc1547f2023"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62036,10 +51461,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62047,10 +51469,7 @@
       "test/core/json/corpus/e3d134b35cc25a4861d90023c95988ec6103ddd5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62058,10 +51477,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62069,10 +51485,7 @@
       "test/core/json/corpus/e3ff65de4b1622315c3b34b7a5e39bffb275489d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62080,10 +51493,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62091,10 +51501,7 @@
       "test/core/json/corpus/e4a4085cc31476f5de9047422851d8ccf86339df"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62102,10 +51509,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62113,10 +51517,7 @@
       "test/core/json/corpus/e4e3c69da200af932c8a79fa055d7aeea28eb1d1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62124,10 +51525,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62135,10 +51533,7 @@
       "test/core/json/corpus/e6c3dd630428fd54834172b8fd2735fed9416da4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62146,10 +51541,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62157,10 +51549,7 @@
       "test/core/json/corpus/e71eb37fca2070521e1e07c503c2bcd6445b35ea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62168,10 +51557,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62179,10 +51565,7 @@
       "test/core/json/corpus/e760e6e22ae8cd1ea78fe28b5eb1f3d7b5fdc536"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62190,10 +51573,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62201,10 +51581,7 @@
       "test/core/json/corpus/e95ff1142118a2ca5b84935612a8a64d55360e64"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62212,10 +51589,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62223,10 +51597,7 @@
       "test/core/json/corpus/e9c5e2c67930513941753c2d54591c7098c82f6c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62234,10 +51605,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62245,10 +51613,7 @@
       "test/core/json/corpus/eb26070d17ffa908204912e75cb4313835042038"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62256,10 +51621,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62267,10 +51629,7 @@
       "test/core/json/corpus/ebc6aee49e5ae57722df86e7fa33c420f045a449"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62278,10 +51637,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62289,10 +51645,7 @@
       "test/core/json/corpus/ed1dc11d713e7487de18ce8317b62916959206d0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62300,10 +51653,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62311,10 +51661,7 @@
       "test/core/json/corpus/ede3f66106acd7796da8b3942d029fe213058286"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62322,10 +51669,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62333,10 +51677,7 @@
       "test/core/json/corpus/eed7bd220cd511b6d42ce6553019266a22a3d56a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62344,10 +51685,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62355,10 +51693,7 @@
       "test/core/json/corpus/f090932162756b798b1a050b05e3d36a3437c4fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62366,10 +51701,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62377,10 +51709,7 @@
       "test/core/json/corpus/f1905eaa84ba6a3593ec6ac0486a5b42893c01f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62388,10 +51717,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62399,10 +51725,7 @@
       "test/core/json/corpus/f4635fbbf765ead81a261ca152df02622e182d2c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62410,10 +51733,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62421,10 +51741,7 @@
       "test/core/json/corpus/f46eeb1020c7c4153e742a50bc24c2c6939dab1e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62432,10 +51749,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62443,10 +51757,7 @@
       "test/core/json/corpus/f473451610783521d51bc08cdd920ddd97f8a71f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62454,10 +51765,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62465,10 +51773,7 @@
       "test/core/json/corpus/f63aa599600f6e7d648c4287905e16e8e6e479fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62476,10 +51781,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62487,10 +51789,7 @@
       "test/core/json/corpus/f667dcf1c06e87db2dc49d86ea1c285e796f8f8c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62498,10 +51797,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62509,10 +51805,7 @@
       "test/core/json/corpus/f8d0f85975e49b959799cc52847110cc940b9db1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62520,10 +51813,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62531,10 +51821,7 @@
       "test/core/json/corpus/f92c47e35da42d79a48beff54b93cd28f55f05fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62542,10 +51829,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62553,10 +51837,7 @@
       "test/core/json/corpus/f9a33bb8bd78d869fbafa402d9be58940ce2c318"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62564,10 +51845,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62575,10 +51853,7 @@
       "test/core/json/corpus/fbf6f3156c1bd4bb701839bc0e26533bdccd1c9a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62586,10 +51861,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62597,10 +51869,7 @@
       "test/core/json/corpus/fe2ef495a1152561572949784c16bf23abb28057"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62608,10 +51877,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62619,10 +51885,7 @@
       "test/core/json/corpus/fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62630,10 +51893,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62641,10 +51901,7 @@
       "test/core/json/corpus/ff8fb34603c7f772768d61504954553e6bed173c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62652,10 +51909,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62663,10 +51917,7 @@
       "test/core/json/corpus/test1.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62674,10 +51925,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62685,10 +51933,7 @@
       "test/core/json/corpus/test2.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62696,10 +51941,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62707,10 +51949,7 @@
       "test/core/json/corpus/test3.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62718,10 +51957,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62729,10 +51965,7 @@
       "test/core/json/corpus/test4.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62740,10 +51973,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62751,10 +51981,7 @@
       "test/core/json/corpus/test5.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62762,10 +51989,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62773,10 +51997,7 @@
       "test/core/json/corpus/test6.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62784,10 +52005,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62795,10 +52013,7 @@
       "test/core/json/corpus/test7.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62806,10 +52021,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62817,10 +52029,7 @@
       "test/core/json/corpus/test8.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62828,10 +52037,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62839,10 +52045,7 @@
       "test/core/json/corpus/test9.json"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62850,10 +52053,7 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62861,10 +52061,7 @@
       "test/core/nanopb/corpus_response/0052f8fb6a7884ced8a6754aa13441be1f7dcd51"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62872,10 +52069,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62883,10 +52077,7 @@
       "test/core/nanopb/corpus_response/0c35544f40d428d103e9c5b969ad9cd16767b110"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62894,10 +52085,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62905,10 +52093,7 @@
       "test/core/nanopb/corpus_response/0c60ee9ed55c9af6190b132ef6636c1d2abe4540"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62916,10 +52101,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62927,10 +52109,7 @@
       "test/core/nanopb/corpus_response/0ecb3e69889c036a86d21eb942077dc9abd649be"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62938,10 +52117,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62949,10 +52125,7 @@
       "test/core/nanopb/corpus_response/1324c95dafe597fe05f9babe92fe6fbf181c1897"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62960,10 +52133,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62971,10 +52141,7 @@
       "test/core/nanopb/corpus_response/14eb42f7423081b455820daa2c02b358315dc0fa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -62982,10 +52149,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -62993,10 +52157,7 @@
       "test/core/nanopb/corpus_response/23121c5f633db5d7c1a9f2225240754246fee513"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63004,10 +52165,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63015,10 +52173,7 @@
       "test/core/nanopb/corpus_response/235548307ee9f2b0855fded42a871990d9ade956"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63026,10 +52181,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63037,10 +52189,7 @@
       "test/core/nanopb/corpus_response/28ed3a797da3c48c309a4ef792147f3c56cfec40"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63048,10 +52197,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63059,10 +52205,7 @@
       "test/core/nanopb/corpus_response/2bf123dbfa1d37a04493b5662a4b3b9c147485fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63070,10 +52213,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63081,10 +52221,7 @@
       "test/core/nanopb/corpus_response/2d4c0908ecc0310ea234d10b6bdb4f4ca3c41dd1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63092,10 +52229,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63103,10 +52237,7 @@
       "test/core/nanopb/corpus_response/304e8cdc9122b709ec2c063a5c8c38489a788033"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63114,10 +52245,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63125,10 +52253,7 @@
       "test/core/nanopb/corpus_response/324d4a2aed8bc1840fee212fd38dadec80a72ea2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63136,10 +52261,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63147,10 +52269,7 @@
       "test/core/nanopb/corpus_response/33353a0b011901a13d010c6b165074ccdaa717ac"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63158,10 +52277,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63169,10 +52285,7 @@
       "test/core/nanopb/corpus_response/37dfead09389fcd9b9d24ef817a0fed13d8ff2b0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63180,10 +52293,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63191,10 +52301,7 @@
       "test/core/nanopb/corpus_response/47879cc364be304754f6af15563ad6f9a538da41"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63202,10 +52309,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63213,10 +52317,7 @@
       "test/core/nanopb/corpus_response/49a5cef4c730ecab22712b156ddba5106f165afd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63224,10 +52325,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63235,10 +52333,7 @@
       "test/core/nanopb/corpus_response/4bbbbb794a098deeacff73b774c30f12c54ceacb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63246,10 +52341,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63257,10 +52349,7 @@
       "test/core/nanopb/corpus_response/4c498ce69c8476f745693deb23272930e05cad60"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63268,10 +52357,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63279,10 +52365,7 @@
       "test/core/nanopb/corpus_response/4fb5e3085c32e9bccac9e18343cca07017d037de"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63290,10 +52373,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63301,10 +52381,7 @@
       "test/core/nanopb/corpus_response/4fe5e46c1299e7f3e8a41dde3ae1bf1b60b4a43c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63312,10 +52389,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63323,10 +52397,7 @@
       "test/core/nanopb/corpus_response/670cc6bae958cb4f15e7297fe63959ac5799aa42"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63334,10 +52405,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63345,10 +52413,7 @@
       "test/core/nanopb/corpus_response/675f3263af7d1bbb084872f2b23f6d363227e85d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63356,10 +52421,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63367,10 +52429,7 @@
       "test/core/nanopb/corpus_response/67fe0d2acc727c8a39a707b92c6cebda9bd20986"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63378,10 +52437,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63389,10 +52445,7 @@
       "test/core/nanopb/corpus_response/6995dd153f712ad257ab5a365e5a4b84dc676ed3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63400,10 +52453,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63411,10 +52461,7 @@
       "test/core/nanopb/corpus_response/6d15065785eb8f4b5f17357a520cb4815a2cb355"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63422,10 +52469,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63433,10 +52477,7 @@
       "test/core/nanopb/corpus_response/73285d7a70d73b517648067520d921e4477dbbfa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63444,10 +52485,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63455,10 +52493,7 @@
       "test/core/nanopb/corpus_response/747d1ed8bee4c6f0438beaf88ae76d8ef9f63da2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63466,10 +52501,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63477,10 +52509,7 @@
       "test/core/nanopb/corpus_response/763878a34b3adeb99a03b54d09768a4451617016"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63488,10 +52517,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63499,10 +52525,7 @@
       "test/core/nanopb/corpus_response/7b4b0c2555178333ba15203a930c88ef7e7500e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63510,10 +52533,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63521,10 +52541,7 @@
       "test/core/nanopb/corpus_response/7b8a91aa46e370eb61307b4998889dc89775462f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63532,10 +52549,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63543,10 +52557,7 @@
       "test/core/nanopb/corpus_response/7cd11836c64f98742fa7beccec5c981ef4dd62ae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63554,10 +52565,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63565,10 +52573,7 @@
       "test/core/nanopb/corpus_response/7d8f4f045e70e8a2cb45dc3c001504f5c2614b16"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63576,10 +52581,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63587,10 +52589,7 @@
       "test/core/nanopb/corpus_response/7e9848558fb004e14795b3ebd3e1488dcde1db8c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63598,10 +52597,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63609,10 +52605,7 @@
       "test/core/nanopb/corpus_response/89734c37ee267e69a6950c6d60ee541c1be5ccff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63620,10 +52613,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63631,10 +52621,7 @@
       "test/core/nanopb/corpus_response/9034aaf45143996a2b14465c352ab0c6fa26b221"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63642,10 +52629,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63653,10 +52637,7 @@
       "test/core/nanopb/corpus_response/91e3b6a3484ab4b95cdeecc5aefe1291824060e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63664,10 +52645,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63675,10 +52653,7 @@
       "test/core/nanopb/corpus_response/95cd94c858e5e97f7df4a5eb7552e5e0d5ce1ec4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63686,10 +52661,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63697,10 +52669,7 @@
       "test/core/nanopb/corpus_response/971f42d5a4d9816145ebc9dd28ba33ed3f5860b0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63708,10 +52677,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63719,10 +52685,7 @@
       "test/core/nanopb/corpus_response/9db3a1854de87fd643b910aeab50553afc73e667"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63730,10 +52693,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63741,10 +52701,7 @@
       "test/core/nanopb/corpus_response/a147873135c6c52d4da03c260a0165bc0ab1b979"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63752,10 +52709,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63763,10 +52717,7 @@
       "test/core/nanopb/corpus_response/a710eead945dabbbffa213a980c75f9463a27398"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63774,10 +52725,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63785,10 +52733,7 @@
       "test/core/nanopb/corpus_response/a72406e3ca06d941fe8e168bbf67da88a81c947b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63796,10 +52741,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63807,10 +52749,7 @@
       "test/core/nanopb/corpus_response/a8a62a7ebb7d68b211ae319e082575935c07d188"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63818,10 +52757,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63829,10 +52765,7 @@
       "test/core/nanopb/corpus_response/a8abd012eb59b862bf9bc1ea443d2f35a1a2e222"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63840,10 +52773,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63851,10 +52781,7 @@
       "test/core/nanopb/corpus_response/aab56035a3533b5d83a32a439f179eb678250113"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63862,10 +52789,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63873,10 +52797,7 @@
       "test/core/nanopb/corpus_response/ac174acef2c5da26fadc7270bab9c8c4e938c463"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63884,10 +52805,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63895,10 +52813,7 @@
       "test/core/nanopb/corpus_response/acbbd60eeb76e41ce254d0fef353b92abe69c831"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63906,10 +52821,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63917,10 +52829,7 @@
       "test/core/nanopb/corpus_response/c1eed32e1e353737987da851ad760312ea8e557c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63928,10 +52837,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63939,10 +52845,7 @@
       "test/core/nanopb/corpus_response/c4214ace2c4bab24bb356f71aedca08544baad70"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63950,10 +52853,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63961,10 +52861,7 @@
       "test/core/nanopb/corpus_response/c4f87a6290aee1acfc1f26083974ce94621fca64"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63972,10 +52869,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -63983,10 +52877,7 @@
       "test/core/nanopb/corpus_response/d285d78d3ba966b4b199453d38ead1aa36a7484f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -63994,10 +52885,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64005,10 +52893,7 @@
       "test/core/nanopb/corpus_response/df5200f371cff3cae0e1595cd86d641725f5d1ba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64016,10 +52901,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64027,10 +52909,7 @@
       "test/core/nanopb/corpus_response/dfc66cb172919102f3ba14f6816228aa46f78154"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64038,10 +52917,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64049,10 +52925,7 @@
       "test/core/nanopb/corpus_response/e53e789a4c175c6a2c468472f1047d0fe8db1177"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64060,10 +52933,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64071,10 +52941,7 @@
       "test/core/nanopb/corpus_response/e67fe6794e755ea801272980f2c272edb027f6dc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64082,10 +52949,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64093,10 +52957,7 @@
       "test/core/nanopb/corpus_response/ead61e86fedf118df8e44ed70ce002be651cf291"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64104,10 +52965,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64115,10 +52973,7 @@
       "test/core/nanopb/corpus_response/eced8b29efbdc82eb8a1d0865c5f382f0ff78446"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64126,10 +52981,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64137,10 +52989,7 @@
       "test/core/nanopb/corpus_response/f107c60f00da44a2c412c5b89c733efe5f9be4aa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64148,10 +52997,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64159,10 +53005,7 @@
       "test/core/nanopb/corpus_response/f58a9135d07ea9a5e3e710f6b3bf6d48d5942dfd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64170,10 +53013,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64181,10 +53021,7 @@
       "test/core/nanopb/corpus_response/f8c2c4ddd2f474b4839f13a9be862c00ab0ece77"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64192,10 +53029,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64203,10 +53037,7 @@
       "test/core/nanopb/corpus_response/faa1781e1444bba5b8c677bc5e2a38d023a1ec65"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64214,10 +53045,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64225,10 +53053,7 @@
       "test/core/nanopb/corpus_response/fccda587af845f0685275960649d8f4a45272a95"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64236,10 +53061,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64247,10 +53069,7 @@
       "test/core/nanopb/corpus_serverlist/000def12957806bb0d40005cb651d35b4cde7b4e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64258,10 +53077,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64269,10 +53085,7 @@
       "test/core/nanopb/corpus_serverlist/0068af2acc3020f344ee84b2c8adfb90492354c3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64280,10 +53093,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64291,10 +53101,7 @@
       "test/core/nanopb/corpus_serverlist/009132022c3a1660b701728ac92e26baf82e8eac"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64302,10 +53109,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64313,10 +53117,7 @@
       "test/core/nanopb/corpus_serverlist/00bf0233aa1155b34a3081e4a2b7a1c9cdf8ea1e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64324,10 +53125,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64335,10 +53133,7 @@
       "test/core/nanopb/corpus_serverlist/013197cfb12b59755b807501c6d6615859f9cd3f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64346,10 +53141,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64357,10 +53149,7 @@
       "test/core/nanopb/corpus_serverlist/018a4332eb19f2398162317cb6ad2e8cf700dfd6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64368,10 +53157,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64379,10 +53165,7 @@
       "test/core/nanopb/corpus_serverlist/0273d3496bf5f4594e59083ac319f8f863a15be0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64390,10 +53173,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64401,10 +53181,7 @@
       "test/core/nanopb/corpus_serverlist/0355002521e74dcdb3a0c633338bd02ab1d85312"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64412,10 +53189,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64423,10 +53197,7 @@
       "test/core/nanopb/corpus_serverlist/053d8d6ceeba9453c97d0ee5374db863e6f77ad4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64434,10 +53205,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64445,10 +53213,7 @@
       "test/core/nanopb/corpus_serverlist/0628c29e3ae264f8fa08652435bb3e61afe60883"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64456,10 +53221,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64467,10 +53229,7 @@
       "test/core/nanopb/corpus_serverlist/065e91578e5359b70a668164310af6f0dd40e922"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64478,10 +53237,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64489,10 +53245,7 @@
       "test/core/nanopb/corpus_serverlist/06b4b617d5937da8a7b58aed5341dc5ef6d1bcd7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64500,10 +53253,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64511,10 +53261,7 @@
       "test/core/nanopb/corpus_serverlist/07216a4f5934890b89d845f6256546c2681350ce"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64522,10 +53269,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64533,10 +53277,7 @@
       "test/core/nanopb/corpus_serverlist/08584e8308b7f52f0fe380358800d7f585cba89c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64544,10 +53285,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64555,10 +53293,7 @@
       "test/core/nanopb/corpus_serverlist/085a37568e99ec5855bd96affd259921515479e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64566,10 +53301,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64577,10 +53309,7 @@
       "test/core/nanopb/corpus_serverlist/0903d1e9297179c18de6a3707b16f27d0d54ed67"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64588,10 +53317,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64599,10 +53325,7 @@
       "test/core/nanopb/corpus_serverlist/0aa20a75bff4e8af10330c66d288e900146f1a39"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64610,10 +53333,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64621,10 +53341,7 @@
       "test/core/nanopb/corpus_serverlist/0ae76e2b24ca999bd5e09e517aa4d88f5b5f58a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64632,10 +53349,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64643,10 +53357,7 @@
       "test/core/nanopb/corpus_serverlist/0c3025fdfb008a6563ea2a2bb6cbc79b8ccbf8f3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64654,10 +53365,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64665,10 +53373,7 @@
       "test/core/nanopb/corpus_serverlist/0d219165cd317142afa36b8b5476cc022c95c4e6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64676,10 +53381,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64687,10 +53389,7 @@
       "test/core/nanopb/corpus_serverlist/0e053123dd6256de5aff55b0731f913de250c18e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64698,10 +53397,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64709,10 +53405,7 @@
       "test/core/nanopb/corpus_serverlist/0e065f98325849ac05eed515865b33dba0264cd4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64720,10 +53413,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64731,10 +53421,7 @@
       "test/core/nanopb/corpus_serverlist/0e4ff715d491c9f0b471c400b71804739b6d400a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64742,10 +53429,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64753,10 +53437,7 @@
       "test/core/nanopb/corpus_serverlist/0ec94942046cd7e00bc058204c1d046075ca9531"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64764,10 +53445,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64775,10 +53453,7 @@
       "test/core/nanopb/corpus_serverlist/0f0e8da530eb8c924cee6985d9c3dfd93274ef8c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64786,10 +53461,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64797,10 +53469,7 @@
       "test/core/nanopb/corpus_serverlist/0ff365225c981d74b89499d1e708684ed4d0b570"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64808,10 +53477,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64819,10 +53485,7 @@
       "test/core/nanopb/corpus_serverlist/113b1efff1677c1b9a24f89aec0c3ecc228ddf62"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64830,10 +53493,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64841,10 +53501,7 @@
       "test/core/nanopb/corpus_serverlist/11697d621eab6743ba22715722d5b23830b79075"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64852,10 +53509,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64863,10 +53517,7 @@
       "test/core/nanopb/corpus_serverlist/12463318b795c756f389bc0fb1cca9645eafef28"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64874,10 +53525,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64885,10 +53533,7 @@
       "test/core/nanopb/corpus_serverlist/12784250cf16ec999529f601ae5c5798e853d34a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64896,10 +53541,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64907,10 +53549,7 @@
       "test/core/nanopb/corpus_serverlist/13122d08c1cee0dae6434605917d4cc6d8ea8cc5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64918,10 +53557,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64929,10 +53565,7 @@
       "test/core/nanopb/corpus_serverlist/148a1118649dd8aa9b4ed778efdf7c1611aa5d27"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64940,10 +53573,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64951,10 +53581,7 @@
       "test/core/nanopb/corpus_serverlist/15dea2bb5fb36a3dd5172796da66a821a32918e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64962,10 +53589,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64973,10 +53597,7 @@
       "test/core/nanopb/corpus_serverlist/16488fe15a7e33cb41f2b7c159c99154464b3fd3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -64984,10 +53605,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -64995,10 +53613,7 @@
       "test/core/nanopb/corpus_serverlist/1870a48a3c9c1dd9027cbd85beb503b43cff6e89"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65006,10 +53621,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65017,10 +53629,7 @@
       "test/core/nanopb/corpus_serverlist/1900b6a9123667a79020319aa7fd54d230bc7073"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65028,10 +53637,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65039,10 +53645,7 @@
       "test/core/nanopb/corpus_serverlist/1a000f1cbccd2ab6f7e623e015ed2e84284c9dbf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65050,10 +53653,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65061,10 +53661,7 @@
       "test/core/nanopb/corpus_serverlist/1c1d403f6175d52ac4430d1ef2401b549761707e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65072,10 +53669,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65083,10 +53677,7 @@
       "test/core/nanopb/corpus_serverlist/1c2ae0e1915e18dffc2215e9121f1afe0e4335c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65094,10 +53685,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65105,10 +53693,7 @@
       "test/core/nanopb/corpus_serverlist/1c5d2eef52426db9d0842f3d57b27a219434c512"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65116,10 +53701,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65127,10 +53709,7 @@
       "test/core/nanopb/corpus_serverlist/1d0676867c1ebce84531035fa7eb86ed00762df5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65138,10 +53717,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65149,10 +53725,7 @@
       "test/core/nanopb/corpus_serverlist/1d92b263fa70450b0d0aeb81bf5d2f69eefbbd99"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65160,10 +53733,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65171,10 +53741,7 @@
       "test/core/nanopb/corpus_serverlist/1e843ed4864d6a808b671dd6769ae191ac8a13ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65182,10 +53749,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65193,10 +53757,7 @@
       "test/core/nanopb/corpus_serverlist/1eb06a34ee568d584c4b33472788889bc68af3f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65204,10 +53765,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65215,10 +53773,7 @@
       "test/core/nanopb/corpus_serverlist/2169c2b4d560d74a5487df68b56f3af1d648f544"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65226,10 +53781,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65237,10 +53789,7 @@
       "test/core/nanopb/corpus_serverlist/21f8f7583e58c1c81a3ac8237b5fa58071edf8a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65248,10 +53797,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65259,10 +53805,7 @@
       "test/core/nanopb/corpus_serverlist/231e348407fdcb14412c691b0b20982940160ccd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65270,10 +53813,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65281,10 +53821,7 @@
       "test/core/nanopb/corpus_serverlist/27b8f060e3296eaef77dcdd4c2cd11d5650604ac"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65292,10 +53829,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65303,10 +53837,7 @@
       "test/core/nanopb/corpus_serverlist/28ed3a797da3c48c309a4ef792147f3c56cfec40"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65314,10 +53845,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65325,10 +53853,7 @@
       "test/core/nanopb/corpus_serverlist/291fcc6e043942638fa3c865c0a1be5e4dcc0e70"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65336,10 +53861,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65347,10 +53869,7 @@
       "test/core/nanopb/corpus_serverlist/2a7f6c1f8fdc090b24ceb90ab4f3a7b331c06c86"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65358,10 +53877,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65369,10 +53885,7 @@
       "test/core/nanopb/corpus_serverlist/2b85f180fe56f84925b274819ce10a8972a594e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65380,10 +53893,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65391,10 +53901,7 @@
       "test/core/nanopb/corpus_serverlist/2dea73d7d10ba0dcfd103f7542bdf7458e772b2b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65402,10 +53909,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65413,10 +53917,7 @@
       "test/core/nanopb/corpus_serverlist/2e9c19f98ef88b83ec2dea8b1b7f92b8337f757b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65424,10 +53925,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65435,10 +53933,7 @@
       "test/core/nanopb/corpus_serverlist/2fbd59ffb74aba392b86f4fe2ff8067b6d45cce8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65446,10 +53941,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65457,10 +53949,7 @@
       "test/core/nanopb/corpus_serverlist/31059c32ea28d37b7442f51b20e966665662783c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65468,10 +53957,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65479,10 +53965,7 @@
       "test/core/nanopb/corpus_serverlist/31f78e35feb36037864df5f8f47136f8e6e4768a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65490,10 +53973,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65501,10 +53981,7 @@
       "test/core/nanopb/corpus_serverlist/326d322d1aa31696a14518830e544770f12146ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65512,10 +53989,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65523,10 +53997,7 @@
       "test/core/nanopb/corpus_serverlist/337df26552e0884ff133cc1be8e72020be38f457"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65534,10 +54005,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65545,10 +54013,7 @@
       "test/core/nanopb/corpus_serverlist/33a2a0aa86956097e034b5ee16aeceacee7efc34"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65556,10 +54021,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65567,10 +54029,7 @@
       "test/core/nanopb/corpus_serverlist/33d175d1ecb3a85be7dd93d24efc3ddda0a85ad6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65578,10 +54037,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65589,10 +54045,7 @@
       "test/core/nanopb/corpus_serverlist/3718a1b790db16bcfc4ec30691fab24ea7bb0b74"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65600,10 +54053,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65611,10 +54061,7 @@
       "test/core/nanopb/corpus_serverlist/37aa3946054035b712102a62b71c94747dfd1491"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65622,10 +54069,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65633,10 +54077,7 @@
       "test/core/nanopb/corpus_serverlist/37b697adc0708ad12e4ed7355f3f8fdf1b7919ca"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65644,10 +54085,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65655,10 +54093,7 @@
       "test/core/nanopb/corpus_serverlist/37bf4642c5e5a806e2042cdf5ead9bf3c97b9ac1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65666,10 +54101,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65677,10 +54109,7 @@
       "test/core/nanopb/corpus_serverlist/37d94ca6a20303389b35404f3dfd20aaa9ff0851"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65688,10 +54117,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65699,10 +54125,7 @@
       "test/core/nanopb/corpus_serverlist/39278604f6a1102366464bbe769ae846e542bc56"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65710,10 +54133,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65721,10 +54141,7 @@
       "test/core/nanopb/corpus_serverlist/396b57d9a11a1b135e36ad266e155cc0c3b77d21"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65732,10 +54149,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65743,10 +54157,7 @@
       "test/core/nanopb/corpus_serverlist/39a49db120a807fe4e80c502254a5009625c7599"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65754,10 +54165,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65765,10 +54173,7 @@
       "test/core/nanopb/corpus_serverlist/39f04d1c6d4beefa3e3d6eae3a5317d969787055"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65776,10 +54181,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65787,10 +54189,7 @@
       "test/core/nanopb/corpus_serverlist/3b199b80209fa0b8ffedba4381019f8729cc09d6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65798,10 +54197,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65809,10 +54205,7 @@
       "test/core/nanopb/corpus_serverlist/3ccf7ffb96c3e4789409db33cc12bfd8ddc24c1a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65820,10 +54213,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65831,10 +54221,7 @@
       "test/core/nanopb/corpus_serverlist/3d04382d1fe11ff3b717100aece7f9eff2d04b9b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65842,10 +54229,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65853,10 +54237,7 @@
       "test/core/nanopb/corpus_serverlist/3d4eb9f836bb40cf4c734073bcba8b73e4cc93ae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65864,10 +54245,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65875,10 +54253,7 @@
       "test/core/nanopb/corpus_serverlist/41dc8c55e41d32c30865f9761931ddd4c5b740f8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65886,10 +54261,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65897,10 +54269,7 @@
       "test/core/nanopb/corpus_serverlist/41ef7b74d212f8f7f6681edcffd0db719030d31d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65908,10 +54277,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65919,10 +54285,7 @@
       "test/core/nanopb/corpus_serverlist/431187b5926fa7d0823305a9f87635616ea3ef27"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65930,10 +54293,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65941,10 +54301,7 @@
       "test/core/nanopb/corpus_serverlist/44c6da04b8378986721f7225e70a1514695c176c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65952,10 +54309,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65963,10 +54317,7 @@
       "test/core/nanopb/corpus_serverlist/450161236e37a1dfc0da6398c4876df82ff640ac"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65974,10 +54325,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -65985,10 +54333,7 @@
       "test/core/nanopb/corpus_serverlist/45257a176ca6a05ec65a6df430bbb6b85d0a676f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -65996,10 +54341,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66007,10 +54349,7 @@
       "test/core/nanopb/corpus_serverlist/46d1c2f2edcc9cdc0d1698fa0c8853cb19a6e7d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66018,10 +54357,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66029,10 +54365,7 @@
       "test/core/nanopb/corpus_serverlist/4764bd4297bf0c405348d2bb87b8fbc02beadcb8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66040,10 +54373,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66051,10 +54381,7 @@
       "test/core/nanopb/corpus_serverlist/48199bfd0e2c160f56d03e881bb5dfe276eec462"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66062,10 +54389,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66073,10 +54397,7 @@
       "test/core/nanopb/corpus_serverlist/48e865c56e8db13640d6ecbfc0f2486eb77e07d1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66084,10 +54405,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66095,10 +54413,7 @@
       "test/core/nanopb/corpus_serverlist/499b003b8b98edd9dbe2668c8c6af948769d7e87"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66106,10 +54421,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66117,10 +54429,7 @@
       "test/core/nanopb/corpus_serverlist/4a55591c4b390c5a36cecc6f1b6f5105300b546b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66128,10 +54437,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66139,10 +54445,7 @@
       "test/core/nanopb/corpus_serverlist/4d33f97ec69c64e14dcf205be36a6319ddb8a20d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66150,10 +54453,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66161,10 +54461,7 @@
       "test/core/nanopb/corpus_serverlist/4dbfb08904739928e19c2f459040b35ac410f699"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66172,10 +54469,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66183,10 +54477,7 @@
       "test/core/nanopb/corpus_serverlist/501bd6fe1de2719cf8d2c517a071e5d883fbe766"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66194,10 +54485,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66205,10 +54493,7 @@
       "test/core/nanopb/corpus_serverlist/5208871ea8948223b64b304336cea41ac3240244"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66216,10 +54501,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66227,10 +54509,7 @@
       "test/core/nanopb/corpus_serverlist/5348c71be34967458403bd4b58bb2a8a744d35ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66238,10 +54517,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66249,10 +54525,7 @@
       "test/core/nanopb/corpus_serverlist/54362c2f6965268d0835a992c3ba656171b8f044"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66260,10 +54533,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66271,10 +54541,7 @@
       "test/core/nanopb/corpus_serverlist/54411aa13f6d9118028171935322bbbc74c15329"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66282,10 +54549,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66293,10 +54557,7 @@
       "test/core/nanopb/corpus_serverlist/54c50af22d147f192918499b4b3819eb389468a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66304,10 +54565,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66315,10 +54573,7 @@
       "test/core/nanopb/corpus_serverlist/55441aac903d96b36bf8a11bc804234bcf0c04da"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66326,10 +54581,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66337,10 +54589,7 @@
       "test/core/nanopb/corpus_serverlist/56e1a7c279482a57fcbca43468df96a791ee22b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66348,10 +54597,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66359,10 +54605,7 @@
       "test/core/nanopb/corpus_serverlist/57cbea7c563d5c4b6b290271b0009c3f348d92da"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66370,10 +54613,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66381,10 +54621,7 @@
       "test/core/nanopb/corpus_serverlist/57e11c7a62f0fc807d7b51bb1ef0f0e22f43795b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66392,10 +54629,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66403,10 +54637,7 @@
       "test/core/nanopb/corpus_serverlist/585183c1a240df6926689fe1bd8cb434664db4d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66414,10 +54645,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66425,10 +54653,7 @@
       "test/core/nanopb/corpus_serverlist/5b2ee8ca40508bf108a729dcb228191670ec34d6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66436,10 +54661,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66447,10 +54669,7 @@
       "test/core/nanopb/corpus_serverlist/5b47eabaf74479348fd0318f174d649dbe96e7d2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66458,10 +54677,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66469,10 +54685,7 @@
       "test/core/nanopb/corpus_serverlist/5ba93c9db0cff93f52b521d7420e43f6eda2784f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66480,10 +54693,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66491,10 +54701,7 @@
       "test/core/nanopb/corpus_serverlist/5cc827e33932ccf8c72c6a839074e856d93463d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66502,10 +54709,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66513,10 +54717,7 @@
       "test/core/nanopb/corpus_serverlist/5cc89bbf687f94ff87241a8f935905e1c441de33"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66524,10 +54725,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66535,10 +54733,7 @@
       "test/core/nanopb/corpus_serverlist/5ec6596f12462fe9f36924c262f97408b54bbba8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66546,10 +54741,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66557,10 +54749,7 @@
       "test/core/nanopb/corpus_serverlist/5f8f3af69295223fb04c37d28035bb75b4cbd705"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66568,10 +54757,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66579,10 +54765,7 @@
       "test/core/nanopb/corpus_serverlist/5fd76d48b9fefecbdabd4511decc161b25db79dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66590,10 +54773,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66601,10 +54781,7 @@
       "test/core/nanopb/corpus_serverlist/614cf839ccac2d896d61a0ba0ab1f42b2fabafea"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66612,10 +54789,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66623,10 +54797,7 @@
       "test/core/nanopb/corpus_serverlist/618305cc2d3d3814d78b77ffbf421b769bd862cf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66634,10 +54805,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66645,10 +54813,7 @@
       "test/core/nanopb/corpus_serverlist/61dfcd913c4f0a8d005bd089c34e95d8dbbf1897"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66656,10 +54821,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66667,10 +54829,7 @@
       "test/core/nanopb/corpus_serverlist/65a89e10aab00039680e1f7d014737b634c74d8d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66678,10 +54837,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66689,10 +54845,7 @@
       "test/core/nanopb/corpus_serverlist/66a273dbf5e37410efd45518a42b06a65cffe1f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66700,10 +54853,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66711,10 +54861,7 @@
       "test/core/nanopb/corpus_serverlist/673ff0de0702e8098892060a5365c175d8ef18fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66722,10 +54869,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66733,10 +54877,7 @@
       "test/core/nanopb/corpus_serverlist/68465c782c37bfdd98ac493b0458444bb94336e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66744,10 +54885,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66755,10 +54893,7 @@
       "test/core/nanopb/corpus_serverlist/688451dee13d0be420598c6e205a3bc419173e18"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66766,10 +54901,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66777,10 +54909,7 @@
       "test/core/nanopb/corpus_serverlist/68a1d9150e1380c219e0a1deb3993f321e000ecd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66788,10 +54917,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66799,10 +54925,7 @@
       "test/core/nanopb/corpus_serverlist/69f49bf7ae8886f5b4c6296fdb1c570256919604"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66810,10 +54933,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66821,10 +54941,7 @@
       "test/core/nanopb/corpus_serverlist/6a425f414cd69ffffdbaa34d03eb43841b432e11"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66832,10 +54949,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66843,10 +54957,7 @@
       "test/core/nanopb/corpus_serverlist/6ca9e6e85f9b007a0920b0112decbd1403d506da"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66854,10 +54965,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66865,10 +54973,7 @@
       "test/core/nanopb/corpus_serverlist/6cd62e3d67b4154639adbe753115bfdd770edddb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66876,10 +54981,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66887,10 +54989,7 @@
       "test/core/nanopb/corpus_serverlist/6d4f2de4cc427417d6335ff5396ea2588509bb5b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66898,10 +54997,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66909,10 +55005,7 @@
       "test/core/nanopb/corpus_serverlist/6ea84030dd0b5b03e4720c244ea8b4ec65e1f236"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66920,10 +55013,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66931,10 +55021,7 @@
       "test/core/nanopb/corpus_serverlist/710c1fc8cf7dc1386312c34de5057933fcf868b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66942,10 +55029,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66953,10 +55037,7 @@
       "test/core/nanopb/corpus_serverlist/720e81dcaf83f867288a90293c5de3b088d5c556"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66964,10 +55045,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66975,10 +55053,7 @@
       "test/core/nanopb/corpus_serverlist/72cdc8f78ab5237f96ed354264c726ac79ec429c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -66986,10 +55061,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -66997,10 +55069,7 @@
       "test/core/nanopb/corpus_serverlist/73535a4f7af7e4c6aa23556cacd63f6929ac33fe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67008,10 +55077,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67019,10 +55085,7 @@
       "test/core/nanopb/corpus_serverlist/73d7b933a5673a4d6f5905006ef6266dda1e4fba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67030,10 +55093,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67041,10 +55101,7 @@
       "test/core/nanopb/corpus_serverlist/753aea13c82d1f8841c2bd4309b1b55d0ae2ba8d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67052,10 +55109,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67063,10 +55117,7 @@
       "test/core/nanopb/corpus_serverlist/754428e00e8a1d0471e00bd9e8f060ab88ab640e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67074,10 +55125,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67085,10 +55133,7 @@
       "test/core/nanopb/corpus_serverlist/761c29151b23b4d14ce6261626641df1182f7a96"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67096,10 +55141,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67107,10 +55149,7 @@
       "test/core/nanopb/corpus_serverlist/7658451dd805f277a5b1c3d4065d752d2d8de5f4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67118,10 +55157,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67129,10 +55165,7 @@
       "test/core/nanopb/corpus_serverlist/767e91cedcd9bc1bdac882acc34a53cc23cf4d02"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67140,10 +55173,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67151,10 +55181,7 @@
       "test/core/nanopb/corpus_serverlist/77d3754bdd4ea358369c936ed36b974b4181f6ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67162,10 +55189,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67173,10 +55197,7 @@
       "test/core/nanopb/corpus_serverlist/7a95295bebe6237f65deb15ffeccab22716d574d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67184,10 +55205,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67195,10 +55213,7 @@
       "test/core/nanopb/corpus_serverlist/7ad88b82e87fbfb3d4bddaa2f6e201a151e3a007"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67206,10 +55221,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67217,10 +55229,7 @@
       "test/core/nanopb/corpus_serverlist/7b1010cc012e34af1d03e8845868ff0e1db3a601"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67228,10 +55237,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67239,10 +55245,7 @@
       "test/core/nanopb/corpus_serverlist/7d3ddbd11e82807321c9a53835ea897cf43aa7f2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67250,10 +55253,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67261,10 +55261,7 @@
       "test/core/nanopb/corpus_serverlist/7da9c5ab5f049da297b0f4c1322edd696202d02a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67272,10 +55269,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67283,10 +55277,7 @@
       "test/core/nanopb/corpus_serverlist/7e265a019c02e5d089152849ac00bb005fa644f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67294,10 +55285,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67305,10 +55293,7 @@
       "test/core/nanopb/corpus_serverlist/7f33bff4f740eb898b908374b0c1badd47566947"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67316,10 +55301,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67327,10 +55309,7 @@
       "test/core/nanopb/corpus_serverlist/81f13b9b65891f2bfce77cb183a06045c461fee6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67338,10 +55317,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67349,10 +55325,7 @@
       "test/core/nanopb/corpus_serverlist/846a14a480ffa1ad0f6333f3ecf2be3057ce6aed"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67360,10 +55333,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67371,10 +55341,7 @@
       "test/core/nanopb/corpus_serverlist/87373a7f89feba2d50591b433f69877044155af2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67382,10 +55349,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67393,10 +55357,7 @@
       "test/core/nanopb/corpus_serverlist/8833ba4c780c94fc6c3c466f849c0387acefdb20"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67404,10 +55365,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67415,10 +55373,7 @@
       "test/core/nanopb/corpus_serverlist/8c23a5ecd20db4da2c061f3463254e9de104c8b9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67426,10 +55381,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67437,10 +55389,7 @@
       "test/core/nanopb/corpus_serverlist/8d883f1577ca8c334b7c6d75ccb71209d71ced13"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67448,10 +55397,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67459,10 +55405,7 @@
       "test/core/nanopb/corpus_serverlist/8dc80bd5f5d1fea64412203e304432edcf5f52c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67470,10 +55413,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67481,10 +55421,7 @@
       "test/core/nanopb/corpus_serverlist/8fc9a9ea6ad7d6d51e770076eaddacad9f970c6f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67492,10 +55429,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67503,10 +55437,7 @@
       "test/core/nanopb/corpus_serverlist/8fd167de17534776ef57aba2f27675789a11b8db"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67514,10 +55445,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67525,10 +55453,7 @@
       "test/core/nanopb/corpus_serverlist/9117d3e51560813b3ce4615dced18fa0e4d0a25a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67536,10 +55461,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67547,10 +55469,7 @@
       "test/core/nanopb/corpus_serverlist/921c68eaa8776f7544e195ae52224355d08a2d4d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67558,10 +55477,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67569,10 +55485,7 @@
       "test/core/nanopb/corpus_serverlist/9293945411fca2dc81fc34b36b575a384e6d489e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67580,10 +55493,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67591,10 +55501,7 @@
       "test/core/nanopb/corpus_serverlist/933287d66c3ff3f0a21f2c583c763f2f65872ef8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67602,10 +55509,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67613,10 +55517,7 @@
       "test/core/nanopb/corpus_serverlist/933d1d91283403f0a56571f533f482e9744eb735"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67624,10 +55525,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67635,10 +55533,7 @@
       "test/core/nanopb/corpus_serverlist/93855fc41b3e3004ca6ba85f34b985042d4c9869"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67646,10 +55541,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67657,10 +55549,7 @@
       "test/core/nanopb/corpus_serverlist/9544f445c39470f05785b52cfc31bb73bda22659"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67668,10 +55557,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67679,10 +55565,7 @@
       "test/core/nanopb/corpus_serverlist/97757217fde05ff4fc15c864bf29e9f560fd1c62"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67690,10 +55573,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67701,10 +55581,7 @@
       "test/core/nanopb/corpus_serverlist/9877c0f2d40dd43878bb0209bbc4b5fa93bec55a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67712,10 +55589,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67723,10 +55597,7 @@
       "test/core/nanopb/corpus_serverlist/98bc5065f79dd9d20cdac14ba28f0cf39908cb5f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67734,10 +55605,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67745,10 +55613,7 @@
       "test/core/nanopb/corpus_serverlist/992860817f7fb0e49423607355dab973aa7ab815"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67756,10 +55621,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67767,10 +55629,7 @@
       "test/core/nanopb/corpus_serverlist/995ee3d74bc6042fd6a8908c9df5a4cb530378d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67778,10 +55637,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67789,10 +55645,7 @@
       "test/core/nanopb/corpus_serverlist/9a38c24a6e87e99a72a3a4f007b117ec191a1705"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67800,10 +55653,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67811,10 +55661,7 @@
       "test/core/nanopb/corpus_serverlist/9aa97a0ffcdc37a8ef487355fb7271eb6891deaa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67822,10 +55669,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67833,10 +55677,7 @@
       "test/core/nanopb/corpus_serverlist/9b9fddc17ed7bc05a81c18f01e800a4e9efd0c8d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67844,10 +55685,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67855,10 +55693,7 @@
       "test/core/nanopb/corpus_serverlist/a0d4cb9a5a30bb01e8e4f68d636fb173632ed29d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67866,10 +55701,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67877,10 +55709,7 @@
       "test/core/nanopb/corpus_serverlist/a1e070288ec564d10a8c59779aa07fa771fa1d4f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67888,10 +55717,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67899,10 +55725,7 @@
       "test/core/nanopb/corpus_serverlist/a23d10723415d20f4ef1ed9b14d9dc24494856a0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67910,10 +55733,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67921,10 +55741,7 @@
       "test/core/nanopb/corpus_serverlist/a245750cfe4212dca7bfde918de85f64eb053232"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67932,10 +55749,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67943,10 +55757,7 @@
       "test/core/nanopb/corpus_serverlist/a24bbe3600f4dfd61bb8415c6a291e0521e4f267"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67954,10 +55765,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67965,10 +55773,7 @@
       "test/core/nanopb/corpus_serverlist/a25104d039a549c8d457ecea3b55369ed312f086"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67976,10 +55781,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -67987,10 +55789,7 @@
       "test/core/nanopb/corpus_serverlist/a33c4fcabe6aebe012cd01c8cb851a9ab0a12098"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -67998,10 +55797,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68009,10 +55805,7 @@
       "test/core/nanopb/corpus_serverlist/a393e1727b0decca9f193179765c3a83d7096437"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68020,10 +55813,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68031,10 +55821,7 @@
       "test/core/nanopb/corpus_serverlist/a5507f06be4735a3a9e416ea986d52c1a6a20909"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68042,10 +55829,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68053,10 +55837,7 @@
       "test/core/nanopb/corpus_serverlist/a5adf028c902d17dd6a7ddeadabbed2b36420313"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68064,10 +55845,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68075,10 +55853,7 @@
       "test/core/nanopb/corpus_serverlist/a6aa1237a282ee3a93f2544bb6bb7704e565209e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68086,10 +55861,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68097,10 +55869,7 @@
       "test/core/nanopb/corpus_serverlist/a871185cabce7b96c9e2f6ffb40d9901c774b335"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68108,10 +55877,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68119,10 +55885,7 @@
       "test/core/nanopb/corpus_serverlist/a89d0e67bf53e22533a635f103d1fd400969ad56"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68130,10 +55893,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68141,10 +55901,7 @@
       "test/core/nanopb/corpus_serverlist/a8d1b4e5672a501d7a6cd14b2929297f3a82e035"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68152,10 +55909,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68163,10 +55917,7 @@
       "test/core/nanopb/corpus_serverlist/aa614cc8d05a3a58c30a890c10b9a0c1d609b228"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68174,10 +55925,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68185,10 +55933,7 @@
       "test/core/nanopb/corpus_serverlist/aa65320376f63805cc82b247612b2e05b87bdbee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68196,10 +55941,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68207,10 +55949,7 @@
       "test/core/nanopb/corpus_serverlist/abd3f6e2cc8887942de20e1c257427b825aed0ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68218,10 +55957,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68229,10 +55965,7 @@
       "test/core/nanopb/corpus_serverlist/ad0653a3a63675a7ce797e69b4673866b88ace33"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68240,10 +55973,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68251,10 +55981,7 @@
       "test/core/nanopb/corpus_serverlist/ae2ce27806f67312e0d0e29a492db9ab9cb9bf4e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68262,10 +55989,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68273,10 +55997,7 @@
       "test/core/nanopb/corpus_serverlist/ae4c0e671bd004165a1e7877d9c67249a165d2df"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68284,10 +56005,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68295,10 +56013,7 @@
       "test/core/nanopb/corpus_serverlist/af75c24dff7e22948ed141c763a1309e6f540bcc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68306,10 +56021,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68317,10 +56029,7 @@
       "test/core/nanopb/corpus_serverlist/b0f228c6d0cbbc9f10117f344d5aae6f001d00fa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68328,10 +56037,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68339,10 +56045,7 @@
       "test/core/nanopb/corpus_serverlist/b2c6eab05580b85cda591093d3f05c44bf453fce"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68350,10 +56053,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68361,10 +56061,7 @@
       "test/core/nanopb/corpus_serverlist/b35281c0aae174d1ddc8999d97b9713f8004f285"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68372,10 +56069,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68383,10 +56077,7 @@
       "test/core/nanopb/corpus_serverlist/b484ae40795cf9730ba94d5a4ca40aa47b88eacb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68394,10 +56085,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68405,10 +56093,7 @@
       "test/core/nanopb/corpus_serverlist/b49c2fed1417a981ba29b32be73ee1700bea7ec9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68416,10 +56101,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68427,10 +56109,7 @@
       "test/core/nanopb/corpus_serverlist/b68542373c05c0ed25231d09955b2c699d37c45b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68438,10 +56117,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68449,10 +56125,7 @@
       "test/core/nanopb/corpus_serverlist/b6d42cbe913f7275b574a71f0768781bdb6f45b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68460,10 +56133,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68471,10 +56141,7 @@
       "test/core/nanopb/corpus_serverlist/b80b6c2cae83c2097c7e4c1fb181d47cb8fd0519"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68482,10 +56149,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68493,10 +56157,7 @@
       "test/core/nanopb/corpus_serverlist/b90ab62d8591182fd90cd21cdb893178d97f7e0e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68504,10 +56165,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68515,10 +56173,7 @@
       "test/core/nanopb/corpus_serverlist/ba45c93ee6b8b286798d8791ec049207c448f7cd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68526,10 +56181,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68537,10 +56189,7 @@
       "test/core/nanopb/corpus_serverlist/ba67e81ef0f9a14bf5a1ca228bff87c681e83a44"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68548,10 +56197,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68559,10 +56205,7 @@
       "test/core/nanopb/corpus_serverlist/bbd1f06ddee4fbbd0e5c9c915889862e5df34f9c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68570,10 +56213,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68581,10 +56221,7 @@
       "test/core/nanopb/corpus_serverlist/bd982feb5dd4362e6bd9746ed216c25ce2749df4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68592,10 +56229,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68603,10 +56237,7 @@
       "test/core/nanopb/corpus_serverlist/be77053335e6496288fcf8b6c4d0b4abf86493ff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68614,10 +56245,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68625,10 +56253,7 @@
       "test/core/nanopb/corpus_serverlist/bfb53203499969fac4f4be48e1bcd9235c2fa101"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68636,10 +56261,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68647,10 +56269,7 @@
       "test/core/nanopb/corpus_serverlist/c143576bdb5b34ad89fa3319507ae382a721f587"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68658,10 +56277,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68669,10 +56285,7 @@
       "test/core/nanopb/corpus_serverlist/c1ac502a15c53a90a1934f4a31d30f93db36dc8a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68680,10 +56293,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68691,10 +56301,7 @@
       "test/core/nanopb/corpus_serverlist/c1b29883768551fa5aadc38ba6eaad8007b9b85b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68702,10 +56309,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68713,10 +56317,7 @@
       "test/core/nanopb/corpus_serverlist/c2331fe0660ab5e411f6d38968c706aed390d8f6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68724,10 +56325,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68735,10 +56333,7 @@
       "test/core/nanopb/corpus_serverlist/c32647119c244cc018bb1863853d5c7bd37090df"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68746,10 +56341,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68757,10 +56349,7 @@
       "test/core/nanopb/corpus_serverlist/c4098733900c27861bbf74a71afcbbd93d62f8ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68768,10 +56357,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68779,10 +56365,7 @@
       "test/core/nanopb/corpus_serverlist/c4f5769bf3b4f2a55c006b4cf5a3bba44b347241"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68790,10 +56373,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68801,10 +56381,7 @@
       "test/core/nanopb/corpus_serverlist/c6ea7b2d47402a458d5d03235bb042b61e05b2e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68812,10 +56389,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68823,10 +56397,7 @@
       "test/core/nanopb/corpus_serverlist/c7255dc48b42d44f6c0676d6009051b7e1aa885b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68834,10 +56405,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68845,10 +56413,7 @@
       "test/core/nanopb/corpus_serverlist/c7d77af55176ae0ae5e59f46e48e1e6ea108d799"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68856,10 +56421,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68867,10 +56429,7 @@
       "test/core/nanopb/corpus_serverlist/c80827341dcdf1c21b303b82ec7e6df7eaf63f3d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68878,10 +56437,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68889,10 +56445,7 @@
       "test/core/nanopb/corpus_serverlist/c9501031a75c067b6602e2831f03421b87be4496"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68900,10 +56453,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68911,10 +56461,7 @@
       "test/core/nanopb/corpus_serverlist/c98f88d962dfbc2a83e08bfbd8a87b0cc5a8b330"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68922,10 +56469,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68933,10 +56477,7 @@
       "test/core/nanopb/corpus_serverlist/ccd33fa22b2983978f9617b3cde76ea05b683c2c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68944,10 +56485,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68955,10 +56493,7 @@
       "test/core/nanopb/corpus_serverlist/cd0e7701fd79879c56f680817a0d2705751b1f44"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68966,10 +56501,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68977,10 +56509,7 @@
       "test/core/nanopb/corpus_serverlist/cd1c2b5c2684d831aab5265e9cd6f1ee045dab9b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -68988,10 +56517,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -68999,10 +56525,7 @@
       "test/core/nanopb/corpus_serverlist/cf98e8b01e7a759f28a9c5f59c896317d74ac47c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69010,10 +56533,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69021,10 +56541,7 @@
       "test/core/nanopb/corpus_serverlist/d1d171589e035be85dc347278f0735151a342d68"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69032,10 +56549,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69043,10 +56557,7 @@
       "test/core/nanopb/corpus_serverlist/d243143bf9b8adf6be92a157428ec6cbfd785423"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69054,10 +56565,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69065,10 +56573,7 @@
       "test/core/nanopb/corpus_serverlist/d2cd278979f2842ebd890f1d84712750273ad0fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69076,10 +56581,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69087,10 +56589,7 @@
       "test/core/nanopb/corpus_serverlist/d2e96eb2699c7dd4a183f13d3a063a1aa9c192fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69098,10 +56597,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69109,10 +56605,7 @@
       "test/core/nanopb/corpus_serverlist/d3178f8b0d26275667c27bb8533a61643213e4d8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69120,10 +56613,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69131,10 +56621,7 @@
       "test/core/nanopb/corpus_serverlist/d46f536ea4b601c0ff313a5eb5b47e2b55aa9eb0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69142,10 +56629,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69153,10 +56637,7 @@
       "test/core/nanopb/corpus_serverlist/d4be3038631eac422022ee23f43b47905a15b2b5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69164,10 +56645,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69175,10 +56653,7 @@
       "test/core/nanopb/corpus_serverlist/d56b30a2d1b5a2a13ae00392bcb4ca72085310d9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69186,10 +56661,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69197,10 +56669,7 @@
       "test/core/nanopb/corpus_serverlist/d67f85948143218d11e2fb7936a119741036045d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69208,10 +56677,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69219,10 +56685,7 @@
       "test/core/nanopb/corpus_serverlist/d6930ea81dfd91856a06a0c16483e47616642b4b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69230,10 +56693,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69241,10 +56701,7 @@
       "test/core/nanopb/corpus_serverlist/d737c10038a92add90e2ebea5c174ed249de8018"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69252,10 +56709,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69263,10 +56717,7 @@
       "test/core/nanopb/corpus_serverlist/d758a67f018b176dfc7d29630cf8cb587f5b2a6b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69274,10 +56725,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69285,10 +56733,7 @@
       "test/core/nanopb/corpus_serverlist/dc7139105787f3ba67d7971d80796e9cf5786a91"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69296,10 +56741,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69307,10 +56749,7 @@
       "test/core/nanopb/corpus_serverlist/dc8ec35f43e994b9c4ac61275d6b934990d42181"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69318,10 +56757,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69329,10 +56765,7 @@
       "test/core/nanopb/corpus_serverlist/dd2694fe12a018bc6af6f288b5c22a030eec8049"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69340,10 +56773,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69351,10 +56781,7 @@
       "test/core/nanopb/corpus_serverlist/de7424f44508582a953f137195533b7a0191eda7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69362,10 +56789,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69373,10 +56797,7 @@
       "test/core/nanopb/corpus_serverlist/de91a02040d792dfcb71a4cb5aa4c1c006201273"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69384,10 +56805,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69395,10 +56813,7 @@
       "test/core/nanopb/corpus_serverlist/deb576067b11f6e2a3a39b0f2ef38ddae5c67b18"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69406,10 +56821,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69417,10 +56829,7 @@
       "test/core/nanopb/corpus_serverlist/df58248c414f342c81e056b40bee12d17a08bf61"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69428,10 +56837,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69439,10 +56845,7 @@
       "test/core/nanopb/corpus_serverlist/e076020b2826abd3a4b960fb33a35fd7d0606dd8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69450,10 +56853,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69461,10 +56861,7 @@
       "test/core/nanopb/corpus_serverlist/e0bcf682342967c002621acd2563a2157826d156"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69472,10 +56869,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69483,10 +56877,7 @@
       "test/core/nanopb/corpus_serverlist/e1edca08a7654b42a64647abb0e773eddddb580b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69494,10 +56885,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69505,10 +56893,7 @@
       "test/core/nanopb/corpus_serverlist/e2fa528289b5971f5b40b3687a2a6f0d17348de6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69516,10 +56901,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69527,10 +56909,7 @@
       "test/core/nanopb/corpus_serverlist/e52af0ba8750572b98f3a8968de77811ddff0893"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69538,10 +56917,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69549,10 +56925,7 @@
       "test/core/nanopb/corpus_serverlist/e5a0f40647f805b5001645ce2d94505e72fa64f3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69560,10 +56933,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69571,10 +56941,7 @@
       "test/core/nanopb/corpus_serverlist/e69762f0c6a2750c0b03503a6aec90ffc94bcb72"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69582,10 +56949,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69593,10 +56957,7 @@
       "test/core/nanopb/corpus_serverlist/e7064f0b80f61dbc65915311032d27baa569ae2a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69604,10 +56965,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69615,10 +56973,7 @@
       "test/core/nanopb/corpus_serverlist/e863a4420854c36168d2b8dd39ce474ebe11cd26"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69626,10 +56981,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69637,10 +56989,7 @@
       "test/core/nanopb/corpus_serverlist/e8993f97bb9c83f87c64cfc429095eeaccf32953"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69648,10 +56997,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69659,10 +57005,7 @@
       "test/core/nanopb/corpus_serverlist/e9875d9a54b3ebc57df4da886cd30a39252ac666"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69670,10 +57013,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69681,10 +57021,7 @@
       "test/core/nanopb/corpus_serverlist/e98a9d92bbbac9b1e64c0641e967adebd681b2aa"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69692,10 +57029,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69703,10 +57037,7 @@
       "test/core/nanopb/corpus_serverlist/eb7c31f48c77b742fa29126ac78a2c06c41208e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69714,10 +57045,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69725,10 +57053,7 @@
       "test/core/nanopb/corpus_serverlist/ec174492517f988010ed3ddbd003cb388f477bb6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69736,10 +57061,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69747,10 +57069,7 @@
       "test/core/nanopb/corpus_serverlist/ec4d6a393be7ec80ccb8c531337a7fc3ef140e66"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69758,10 +57077,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69769,10 +57085,7 @@
       "test/core/nanopb/corpus_serverlist/ecd40909ab5e2c61841d9fb95b8aacc87651100c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69780,10 +57093,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69791,10 +57101,7 @@
       "test/core/nanopb/corpus_serverlist/ed17c8ddb6cc8a0b653dc87aca999d31e80c781a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69802,10 +57109,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69813,10 +57117,7 @@
       "test/core/nanopb/corpus_serverlist/ee0b476126bb1c2249b299323718ecef1250645e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69824,10 +57125,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69835,10 +57133,7 @@
       "test/core/nanopb/corpus_serverlist/ee1fb6a0b4139c07f1cf6bce850eaac9a2db29ba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69846,10 +57141,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69857,10 +57149,7 @@
       "test/core/nanopb/corpus_serverlist/eeac145c017ed35305f0ae69f820fc41e26e7997"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69868,10 +57157,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69879,10 +57165,7 @@
       "test/core/nanopb/corpus_serverlist/efac7390c6e3a653d3ce93c3d6902f2f1c281ce0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69890,10 +57173,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69901,10 +57181,7 @@
       "test/core/nanopb/corpus_serverlist/f0f0dace93d51cd8e045aeacca89424fc836eebc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69912,10 +57189,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69923,10 +57197,7 @@
       "test/core/nanopb/corpus_serverlist/f3341b8cc55c0bb6e2d0a1f7f06d68e4f04057f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69934,10 +57205,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69945,10 +57213,7 @@
       "test/core/nanopb/corpus_serverlist/f59ff56e341b94f2bddfd718b48ae9ab1692d720"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69956,10 +57221,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69967,10 +57229,7 @@
       "test/core/nanopb/corpus_serverlist/f5a1824b9fd9f124df8097017607bcfa00eccfce"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -69978,10 +57237,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -69989,10 +57245,7 @@
       "test/core/nanopb/corpus_serverlist/f5b92b69853a5d123bffdc6b0ab093f767ec30ad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70000,10 +57253,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70011,10 +57261,7 @@
       "test/core/nanopb/corpus_serverlist/f6aea4c380e41ddef2489ee581ab35e17fa3e8dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70022,10 +57269,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70033,10 +57277,7 @@
       "test/core/nanopb/corpus_serverlist/f7b7254a3af7c41cb86e4b23bb93c5a6d55e2583"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70044,10 +57285,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70055,10 +57293,7 @@
       "test/core/nanopb/corpus_serverlist/f7bdc1b174f53a49c6ef8f8cdb9b8e74e0a5d4ab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70066,10 +57301,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70077,10 +57309,7 @@
       "test/core/nanopb/corpus_serverlist/f98c78c028baf22f39c77faf6e70edb86ac1d927"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70088,10 +57317,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70099,10 +57325,7 @@
       "test/core/nanopb/corpus_serverlist/fb440171bca6ff922727e9ff2a4ac40d8d7905ff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70110,10 +57333,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70121,10 +57341,7 @@
       "test/core/nanopb/corpus_serverlist/fc76cc4030b422e4cb5c145c3e8ed122e242acf0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70132,10 +57349,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70143,10 +57357,7 @@
       "test/core/nanopb/corpus_serverlist/fcab3b80624b431e464dc12d3b6da1cf538bd15e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70154,10 +57365,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70165,10 +57373,7 @@
       "test/core/nanopb/corpus_serverlist/fdb3a9b59798d7e851d9074db69422b1d2df38dd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70176,10 +57381,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70187,10 +57389,7 @@
       "test/core/nanopb/corpus_serverlist/fe5de5f387e31b029d589d9b1777fd0d6b3e47b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70198,10 +57397,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70209,10 +57405,7 @@
       "test/core/nanopb/corpus_serverlist/ff52d938aaa10c08b2eb0830fc0066c3b57e040f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70220,10 +57413,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70231,10 +57421,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/01c008fa.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70242,10 +57429,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70253,10 +57437,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/021ec59f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70264,10 +57445,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70275,10 +57453,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/02918e4ad9e8928845f232c0cb043057add3c9a9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70286,10 +57461,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70297,10 +57469,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0336e1ff71939de9e2007fdb4aba891e35a37488"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70308,10 +57477,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70319,10 +57485,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/033dd2f6.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70330,10 +57493,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70341,10 +57501,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0384345c.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70352,10 +57509,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70363,10 +57517,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/03b9be1fa172dff5d1543be079b9c64fa2c9a278"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70374,10 +57525,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70385,10 +57533,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/05c3a0390d0f52d241728926fa901599a47e4606"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70396,10 +57541,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70407,10 +57549,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/05efe6d81ce606557691432634e81f61e68b0b81"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70418,10 +57557,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70429,10 +57565,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/06bd2f82fefb9943787d63ea359f9b77072380c2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70440,10 +57573,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70451,10 +57581,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0766afc7c27c06ea18d896083470d587a380de3c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70462,10 +57589,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70473,10 +57597,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/07ad7e0ea2aaecba37f2429a64e946fc6e2556f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70484,10 +57605,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70495,10 +57613,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/07c96c06eddbed5a3ce050436bc805f6821cbc9b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70506,10 +57621,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70517,10 +57629,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/081e56ce6f6b1c57adb806fbc5baa9f93f87513a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70528,10 +57637,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70539,10 +57645,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/08492d3d0994005206d1d3213b8747d1026ae1eb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70550,10 +57653,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70561,10 +57661,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/09938e3256d06a8e168eb038d8a58b8462f7f697"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70572,10 +57669,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70583,10 +57677,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0aa599e20761777c2cb9b41cd89e5c2e18f82d9e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70594,10 +57685,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70605,10 +57693,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0aa7b949.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70616,10 +57701,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70627,10 +57709,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0abd533e.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70638,10 +57717,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70649,10 +57725,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0b275a7f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70660,10 +57733,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70671,10 +57741,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0c413d2b361b2221585026d42f3046ff4135d2ff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70682,10 +57749,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70693,10 +57757,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0d10bb63.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70704,10 +57765,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70715,10 +57773,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0e349b8762703d080b3a696600e21d64c23a2ed3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70726,10 +57781,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70737,10 +57789,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0f700e05.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70748,10 +57797,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70759,10 +57805,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/0ff4d220.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70770,10 +57813,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70781,10 +57821,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/10724098.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70792,10 +57829,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70803,10 +57837,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/108e270a272e312fc97ec23004b80fdc7bad3906"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70814,10 +57845,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70825,10 +57853,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/11516d58.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70836,10 +57861,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70847,10 +57869,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/11cda3f70be4b507ea936bca93af9ce5aaab3be7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70858,10 +57877,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70869,10 +57885,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/13501419f349b7855d2e94060bd08b28923d1f37"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70880,10 +57893,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70891,10 +57901,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1421a8e9f045ac65a0f6938fae93fece1060c41d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70902,10 +57909,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70913,10 +57917,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/146b7d66ad932c4b623eec8004e286d3705697d3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70924,10 +57925,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70935,10 +57933,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/14f9a0cda0d64590430218aaf6dedd9be2a3533f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70946,10 +57941,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70957,10 +57949,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/15ae78a8543a4794a27e6c79b0d34540322b97fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70968,10 +57957,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -70979,10 +57965,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/15afdcf2cadb93f56dbe36233d8cd7ea9d2bd6fe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -70990,10 +57973,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71001,10 +57981,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1650b19093c56a1e86ee192bd9cd8d2266a9e353"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71012,10 +57989,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71023,10 +57997,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/16753235697083ecc45c117287f1d8ce6ad1ad1a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71034,10 +58005,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71045,10 +58013,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/17d7c718ec2597353a5dd2c78d6717a3d6aabfae"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71056,10 +58021,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71067,10 +58029,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/18d8d274aa7c163fd6d0084d5c25c8623e10c541"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71078,10 +58037,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71089,10 +58045,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/18f00b5f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71100,10 +58053,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71111,10 +58061,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1939a9021aba59ea2e49d3d0909e6fdf86ac3f9e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71122,10 +58069,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71133,10 +58077,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1a69d5fc.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71144,10 +58085,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71155,10 +58093,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1aa6897b6eebb8c68c972cc5025b39c7e60c17fe"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71166,10 +58101,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71177,10 +58109,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1cf17783de9e662f3720847f2d83d86dcdcab500"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71188,10 +58117,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71199,10 +58125,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1cfdde7a.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71210,10 +58133,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71221,10 +58141,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1d614f3d6b826f844178a77094bedb534748a362"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71232,10 +58149,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71243,10 +58157,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1e92aaa5.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71254,10 +58165,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71265,10 +58173,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1ea5651f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71276,10 +58181,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71287,10 +58189,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1f992057.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71298,10 +58197,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71309,10 +58205,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/20fd12d3670571283dc0c5dbb3fc139a8e943790"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71320,10 +58213,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71331,10 +58221,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/21475569.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71342,10 +58229,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71353,10 +58237,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/218c1b123428a07622570947e9b7cdb48c310ca5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71364,10 +58245,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71375,10 +58253,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/21a2dcda.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71386,10 +58261,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71397,10 +58269,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/22ad891a.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71408,10 +58277,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71419,10 +58285,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2463aea879c5ab49f8409d0e5c062c7e086b034b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71430,10 +58293,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71441,10 +58301,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/24ed80095e58199c52997f174046272f61ce4a8d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71452,10 +58309,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71463,10 +58317,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/25ab638f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71474,10 +58325,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71485,10 +58333,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/26048c58bd5f2a94843f6fd1e4ab0be04b232636"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71496,10 +58341,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71507,10 +58349,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/26870785fd0564f552af4e0ca418738a85b21086"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71518,10 +58357,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71529,10 +58365,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2701d1669c2996c097a74c5255d569615357b916"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71540,10 +58373,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71551,10 +58381,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/27ac2ae2.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71562,10 +58389,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71573,10 +58397,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2814d70c.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71584,10 +58405,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71595,10 +58413,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/282b6585.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71606,10 +58421,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71617,10 +58429,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2a688fd507072e1cfa2e3bc58652a7cd82dface3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71628,10 +58437,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71639,10 +58445,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2abe64b96e5e72adcf2dcc43444a69d0fb664b66"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71650,10 +58453,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71661,10 +58461,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2ad6cedd32cd646ba8e25226c7c13a107c1d6447"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71672,10 +58469,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71683,10 +58477,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2b14c6e618ec95754ea7e24fe6bc5a3a97df6897"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71694,10 +58485,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71705,10 +58493,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2b40aa21723c7e67e92e74a3083df008461d591c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71716,10 +58501,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71727,10 +58509,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2bf69fe6b40734cc3f0abdd765757809b14b0b88"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71738,10 +58517,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71749,10 +58525,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2c6660ba.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71760,10 +58533,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71771,10 +58541,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2cc6d1f3ee8933518e91b8410781fa6e105b3a15"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71782,10 +58549,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71793,10 +58557,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2e4805c3.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71804,10 +58565,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71815,10 +58573,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2f20e2decd09b6f211a5469c67efbada355e6c04"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71826,10 +58581,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71837,10 +58589,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2f3b1cd6780fe475f76f17e9e36541963d993165"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71848,10 +58597,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71859,10 +58605,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2fb017cd4c34f4af183d03c4a219d2bb36ee2dd6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71870,10 +58613,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71881,10 +58621,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/30bba77d0f420c4f454011476f3c94e31c50c161"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71892,10 +58629,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71903,10 +58637,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3224e6cd.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71914,10 +58645,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71925,10 +58653,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/326ec4d5.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71936,10 +58661,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71947,10 +58669,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3292129aa7f6eba86b70fff64408f18fff895c12"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71958,10 +58677,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71969,10 +58685,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/32b11997.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -71980,10 +58693,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -71991,10 +58701,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/32cecacca27b249bd764f852168036c5f962bd16"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72002,10 +58709,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72013,10 +58717,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/330ad4b6.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72024,10 +58725,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72035,10 +58733,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/33b4cf1ac251f0ba0c014005ef8207afe1dea623"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72046,10 +58741,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72057,10 +58749,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/33e2ecd5c9bbc1f1dcab29d00195e0ab6d04642d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72068,10 +58757,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72079,10 +58765,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/340b032d39e2b212828a2bd1a97e2b6b81dcd41b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72090,10 +58773,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72101,10 +58781,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/34bba9e4.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72112,10 +58789,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72123,10 +58797,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/374262a5acf9cde1f480e7b7254c788e1936a4de"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72134,10 +58805,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72145,10 +58813,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/37ec9df8.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72156,10 +58821,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72167,10 +58829,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/38df7e63181cbd045e5af9dbee463360c8254618"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72178,10 +58837,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72189,10 +58845,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/39ea47bb.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72200,10 +58853,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72211,10 +58861,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3aa82376296ab5a33f2921d7705b75b78b683c2d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72222,10 +58869,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72233,10 +58877,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3ca5da2f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72244,10 +58885,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72255,10 +58893,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3d7ef8c7b05f26e914c479dedb1bef5e378d2d94"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72266,10 +58901,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72277,10 +58909,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3dc665f93db294b9ccb8fcec94bcc2a91f3a04e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72288,10 +58917,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72299,10 +58925,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3de41f3f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72310,10 +58933,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72321,10 +58941,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3e2077a4fd2def7b11e618d46245d0aa85824317"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72332,10 +58949,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72343,10 +58957,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3e3ae35a.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72354,10 +58965,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72365,10 +58973,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3e787760.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72376,10 +58981,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72387,10 +58989,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3f3069cf26f761366f947e025f7049254d555e7f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72398,10 +58997,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72409,10 +59005,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/407607d2.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72420,10 +59013,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72431,10 +59021,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/40af8d589c76d7912bec06c2ae1f2466065018e7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72442,10 +59029,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72453,10 +59037,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/418f392319c44d06a018ce4c62569d527829177a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72464,10 +59045,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72475,10 +59053,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/41b31ef0.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72486,10 +59061,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72497,10 +59069,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/422708b4.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72508,10 +59077,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72519,10 +59085,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/422fa704.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72530,10 +59093,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72541,10 +59101,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4271fbb36e03cee79b21a4a5a65f37ceef58a8cd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72552,10 +59109,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72563,10 +59117,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/42b0afca.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72574,10 +59125,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72585,10 +59133,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/43fc6abab9840be5ee614211f17395b5966f6070"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72596,10 +59141,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72607,10 +59149,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/44516839d35af9ccaf8a2c62f3ce6a723482445e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72618,10 +59157,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72629,10 +59165,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/44f342a6.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72640,10 +59173,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72651,10 +59181,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4558ddeb.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72662,10 +59189,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72673,10 +59197,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/459c0bf6.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72684,10 +59205,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72695,10 +59213,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/468cf8bf3e31e1013c7c6d2288baac47ff90aa63"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72706,10 +59221,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72717,10 +59229,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4aa883d0.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72728,10 +59237,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72739,10 +59245,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4b7bcb4ae6c0222a1a24d1fb1a5d96519750ca5e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72750,10 +59253,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72761,10 +59261,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4c412cc1a775cea041fa270483d610afb72f463b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72772,10 +59269,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72783,10 +59277,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4d55d5ae.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72794,10 +59285,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72805,10 +59293,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4db3d4075ed27f2a2311f85dd1d6df028cc5d083"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72816,10 +59301,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72827,10 +59309,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4eb269c3.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72838,10 +59317,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72849,10 +59325,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4ecfe1be695df0d2489dddb52da8bcdeb6ed779d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72860,10 +59333,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72871,10 +59341,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4f97bd97ab5dc6b4c0f62f8459be8a9593dc83b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72882,10 +59349,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72893,10 +59357,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4ff50e49865768323f94116bd98d2314455273cc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72904,10 +59365,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72915,10 +59373,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/508def44e4d60f237f18a40d7058e58a752a74e1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72926,10 +59381,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72937,10 +59389,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/51a1abd1.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72948,10 +59397,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72959,10 +59405,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/52b5478161de7b2eba0f7bfbc29aea985c8d9ee7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72970,10 +59413,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -72981,10 +59421,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/52ecfedca3b2b26e6999b6afc846f3dbd5d35130"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -72992,10 +59429,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73003,10 +59437,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/53d18398c0d484de00afd8d583fe802d55d4da44"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73014,10 +59445,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73025,10 +59453,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/53de507f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73036,10 +59461,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73047,10 +59469,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/540ada69.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73058,10 +59477,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73069,10 +59485,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5413b531fe06923ddf2c9e3eb958769374bc2445"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73080,10 +59493,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73091,10 +59501,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5429f0da.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73102,10 +59509,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73113,10 +59517,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5435005f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73124,10 +59525,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73135,10 +59533,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/546367bfdd2b9464fbfe5d74f55d8cd220accbab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73146,10 +59541,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73157,10 +59549,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/54d0fc6c.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73168,10 +59557,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73179,10 +59565,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/55af20415ead0ddd417f37fa91a4c767b749ee34"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73190,10 +59573,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73201,10 +59581,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/55f6fb1a.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73212,10 +59589,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73223,10 +59597,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5780565e.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73234,10 +59605,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73245,10 +59613,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/57918260.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73256,10 +59621,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73267,10 +59629,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5841d898d2cd804f2d6373538e341dfba8a4dfab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73278,10 +59637,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73289,10 +59645,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/58b88a24.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73300,10 +59653,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73311,10 +59661,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/597fdab5.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73322,10 +59669,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73333,10 +59677,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/59ce7091c00075943d79e857c01ad1af5f38c78e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73344,10 +59685,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73355,10 +59693,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/59d0b24d1acd01c749fb4bd6802a5f4dd003ce75"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73366,10 +59701,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73377,10 +59709,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/59dcfde4.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73388,10 +59717,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73399,10 +59725,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5ac92c4a7fb476393f8275fe4b79a2b13e3bcad9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73410,10 +59733,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73421,10 +59741,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5d43ac923d7607a16e3d7bf8b838f52622871251"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73432,10 +59749,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73443,10 +59757,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5d817877.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73454,10 +59765,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73465,10 +59773,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5e2508e15c79fbe9c2e6c1a393b490356a17efbc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73476,10 +59781,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73487,10 +59789,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5f758756.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73498,10 +59797,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73509,10 +59805,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/5f820fa8d44229219d0b7c4724e3e40a2ace97f4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73520,10 +59813,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73531,10 +59821,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/61e798bdd49b339983fea4ccfe18efe44afbd69b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73542,10 +59829,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73553,10 +59837,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/62d05f336176a10a2c339c04d818f23b6e9a2637"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73564,10 +59845,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73575,10 +59853,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/6499e2db.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73586,10 +59861,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73597,10 +59869,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/64cdbb31d5eda779d07885fa7881812db7800c05"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73608,10 +59877,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73619,10 +59885,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/65077d2946cfb822cf92c9dfc44517a34589f277"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73630,10 +59893,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73641,10 +59901,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/65099066.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73652,10 +59909,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73663,10 +59917,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/652bfdce.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73674,10 +59925,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73685,10 +59933,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/65d5ae42e6acb429459a1e1a5fb35f09c0f95de2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73696,10 +59941,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73707,10 +59949,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/65fd6cb3058ee0baae854cc7859b7c0c1e1c1166"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73718,10 +59957,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73729,10 +59965,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/6652f7be83a876214affc3f230040757f7db4ea8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73740,10 +59973,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73751,10 +59981,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/67b04816.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73762,10 +59989,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73773,10 +59997,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/67ebf074c7f928c4fe32fef44e5c958cf441c93c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73784,10 +60005,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73795,10 +60013,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/68f564fd8064233897ff704b5955b33a2e29293a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73806,10 +60021,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73817,10 +60029,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/69891e9f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73828,10 +60037,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73839,10 +60045,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/6c5bb78b51cf5006c92258292de19550985c00ba"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73850,10 +60053,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73861,10 +60061,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/6dc4455c.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73872,10 +60069,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73883,10 +60077,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/6e050e98.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73894,10 +60085,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73905,10 +60093,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/6f3bd9f33ca05bebe3811f7b3ae6ed112e1e45b9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73916,10 +60101,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73927,10 +60109,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/6f9d75e1af7ae7010d32872da888a582a25fddb4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73938,10 +60117,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73949,10 +60125,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/70ebe7f32c63ca8940017eb83e6db4d8b39ee03c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73960,10 +60133,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73971,10 +60141,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/712300b98afdb5f0d15c657c13cea76841164b13"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -73982,10 +60149,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -73993,10 +60157,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/71ab07577909ca4b766f8ea0c6b8ec2bc395fc66"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74004,10 +60165,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74015,10 +60173,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/72296cf9e1052ced4b60e2053aba9f1a569144e9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74026,10 +60181,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74037,10 +60189,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/7342b3febb07521e39abdf4ee976d16199d51239"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74048,10 +60197,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74059,10 +60205,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/746715fe.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74070,10 +60213,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74081,10 +60221,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/76294f12a5974e9f87d8f092d0df5429cf6c0466"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74092,10 +60229,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74103,10 +60237,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/769f5d079151d1b5cab388c47a74f3c297c18d58"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74114,10 +60245,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74125,10 +60253,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/7839f12a8410a73d66e191cb5183d36d09a375e8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74136,10 +60261,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74147,10 +60269,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/7b453adcb9c4bf31dbc448ff32c2bc90ebcbdf0f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74158,10 +60277,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74169,10 +60285,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/7ddfac7d7845b424bf670070781ca6ff8586c63b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74180,10 +60293,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74191,10 +60301,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/7f15bbce.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74202,10 +60309,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74213,10 +60317,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/7ffd05db.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74224,10 +60325,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74235,10 +60333,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8164d3c4af043c47cfd6966873bccd2353d072bf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74246,10 +60341,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74257,10 +60349,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/81fb19dfcb3c3a18fd9e7c177356479503e75e6f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74268,10 +60357,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74279,10 +60365,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/82dda42ddde662192ebaa96788945b7673bb486b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74290,10 +60373,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74301,10 +60381,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8338ebee.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74312,10 +60389,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74323,10 +60397,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/84a3c6cf853ff318ae163231ce295171a59d5871"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74334,10 +60405,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74345,10 +60413,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/86a19d13cc65790696299c819cac17b14e337647"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74356,10 +60421,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74367,10 +60429,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/86e6dbf2.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74378,10 +60437,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74389,10 +60445,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/88017b0894db1e6f4e3a6640ffe2876d31a54723"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74400,10 +60453,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74411,10 +60461,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8846918f967dd6513040c6d382fcd68ff7099873"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74422,10 +60469,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74433,10 +60477,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/885fe25a0b441ef46ab176b88771c133e530cb73"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74444,10 +60485,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74455,10 +60493,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/88e1329b.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74466,10 +60501,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74477,10 +60509,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8b186384.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74488,10 +60517,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74499,10 +60525,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8c04817a75fddd71f13779f2ad5b994f45c333a2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74510,10 +60533,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74521,10 +60541,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8c72c3f35e9b9fd168ad9024c953a703f33ae3c1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74532,10 +60549,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74543,10 +60557,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8c760938a2a72fa92b27e00e05005e2e4c429359"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74554,10 +60565,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74565,10 +60573,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8da521d9.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74576,10 +60581,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74587,10 +60589,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8de81717.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74598,10 +60597,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74609,10 +60605,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8ec00f45afb097066f47d0bad256a8b856b1efe8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74620,10 +60613,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74631,10 +60621,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/90224b8e.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74642,10 +60629,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74653,10 +60637,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/90240c7c.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74664,10 +60645,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74675,10 +60653,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9099ac4e83f6460c80b5557c87f653e4c65aa091"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74686,10 +60661,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74697,10 +60669,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/914ed07570b6441365a3636d05850f7316c7f2a8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74708,10 +60677,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74719,10 +60685,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/916b825da0ffc46fdb6120b1044e98ae158fce70"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74730,10 +60693,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74741,10 +60701,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/93beeba2.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74752,10 +60709,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74763,10 +60717,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/93c3ffcb7e3bcb5ed7e37a5b3dfb97b43ca42718"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74774,10 +60725,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74785,10 +60733,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9540d3ad3fa75bfb95c0d57cefd737611c7069a5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74796,10 +60741,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74807,10 +60749,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/954337ef.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74818,10 +60757,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74829,10 +60765,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/95d25ba2e190fafa2b3ca1e1c467b9ef64868962"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74840,10 +60773,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74851,10 +60781,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9764015f89a0b7a59f3b5359b0a037b38d6e39d7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74862,10 +60789,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74873,10 +60797,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/97aed4bd.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74884,10 +60805,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74895,10 +60813,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/986c9ca7db83b2cddbae2a0db2dca87f52277074"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74906,10 +60821,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74917,10 +60829,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9953eb28aa1ed661612a4710a9d16a15de4ae353"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74928,10 +60837,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74939,10 +60845,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9a176b6f7e0dc5f681a1788d8954f76fabd08cad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74950,10 +60853,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74961,10 +60861,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9a6963b0d0fcb0e91a31748c47c6f0e1e842fea9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74972,10 +60869,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -74983,10 +60877,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9bf7553a.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -74994,10 +60885,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75005,10 +60893,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/9d2d18fce18c790035d8f67ed798703bdda0a949"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75016,10 +60901,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75027,10 +60909,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a112d484b70e778835fcd478fd651828720791e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75038,10 +60917,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75049,10 +60925,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a24bf2dc.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75060,10 +60933,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75071,10 +60941,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a32be0653ccc65463445b4aaf24a7a1164d5c642"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75082,10 +60949,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75093,10 +60957,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a357658d.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75104,10 +60965,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75115,10 +60973,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a3a2b1af.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75126,10 +60981,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75137,10 +60989,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a5348197.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75148,10 +60997,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75159,10 +61005,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a5b529754606b96a8c801615ac12a1f6ee5c3f54"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75170,10 +61013,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75181,10 +61021,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a5cc3762cb2b2cac316c60ddee794016057fb4ff"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75192,10 +61029,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75203,10 +61037,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a7e64803.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75214,10 +61045,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75225,10 +61053,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a8d229374635fa6f2a75ca1669892e1bc244e719"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75236,10 +61061,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75247,10 +61069,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a8f2345b2c949e9e32a434c99accf771f405eb65"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75258,10 +61077,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75269,10 +61085,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a9463428cdc47d37efb6e3c5633d1e5e78911f16"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75280,10 +61093,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75291,10 +61101,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a9966f7181d08f6a9ff8158736ad77a285d743a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75302,10 +61109,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75313,10 +61117,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a9e22d93.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75324,10 +61125,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75335,10 +61133,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/aa3c8974.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75346,10 +61141,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75357,10 +61149,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/aa825693.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75368,10 +61157,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75379,10 +61165,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/aa8729d7.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75390,10 +61173,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75401,10 +61181,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/aaafca90a7f59184f3d768a1d6f9093e8f737b8a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75412,10 +61189,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75423,10 +61197,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ad810f7f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75434,10 +61205,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75445,10 +61213,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/aedefcd9bd7fc10b7bf60372da54c43e953523bd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75456,10 +61221,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75467,10 +61229,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/aefcbc29f2caea5038cda4dbc927cdadd9b844c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75478,10 +61237,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75489,10 +61245,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b06ce623.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75500,10 +61253,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75511,10 +61261,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b1128694.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75522,10 +61269,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75533,10 +61277,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b220d23a13d98d4815b1f7a3e4fe7dd8672b1c83"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75544,10 +61285,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75555,10 +61293,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b28959dd.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75566,10 +61301,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75577,10 +61309,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b431df13.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75588,10 +61317,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75599,10 +61325,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b5acaa52.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75610,10 +61333,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75621,10 +61341,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b7ce4a4f6eea20c0b83d9f7fa8406a0730ee0040"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75632,10 +61349,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75643,10 +61357,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b829143b.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75654,10 +61365,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75665,10 +61373,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b887097732b9c30719f6c7ea7a7cbac531512a31"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75676,10 +61381,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75687,10 +61389,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/b924c842.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75698,10 +61397,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75709,10 +61405,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/bad4f467.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75720,10 +61413,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75731,10 +61421,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/bc9545cebdcb3af82406a5f0c1b286d28f9d4f5a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75742,10 +61429,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75753,10 +61437,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/bd63e44a3b004e7ed471c2367c3efae2c58a676d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75764,10 +61445,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75775,10 +61453,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/be9b6e78.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75786,10 +61461,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75797,10 +61469,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/bf5e21c32becb5839deeb81e9174cf6478a25473"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75808,10 +61477,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75819,10 +61485,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/bfb55acd5b66521eb5bd8ce6b57b3b6895883675"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75830,10 +61493,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75841,10 +61501,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/bfcbffa9.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75852,10 +61509,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75863,10 +61517,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c004455e9d60bc2fff094e79cd0b38507023e018"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75874,10 +61525,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75885,10 +61533,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c039ac9a5a570f8fd9064df9320890b885edf9c3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75896,10 +61541,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75907,10 +61549,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c1188b44.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75918,10 +61557,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75929,10 +61565,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c12835aa9f3513d3f7179ee4f9976292713f7cb9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75940,10 +61573,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75951,10 +61581,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c13188118af1634061b6a3947b81618891aeb6a3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75962,10 +61589,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75973,10 +61597,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c35968bf.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -75984,10 +61605,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -75995,10 +61613,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c43d97f2.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76006,10 +61621,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76017,10 +61629,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c4534867.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76028,10 +61637,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76039,10 +61645,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c4a71cdd29759b51f9cc54175ad69c44b4ab6eb6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76050,10 +61653,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76061,10 +61661,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c559f565.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76072,10 +61669,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76083,10 +61677,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c56fada76f5c198232201a608072a1a63e3d3785"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76094,10 +61685,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76105,10 +61693,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c5ff50ae447ac7a0c8fb3363b2458824d405e64c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76116,10 +61701,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76127,10 +61709,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c66e84d1.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76138,10 +61717,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76149,10 +61725,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c6a1d2cc8935808b6e317a69baec1c3cb87cac94"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76160,10 +61733,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76171,10 +61741,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c7c44b98faa21c8f0645a818a65b60d956d15952"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76182,10 +61749,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76193,10 +61757,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c8073f5f41970fab4738215e42ec97a4383855e5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76204,10 +61765,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76215,10 +61773,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c81dec02.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76226,10 +61781,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76237,10 +61789,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c8812dc8a1ab1592a2d7b71300e1a0a5da6a6382"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76248,10 +61797,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76259,10 +61805,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ca843c66c4c4807ccb1615b472c79bc459e5c6cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76270,10 +61813,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76281,10 +61821,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/cbb04be69714f81f5cd09e36e8ea4e69ea73d618"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76292,10 +61829,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76303,10 +61837,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/cc97ece92b72cc2a4d045e16c0e2f2021bc014f8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76314,10 +61845,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76325,10 +61853,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/cca29902.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76336,10 +61861,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76347,10 +61869,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/cdba6c45.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76358,10 +61877,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76369,10 +61885,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-0f4b135c0242669ce425d2662168e9440f8a628d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76380,10 +61893,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76391,10 +61901,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-239cc27a23827ea53b60ccbaee0ecc64dad2bff0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76402,10 +61909,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76413,10 +61917,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-41ab0e868e84612275f77118f9e832bc94ff45c5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76424,10 +61925,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76435,10 +61933,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-7af5da2a8da23d197d9336e32da72c9ff64c15b3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76446,10 +61941,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76457,10 +61949,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-7e121dd3be057176369bea160d873040b32a03dc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76468,10 +61957,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76479,10 +61965,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-e34b0a9a428001cb4094a9ebca76329f578811a4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76490,10 +61973,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76501,10 +61981,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d0f7eebc.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76512,10 +61989,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76523,10 +61997,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d2031009d3783fcf083963fa30bb493f7f935541"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76534,10 +62005,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76545,10 +62013,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d28155c6c92642c61dfb097f7b2eb1d6ced272c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76556,10 +62021,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76567,10 +62029,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d6979f0f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76578,10 +62037,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76589,10 +62045,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d8a1d141a9e3876b71c7decbe6e3affccf6de397"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76600,10 +62053,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76611,10 +62061,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d9074e68.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76622,10 +62069,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76633,10 +62077,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d95556cac07e720909aaf2ac09d876106420463f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76644,10 +62085,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76655,10 +62093,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/d96da249094db51ea92b1413907abfd27a4f2426"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76666,10 +62101,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76677,10 +62109,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/da7e44a9.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76688,10 +62117,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76699,10 +62125,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/dab172ff.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76710,10 +62133,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76721,10 +62141,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/dad922e2daf84cf039f50cf8636eaa9dbd01ff83"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76732,10 +62149,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76743,10 +62157,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/db33559d4afb4c32e68525c000fde16a4c3300f5"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76754,10 +62165,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76765,10 +62173,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/dcabac1ef8b197ef39b188bcf5dc470f9749e903"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76776,10 +62181,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76787,10 +62189,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/df5d3cf5f05eab65ef9d385e263780ae73c42b19"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76798,10 +62197,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76809,10 +62205,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e0d9a9a7.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76820,10 +62213,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76831,10 +62221,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e2652fbb.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76842,10 +62229,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76853,10 +62237,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e2c954e1.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76864,10 +62245,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76875,10 +62253,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e3bab014.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76886,10 +62261,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76897,10 +62269,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e7ad0c4b7d0f289c90a3988309e9e03b78f7eea3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76908,10 +62277,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76919,10 +62285,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e9bbe2fe47b7b9c2683e7f17f4a33625c6ffbd8c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76930,10 +62293,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76941,10 +62301,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e9d96662.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76952,10 +62309,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76963,10 +62317,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/eb66106b.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76974,10 +62325,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -76985,10 +62333,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/eba8472a.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -76996,10 +62341,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77007,10 +62349,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ed8da77f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77018,10 +62357,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77029,10 +62365,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ee64e1ba4897bfd7c6baa1fb72d4c5f83b5654e4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77040,10 +62373,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77051,10 +62381,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f0387dfdd6b8c925d958113e669ec4a1897034b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77062,10 +62389,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77073,10 +62397,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f1121b952e75463cc71137683dc2528f9cbc19b7"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77084,10 +62405,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77095,10 +62413,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f3220426.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77106,10 +62421,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77117,10 +62429,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f3d084cf20b92a5f026fe7cc6e5af49bde28693d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77128,10 +62437,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77139,10 +62445,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f4024b01.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77150,10 +62453,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77161,10 +62461,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f541d27e.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77172,10 +62469,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77183,10 +62477,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f5424a9d7bd14317b6de7b15587df28bfde8362d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77194,10 +62485,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77205,10 +62493,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f5c877c4.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77216,10 +62501,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77227,10 +62509,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f5f0615030439dda162e8862b6bbd09f81f14d81"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77238,10 +62517,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77249,10 +62525,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f74b9428.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77260,10 +62533,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77271,10 +62541,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f7bf0d7bb0dd6e1866ccef9fafc3cb295db2f07f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77282,10 +62549,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77293,10 +62557,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f826100f.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77304,10 +62565,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77315,10 +62573,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f88ffb7f3066f2706cfcd9be077595e07834cc15"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77326,10 +62581,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77337,10 +62589,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/f8b46e92c7ceb4c2f2cdcb3452a6d8c58768eaa2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77348,10 +62597,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77359,10 +62605,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fa36b4280d9e28edd81c5e4d192d1a5c2765e5e4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77370,10 +62613,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77381,10 +62621,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fb3b0d80.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77392,10 +62629,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77403,10 +62637,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fb84edfa9e8cbddba26a7184e7fdc219bde556c0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77414,10 +62645,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77425,10 +62653,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fd14bea45ecaf13af0053900edb2f17b71a0bf09"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77436,10 +62661,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77447,10 +62669,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fd26e0a6.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77458,10 +62677,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77469,10 +62685,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fd943e69304dffebf47e1e40b0849e12abeee287"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77480,10 +62693,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77491,10 +62701,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fdf67df81857577361d319e76559c5e85a257b07"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77502,10 +62709,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77513,10 +62717,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fe1957b9bc7c6bf9d8b6089c422d72a0f444da6e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77524,10 +62725,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77535,10 +62733,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fe66893c.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77546,10 +62741,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77557,10 +62749,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fe69ddfa5827dd560bb0b5d4da7d982273f17ef9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77568,10 +62757,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77579,10 +62765,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ff227015.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77590,10 +62773,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77601,10 +62781,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ff898c08.bin"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77612,10 +62789,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77623,10 +62797,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-082763e16153cb6b8f3f5308cd060e822f475e5a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77634,10 +62805,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77645,10 +62813,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77656,10 +62821,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77667,10 +62829,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-14862768a1fe076896fd37e2543ddd23192a9e3c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77678,10 +62837,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77689,10 +62845,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1a3ebf8f8bb0b5a0109a5ef44734cc64170377f9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77700,10 +62853,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77711,10 +62861,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1ae0ed17a042aab8a3c3199c83a809b0243d1424"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77722,10 +62869,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77733,10 +62877,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1b6c4b5c1949adae3efd5e3264bb32a40eea524e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77744,10 +62885,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77755,10 +62893,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3991c873ba814d0cd03a67d25fff0c8fe8713aca"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77766,10 +62901,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77777,10 +62909,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77788,10 +62917,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77799,10 +62925,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-58f116dfba8d428a01ca596174fca63f4ac523f0"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77810,10 +62933,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77821,10 +62941,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-59f6edc7cf4aeed49b4dc024052db4846d5d7fc8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77832,10 +62949,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77843,10 +62957,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-63ebf780ee6c2003eba622686a4bf94c503ad96e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77854,10 +62965,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77865,10 +62973,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-68ed2d33c9d32f73343c097303c3d5a6a3467c83"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77876,10 +62981,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77887,10 +62989,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6d37c5e6d7efee56319b1316725fdc5aee5a52c3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77898,10 +62997,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77909,10 +63005,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-6e980a9d12c392175b5f66683e608626ae983276"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77920,10 +63013,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77931,10 +63021,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-7233d53f94386b0339b2c2b01ef2d348f5862f1f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77942,10 +63029,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77953,10 +63037,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-7281d9eaed0d20b0b6b5e7709c57e78fefe9c315"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77964,10 +63045,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77975,10 +63053,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-73e0a41066bc09c8e3fbd0dd7628445bcdaabb4a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -77986,10 +63061,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -77997,10 +63069,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78008,10 +63077,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78019,10 +63085,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9a176b6f7e0dc5f681a1788d8954f76fabd08cad"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78030,10 +63093,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78041,10 +63101,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9de2e92150e54982d4e502b18f374f8cd8fd453b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78052,10 +63109,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78063,10 +63117,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-a61a28cf78149518466b87e5463ec5c771dc504e"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78074,10 +63125,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78085,10 +63133,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-aa23c18f6badd88a7bec65e8b04f7801ba624ec6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78096,10 +63141,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78107,10 +63149,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78118,10 +63157,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78129,10 +63165,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-bda43d420a3e5d5228a5f5130207a1f11fc1c81f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78140,10 +63173,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78151,10 +63181,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c05c239719a7beeca2c126b7e5ef7251fa615b54"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78162,10 +63189,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78173,10 +63197,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-c151762e5f37e233142059c1b269ce55434cf6a6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78184,10 +63205,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78195,10 +63213,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-cacd0e0c5f7d4169085735400100da4d36397185"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78206,10 +63221,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78217,10 +63229,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3c3cba3897fafec97665411ea1f94a89bb4de7b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78228,10 +63237,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78239,10 +63245,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3fcd80cd6f1bb05f5e5084ebb2ee801067863fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78250,10 +63253,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78261,10 +63261,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ddfe613d8791b2d377e14fbdffb18b84a89d49b6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78272,10 +63269,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78283,10 +63277,7 @@
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f67be653815f6c2c10eea55c8009e1167ac9c20b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78294,10 +63285,7 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78305,10 +63293,7 @@
       "test/core/client_config/uri_corpus/02d156dc5e6f2c11c90c2e06fcee04adf036a342"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78316,10 +63301,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78327,10 +63309,7 @@
       "test/core/client_config/uri_corpus/042dc4512fa3d391c5170cf3aa61e6a638f84342"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78338,10 +63317,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78349,10 +63325,7 @@
       "test/core/client_config/uri_corpus/0e9bbe975f2027e8c39c89f85f667530368e7d11"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78360,10 +63333,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78371,10 +63341,7 @@
       "test/core/client_config/uri_corpus/1155aa6ea7ef262a81a63692513ea395f84dad6f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78382,10 +63349,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78393,10 +63357,7 @@
       "test/core/client_config/uri_corpus/13856a5569ffd085a4d5c07af5f8e9310835a118"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78404,10 +63365,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78415,10 +63373,7 @@
       "test/core/client_config/uri_corpus/14b57bcbf1e17b1db1de491ef2ba3768f704b7dc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78426,10 +63381,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78437,10 +63389,7 @@
       "test/core/client_config/uri_corpus/1794310671a060eead6e5ee66ac978a18ec7e84f"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78448,10 +63397,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78459,10 +63405,7 @@
       "test/core/client_config/uri_corpus/1d30b2a79afbaf2828ff42b9a9647e942ba1ab80"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78470,10 +63413,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78481,10 +63421,7 @@
       "test/core/client_config/uri_corpus/1fcf5d9c333b70596cf5ba04d1f7affdf445b971"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78492,10 +63429,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78503,10 +63437,7 @@
       "test/core/client_config/uri_corpus/23162c8a8936e20b195404c21337ee734d02a6bc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78514,10 +63445,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78525,10 +63453,7 @@
       "test/core/client_config/uri_corpus/23f3198b815ca60bdadcaae682b9f965dda387f1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78536,10 +63461,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78547,21 +63469,15 @@
       "test/core/client_config/uri_corpus/2ef3893b43f1f60b77b59ce06a6bce9815d78eaf"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
     "flaky": false, 
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
-    "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+    "platforms": [
+      "linux"
     ]
   }, 
   {
@@ -78569,10 +63485,7 @@
       "test/core/client_config/uri_corpus/356c3c129e203b5c74550b4209764d74b9caefce"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78580,10 +63493,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78591,10 +63501,7 @@
       "test/core/client_config/uri_corpus/396568fc41c8ccb31ec925b4a862e4d29ead1327"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78602,10 +63509,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78613,10 +63517,7 @@
       "test/core/client_config/uri_corpus/3b1e7526a99918006b87e499d2beb6c4ac9c3c0c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78624,10 +63525,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78635,10 +63533,7 @@
       "test/core/client_config/uri_corpus/3b58860f3451d3e7aad99690a8d39782ca5116fc"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78646,10 +63541,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78657,10 +63549,7 @@
       "test/core/client_config/uri_corpus/41963cc10752f70c3af7e3d85868efb097a0ea9c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78668,10 +63557,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78679,10 +63565,7 @@
       "test/core/client_config/uri_corpus/47b5228404451fc9d4071fa69192514bb4ce33c1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78690,10 +63573,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78701,10 +63581,7 @@
       "test/core/client_config/uri_corpus/56a2da4b2e6fb795243901023ed8d0aa083d1aab"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78712,10 +63589,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78723,10 +63597,7 @@
       "test/core/client_config/uri_corpus/574c2f13858a9a6d724654bd913ede9ae3abf822"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78734,10 +63605,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78745,10 +63613,7 @@
       "test/core/client_config/uri_corpus/582f789c19033a152094cbf8565f14154a778ddb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78756,10 +63621,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78767,10 +63629,7 @@
       "test/core/client_config/uri_corpus/636c5606fc23713a1bae88c8899c0541cfad4fd8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78778,10 +63637,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78789,10 +63645,7 @@
       "test/core/client_config/uri_corpus/63fe493b270b17426d77a27cbf3abac5b2c2794a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78800,10 +63653,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78811,10 +63661,7 @@
       "test/core/client_config/uri_corpus/655300a902b62662296a8e46bfb04fbcb07182cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78822,10 +63669,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78833,10 +63677,7 @@
       "test/core/client_config/uri_corpus/6ae3acd9d8507b61bf235748026080a4138dba58"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78844,10 +63685,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78855,10 +63693,7 @@
       "test/core/client_config/uri_corpus/6b70979a70a038ff6607d6cf85485ee95baf58e6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78866,10 +63701,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78877,10 +63709,7 @@
       "test/core/client_config/uri_corpus/7314ab3545a7535a26e0e8aad67caea5534d68b1"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78888,10 +63717,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78899,10 +63725,7 @@
       "test/core/client_config/uri_corpus/7ff4d8b8d1ffd0d42c48bbb91e5856a9ec31aecb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78910,10 +63733,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78921,10 +63741,7 @@
       "test/core/client_config/uri_corpus/87daa131e0973b77a232a870ed749ef29cf58e6d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78932,10 +63749,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78943,10 +63757,7 @@
       "test/core/client_config/uri_corpus/884dcaee2908ffe5f12b65b8eba81016099c4266"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78954,10 +63765,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78965,10 +63773,7 @@
       "test/core/client_config/uri_corpus/8d7e944fd5d0ede94097fcc98b47b09a3f9c76cb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78976,10 +63781,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -78987,10 +63789,7 @@
       "test/core/client_config/uri_corpus/9671149af0b444f59bbdf71340d3441dadd8a7b4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -78998,10 +63797,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79009,10 +63805,7 @@
       "test/core/client_config/uri_corpus/96c8d266b7dc037288ef305c996608270f72e7fb"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79020,10 +63813,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79031,10 +63821,7 @@
       "test/core/client_config/uri_corpus/975536c71ade4800415a7e9c2f1b45c35a6d5ea8"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79042,10 +63829,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79053,10 +63837,7 @@
       "test/core/client_config/uri_corpus/99750aa67d30beaea8af565c829d4999aa8cb91b"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79064,10 +63845,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79075,10 +63853,7 @@
       "test/core/client_config/uri_corpus/a1140f3f8b5cffc1010221b9a4084a25fb75c1f6"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79086,10 +63861,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79097,10 +63869,7 @@
       "test/core/client_config/uri_corpus/a1f0f9b75bb354eb063d7cba4fcfa2d0b88d63de"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79108,10 +63877,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79119,10 +63885,7 @@
       "test/core/client_config/uri_corpus/a296eb3d1d436ed7df7195b10aa3c4de3896f98d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79130,10 +63893,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79141,10 +63901,7 @@
       "test/core/client_config/uri_corpus/a8b8e66050b424f1b8c07d46f868199fb7f60e38"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79152,10 +63909,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79163,10 +63917,7 @@
       "test/core/client_config/uri_corpus/aba1472880406a318ce207ee79815b7acf087757"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79174,10 +63925,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79185,10 +63933,7 @@
       "test/core/client_config/uri_corpus/af55baf8c8855e563befdf1eefbcbd46c5ddb8d2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79196,10 +63941,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79207,10 +63949,7 @@
       "test/core/client_config/uri_corpus/b3c0bf66c2bf5d24ef1daf4cc5a9d6d5bd0e8bfd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79218,10 +63957,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79229,10 +63965,7 @@
       "test/core/client_config/uri_corpus/c28a47409cf5d95bb372238d01e73d8b831408e4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79240,10 +63973,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79251,10 +63981,7 @@
       "test/core/client_config/uri_corpus/c3ef1d41888063a08700c3add1e4465aabcf8807"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79262,10 +63989,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79273,10 +63997,7 @@
       "test/core/client_config/uri_corpus/c550a76af21f9b9cc92a386d5c8998b26f8f2e4d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79284,10 +64005,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79295,10 +64013,7 @@
       "test/core/client_config/uri_corpus/c79721406d0ab80495f186fd88e37fba98637ae9"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79306,10 +64021,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79317,10 +64029,7 @@
       "test/core/client_config/uri_corpus/ceb4e2264ba7a8d5be47d276b37ec09489e00245"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79328,10 +64037,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79339,10 +64045,7 @@
       "test/core/client_config/uri_corpus/cf4395958f5bfb46fd6f535a39657d016c75114c"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79350,10 +64053,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79361,10 +64061,7 @@
       "test/core/client_config/uri_corpus/d46668372b7e20154a89409a7430a28e642afdca"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79372,10 +64069,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79383,10 +64077,7 @@
       "test/core/client_config/uri_corpus/d6fe7412a0a1d1c733160246f3fa425f4f97682a"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79394,10 +64085,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79405,10 +64093,7 @@
       "test/core/client_config/uri_corpus/dns.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79416,10 +64101,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79427,10 +64109,7 @@
       "test/core/client_config/uri_corpus/e241f29957b0e30ec11aaaf91b2339f7015fa5fd"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79438,10 +64117,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79449,10 +64125,7 @@
       "test/core/client_config/uri_corpus/ea02d9fea9bad5b89cf353a0169238f584177e71"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79460,10 +64133,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79471,10 +64141,7 @@
       "test/core/client_config/uri_corpus/ec4731dddf94ed3ea92ae4d5a71f145ab6e3f6ee"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79482,10 +64149,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79493,10 +64157,7 @@
       "test/core/client_config/uri_corpus/ed2f78646f19fc47dd85ff0877c232b71913ece2"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79504,10 +64165,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79515,10 +64173,7 @@
       "test/core/client_config/uri_corpus/f6889f4a6350fea1596a3adea5cdac02bd5d1ff3"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79526,10 +64181,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79537,10 +64189,7 @@
       "test/core/client_config/uri_corpus/f6f3bd030f0d321efe7c51ca3f057de23509af67"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79548,10 +64197,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79559,10 +64205,7 @@
       "test/core/client_config/uri_corpus/f97598cff03306af3c70400608fec47268b5075d"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79570,10 +64213,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79581,10 +64221,7 @@
       "test/core/client_config/uri_corpus/f9e1ec1fc642b575bc9955618b7065747f56b101"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79592,10 +64229,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79603,10 +64237,7 @@
       "test/core/client_config/uri_corpus/fe0630a3aeed2ec6f474f362e4c839478290d5c4"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79614,10 +64245,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79625,10 +64253,7 @@
       "test/core/client_config/uri_corpus/ipv4.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79636,10 +64261,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79647,10 +64269,7 @@
       "test/core/client_config/uri_corpus/ipv6.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79658,10 +64277,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }, 
   {
@@ -79669,10 +64285,7 @@
       "test/core/client_config/uri_corpus/unix.txt"
     ], 
     "ci_platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ], 
     "cpu_cost": 0.1, 
     "exclude_configs": [], 
@@ -79680,10 +64293,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "platforms": [
-      "linux", 
-      "mac", 
-      "windows", 
-      "posix"
+      "linux"
     ]
   }
 ]
-- 
GitLab


From 7f0793ad623ae1dd2b175306a0e7eb060d53511b Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Mon, 25 Apr 2016 12:35:58 -0700
Subject: [PATCH 188/525] Updated load balancer proto to v1

---
 BUILD                                         |  12 +-
 Makefile                                      |  18 +-
 binding.gyp                                   |   2 +-
 build.yaml                                    |   6 +-
 config.m4                                     |   4 +-
 gRPC.podspec                                  |   6 +-
 grpc.gemspec                                  |   4 +-
 package.xml                                   |   4 +-
 .../ext/lb_policy/grpclb/load_balancer_api.c  |  14 +-
 .../ext/lb_policy/grpclb/load_balancer_api.h  |  10 +-
 .../proto/grpc/lb/v0/load_balancer.pb.h       | 182 ------------------
 .../grpc/lb/{v0 => v1}/load_balancer.pb.c     |  59 +++---
 .../proto/grpc/lb/v1/load_balancer.pb.h       | 178 +++++++++++++++++
 src/proto/grpc/lb/v0/load_balancer.options    |   6 -
 src/proto/grpc/lb/v1/load_balancer.options    |   6 +
 .../grpc/lb/{v0 => v1}/load_balancer.proto    |  11 +-
 src/python/grpcio/grpc_core_dependencies.py   |   2 +-
 test/cpp/grpclb/grpclb_api_test.cc            |  11 +-
 tools/codegen/core/gen_nano_proto.sh          |   6 +-
 tools/distrib/check_include_guards.py         |   2 +-
 tools/distrib/check_nanopb_output.sh          |   6 +-
 tools/doxygen/Doxyfile.core.internal          |   4 +-
 tools/run_tests/sources_and_headers.json      |  10 +-
 vsprojects/vcxproj/grpc/grpc.vcxproj          |   4 +-
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters  |  12 +-
 .../grpc_unsecure/grpc_unsecure.vcxproj       |   4 +-
 .../grpc_unsecure.vcxproj.filters             |  12 +-
 .../grpclb_api_test/grpclb_api_test.vcxproj   |   8 +-
 .../grpclb_api_test.vcxproj.filters           |   8 +-
 29 files changed, 299 insertions(+), 312 deletions(-)
 delete mode 100644 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h
 rename src/core/ext/lb_policy/grpclb/proto/grpc/lb/{v0 => v1}/load_balancer.pb.c (55%)
 create mode 100644 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
 delete mode 100644 src/proto/grpc/lb/v0/load_balancer.options
 create mode 100644 src/proto/grpc/lb/v1/load_balancer.options
 rename src/proto/grpc/lb/{v0 => v1}/load_balancer.proto (94%)

diff --git a/BUILD b/BUILD
index f8e7661ad4..ff5220bc8e 100644
--- a/BUILD
+++ b/BUILD
@@ -284,7 +284,7 @@ cc_library(
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
     "src/core/ext/census/census_interface.h",
     "src/core/ext/census/census_rpc_stats.h",
@@ -438,7 +438,7 @@ cc_library(
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
     "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/resolver/dns/native/dns_resolver.c",
@@ -615,7 +615,7 @@ cc_library(
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
     "src/core/ext/census/census_interface.h",
     "src/core/ext/census/census_rpc_stats.h",
@@ -751,7 +751,7 @@ cc_library(
     "src/core/ext/resolver/dns/native/dns_resolver.c",
     "src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
     "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/census/context.c",
@@ -1450,7 +1450,7 @@ objc_library(
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
     "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/resolver/dns/native/dns_resolver.c",
@@ -1620,7 +1620,7 @@ objc_library(
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
-    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
+    "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
     "src/core/ext/census/census_interface.h",
     "src/core/ext/census/census_rpc_stats.h",
diff --git a/Makefile b/Makefile
index 12022c2dd9..027a24664a 100644
--- a/Makefile
+++ b/Makefile
@@ -1862,15 +1862,15 @@ $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc:
 	$(Q) echo "$(GRPCXX_UNSECURE_PC_FILE)" | tr , '\n' >$@
 
 ifeq ($(NO_PROTOC),true)
-$(GENDIR)/src/proto/grpc/lb/v0/load_balancer.pb.cc: protoc_dep_error
-$(GENDIR)/src/proto/grpc/lb/v0/load_balancer.grpc.pb.cc: protoc_dep_error
+$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: protoc_dep_error
+$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: protoc_dep_error
 else
-$(GENDIR)/src/proto/grpc/lb/v0/load_balancer.pb.cc: src/proto/grpc/lb/v0/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 	$(E) "[PROTOC]  Generating protobuf CC file from $<"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(PROTOC) --cpp_out=$(GENDIR) $<
 
-$(GENDIR)/src/proto/grpc/lb/v0/load_balancer.grpc.pb.cc: src/proto/grpc/lb/v0/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
+$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: src/proto/grpc/lb/v1/load_balancer.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS) 
 	$(E) "[GRPC]    Generating gRPC's protobuf service CC file from $<"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(PROTOC) --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(BINDIR)/$(CONFIG)/grpc_cpp_plugin $<
@@ -2597,7 +2597,7 @@ LIBGRPC_SRC = \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
-    src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
+    src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
     third_party/nanopb/pb_decode.c \
     third_party/nanopb/pb_encode.c \
@@ -2917,7 +2917,7 @@ LIBGRPC_UNSECURE_SRC = \
     src/core/ext/resolver/dns/native/dns_resolver.c \
     src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
-    src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
+    src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
     third_party/nanopb/pb_decode.c \
     third_party/nanopb/pb_encode.c \
@@ -10602,7 +10602,7 @@ endif
 
 
 GRPCLB_API_TEST_SRC = \
-    $(GENDIR)/src/proto/grpc/lb/v0/load_balancer.pb.cc $(GENDIR)/src/proto/grpc/lb/v0/load_balancer.grpc.pb.cc \
+    $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc \
     test/cpp/grpclb/grpclb_api_test.cc \
 
 GRPCLB_API_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPCLB_API_TEST_SRC))))
@@ -10634,7 +10634,7 @@ endif
 
 endif
 
-$(OBJDIR)/$(CONFIG)/src/proto/grpc/lb/v0/load_balancer.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a
+$(OBJDIR)/$(CONFIG)/src/proto/grpc/lb/v1/load_balancer.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a
 
 $(OBJDIR)/$(CONFIG)/test/cpp/grpclb/grpclb_api_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a
 
@@ -10645,7 +10645,7 @@ ifneq ($(NO_DEPS),true)
 -include $(GRPCLB_API_TEST_OBJS:.o=.dep)
 endif
 endif
-$(OBJDIR)/$(CONFIG)/test/cpp/grpclb/grpclb_api_test.o: $(GENDIR)/src/proto/grpc/lb/v0/load_balancer.pb.cc $(GENDIR)/src/proto/grpc/lb/v0/load_balancer.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/grpclb/grpclb_api_test.o: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc
 
 
 HYBRID_END2END_TEST_SRC = \
diff --git a/binding.gyp b/binding.gyp
index 058743edbf..0fecc66c46 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -708,7 +708,7 @@
         'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
         'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
-        'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
+        'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
         'third_party/nanopb/pb_decode.c',
         'third_party/nanopb/pb_encode.c',
diff --git a/build.yaml b/build.yaml
index 26308e8db5..d5cfb3c2d6 100644
--- a/build.yaml
+++ b/build.yaml
@@ -359,10 +359,10 @@ filegroups:
 - name: grpc_lb_policy_grpclb
   headers:
   - src/core/ext/lb_policy/grpclb/load_balancer_api.h
-  - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h
+  - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
   src:
   - src/core/ext/lb_policy/grpclb/load_balancer_api.c
-  - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c
+  - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
   uses:
   - grpc_base
   - grpc_client_config
@@ -2601,7 +2601,7 @@ targets:
   build: test
   language: c++
   src:
-  - src/proto/grpc/lb/v0/load_balancer.proto
+  - src/proto/grpc/lb/v1/load_balancer.proto
   - test/cpp/grpclb/grpclb_api_test.cc
   deps:
   - grpc++_test_util
diff --git a/config.m4 b/config.m4
index 2d930a648e..c60297213d 100644
--- a/config.m4
+++ b/config.m4
@@ -227,7 +227,7 @@ if test "$PHP_GRPC" != "no"; then
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
-    src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
+    src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
     third_party/nanopb/pb_decode.c \
     third_party/nanopb/pb_encode.c \
@@ -553,7 +553,7 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/census)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/client_config)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb)
-  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/pick_first)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/round_robin)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/dns/native)
diff --git a/gRPC.podspec b/gRPC.podspec
index d66e03354b..6f631c1c55 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -286,7 +286,7 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/subchannel_index.h',
                       'src/core/ext/client_config/uri_parser.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
-                      'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
+                      'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
                       'third_party/nanopb/pb.h',
                       'third_party/nanopb/pb_common.h',
                       'third_party/nanopb/pb_decode.h',
@@ -472,7 +472,7 @@ Pod::Spec.new do |s|
                       'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
                       'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
-                      'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
+                      'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
                       'third_party/nanopb/pb_common.c',
                       'third_party/nanopb/pb_decode.c',
                       'third_party/nanopb/pb_encode.c',
@@ -628,7 +628,7 @@ Pod::Spec.new do |s|
                               'src/core/ext/client_config/subchannel_index.h',
                               'src/core/ext/client_config/uri_parser.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
-                              'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
+                              'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
                               'third_party/nanopb/pb.h',
                               'third_party/nanopb/pb_common.h',
                               'third_party/nanopb/pb_decode.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index f83b7d3587..1512da6b56 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -298,7 +298,7 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/subchannel_index.h )
   s.files += %w( src/core/ext/client_config/uri_parser.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
-  s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h )
+  s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h )
   s.files += %w( third_party/nanopb/pb.h )
   s.files += %w( third_party/nanopb/pb_common.h )
   s.files += %w( third_party/nanopb/pb_decode.h )
@@ -456,7 +456,7 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
   s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
-  s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c )
+  s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c )
   s.files += %w( third_party/nanopb/pb_common.c )
   s.files += %w( third_party/nanopb/pb_decode.c )
   s.files += %w( third_party/nanopb/pb_encode.c )
diff --git a/package.xml b/package.xml
index d192ebde2c..295901aaff 100644
--- a/package.xml
+++ b/package.xml
@@ -301,7 +301,7 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_decode.h" role="src" />
@@ -459,7 +459,7 @@
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_decode.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_encode.c" role="src" />
diff --git a/src/core/ext/lb_policy/grpclb/load_balancer_api.c b/src/core/ext/lb_policy/grpclb/load_balancer_api.c
index 459d6d9954..59b89997dd 100644
--- a/src/core/ext/lb_policy/grpclb/load_balancer_api.c
+++ b/src/core/ext/lb_policy/grpclb/load_balancer_api.c
@@ -50,7 +50,7 @@ static bool decode_serverlist(pb_istream_t *stream, const pb_field_t *field,
   decode_serverlist_arg *dec_arg = *arg;
   if (dec_arg->first_pass != 0) { /* first pass */
     grpc_grpclb_server server;
-    if (!pb_decode(stream, grpc_lb_v0_Server_fields, &server)) {
+    if (!pb_decode(stream, grpc_lb_v1_Server_fields, &server)) {
       return false;
     }
     dec_arg->num_servers++;
@@ -61,7 +61,7 @@ static bool decode_serverlist(pb_istream_t *stream, const pb_field_t *field,
       dec_arg->servers =
           gpr_malloc(sizeof(grpc_grpclb_server *) * dec_arg->num_servers);
     }
-    if (!pb_decode(stream, grpc_lb_v0_Server_fields, server)) {
+    if (!pb_decode(stream, grpc_lb_v1_Server_fields, server)) {
       return false;
     }
     dec_arg->servers[dec_arg->i++] = server;
@@ -87,13 +87,13 @@ gpr_slice grpc_grpclb_request_encode(const grpc_grpclb_request *request) {
   pb_ostream_t outputstream;
   gpr_slice slice;
   memset(&sizestream, 0, sizeof(pb_ostream_t));
-  pb_encode(&sizestream, grpc_lb_v0_LoadBalanceRequest_fields, request);
+  pb_encode(&sizestream, grpc_lb_v1_LoadBalanceRequest_fields, request);
   encoded_length = sizestream.bytes_written;
 
   slice = gpr_slice_malloc(encoded_length);
   outputstream =
       pb_ostream_from_buffer(GPR_SLICE_START_PTR(slice), encoded_length);
-  GPR_ASSERT(pb_encode(&outputstream, grpc_lb_v0_LoadBalanceRequest_fields,
+  GPR_ASSERT(pb_encode(&outputstream, grpc_lb_v1_LoadBalanceRequest_fields,
                        request) != 0);
   return slice;
 }
@@ -109,7 +109,7 @@ grpc_grpclb_response *grpc_grpclb_response_parse(gpr_slice encoded_response) {
                              GPR_SLICE_LENGTH(encoded_response));
   grpc_grpclb_response *res = gpr_malloc(sizeof(grpc_grpclb_response));
   memset(res, 0, sizeof(*res));
-  status = pb_decode(&stream, grpc_lb_v0_LoadBalanceResponse_fields, res);
+  status = pb_decode(&stream, grpc_lb_v1_LoadBalanceResponse_fields, res);
   if (!status) {
     grpc_grpclb_response_destroy(res);
     return NULL;
@@ -132,7 +132,7 @@ grpc_grpclb_serverlist *grpc_grpclb_response_parse_serverlist(
   res->server_list.servers.funcs.decode = decode_serverlist;
   res->server_list.servers.arg = &arg;
   arg.first_pass = 1;
-  status = pb_decode(&stream, grpc_lb_v0_LoadBalanceResponse_fields, res);
+  status = pb_decode(&stream, grpc_lb_v1_LoadBalanceResponse_fields, res);
   if (!status) {
     grpc_grpclb_response_destroy(res);
     return NULL;
@@ -140,7 +140,7 @@ grpc_grpclb_serverlist *grpc_grpclb_response_parse_serverlist(
 
   arg.first_pass = 0;
   status =
-      pb_decode(&stream_at_start, grpc_lb_v0_LoadBalanceResponse_fields, res);
+      pb_decode(&stream_at_start, grpc_lb_v1_LoadBalanceResponse_fields, res);
   if (!status) {
     grpc_grpclb_response_destroy(res);
     return NULL;
diff --git a/src/core/ext/lb_policy/grpclb/load_balancer_api.h b/src/core/ext/lb_policy/grpclb/load_balancer_api.h
index 968f7d278a..71b5616d0c 100644
--- a/src/core/ext/lb_policy/grpclb/load_balancer_api.h
+++ b/src/core/ext/lb_policy/grpclb/load_balancer_api.h
@@ -37,7 +37,7 @@
 #include <grpc/support/slice_buffer.h>
 
 #include "src/core/ext/client_config/lb_policy_factory.h"
-#include "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+#include "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -45,10 +45,10 @@ extern "C" {
 
 #define GRPC_GRPCLB_SERVICE_NAME_MAX_LENGTH 128
 
-typedef grpc_lb_v0_LoadBalanceRequest grpc_grpclb_request;
-typedef grpc_lb_v0_LoadBalanceResponse grpc_grpclb_response;
-typedef grpc_lb_v0_Server grpc_grpclb_server;
-typedef grpc_lb_v0_Duration grpc_grpclb_duration;
+typedef grpc_lb_v1_LoadBalanceRequest grpc_grpclb_request;
+typedef grpc_lb_v1_LoadBalanceResponse grpc_grpclb_response;
+typedef grpc_lb_v1_Server grpc_grpclb_server;
+typedef grpc_lb_v1_Duration grpc_grpclb_duration;
 typedef struct grpc_grpclb_serverlist {
   grpc_grpclb_server **servers;
   size_t num_servers;
diff --git a/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h b/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h
deleted file mode 100644
index 3599f881bb..0000000000
--- a/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-/* Automatically generated nanopb header */
-/* Generated by nanopb-0.3.5-dev */
-
-#ifndef PB_LOAD_BALANCER_PB_H_INCLUDED
-#define PB_LOAD_BALANCER_PB_H_INCLUDED
-#include "third_party/nanopb/pb.h"
-#if PB_PROTO_HEADER_VERSION != 30
-#error Regenerate this file with the current version of nanopb generator.
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Struct definitions */
-typedef struct _grpc_lb_v0_ClientStats {
-    bool has_total_requests;
-    int64_t total_requests;
-    bool has_client_rpc_errors;
-    int64_t client_rpc_errors;
-    bool has_dropped_requests;
-    int64_t dropped_requests;
-} grpc_lb_v0_ClientStats;
-
-typedef struct _grpc_lb_v0_Duration {
-    bool has_seconds;
-    int64_t seconds;
-    bool has_nanos;
-    int32_t nanos;
-} grpc_lb_v0_Duration;
-
-typedef struct _grpc_lb_v0_InitialLoadBalanceRequest {
-    bool has_name;
-    char name[128];
-} grpc_lb_v0_InitialLoadBalanceRequest;
-
-typedef PB_BYTES_ARRAY_T(64) grpc_lb_v0_Server_load_balance_token_t;
-typedef struct _grpc_lb_v0_Server {
-    bool has_ip_address;
-    char ip_address[46];
-    bool has_port;
-    int32_t port;
-    bool has_load_balance_token;
-    grpc_lb_v0_Server_load_balance_token_t load_balance_token;
-    bool has_drop_request;
-    bool drop_request;
-} grpc_lb_v0_Server;
-
-typedef struct _grpc_lb_v0_InitialLoadBalanceResponse {
-    bool has_client_config;
-    char client_config[64];
-    bool has_load_balancer_delegate;
-    char load_balancer_delegate[64];
-    bool has_client_stats_report_interval;
-    grpc_lb_v0_Duration client_stats_report_interval;
-} grpc_lb_v0_InitialLoadBalanceResponse;
-
-typedef struct _grpc_lb_v0_LoadBalanceRequest {
-    bool has_initial_request;
-    grpc_lb_v0_InitialLoadBalanceRequest initial_request;
-    bool has_client_stats;
-    grpc_lb_v0_ClientStats client_stats;
-} grpc_lb_v0_LoadBalanceRequest;
-
-typedef struct _grpc_lb_v0_ServerList {
-    pb_callback_t servers;
-    bool has_expiration_interval;
-    grpc_lb_v0_Duration expiration_interval;
-} grpc_lb_v0_ServerList;
-
-typedef struct _grpc_lb_v0_LoadBalanceResponse {
-    bool has_initial_response;
-    grpc_lb_v0_InitialLoadBalanceResponse initial_response;
-    bool has_server_list;
-    grpc_lb_v0_ServerList server_list;
-} grpc_lb_v0_LoadBalanceResponse;
-
-/* Default values for struct fields */
-
-/* Initializer values for message structs */
-#define grpc_lb_v0_Duration_init_default         {false, 0, false, 0}
-#define grpc_lb_v0_LoadBalanceRequest_init_default {false, grpc_lb_v0_InitialLoadBalanceRequest_init_default, false, grpc_lb_v0_ClientStats_init_default}
-#define grpc_lb_v0_InitialLoadBalanceRequest_init_default {false, ""}
-#define grpc_lb_v0_ClientStats_init_default      {false, 0, false, 0, false, 0}
-#define grpc_lb_v0_LoadBalanceResponse_init_default {false, grpc_lb_v0_InitialLoadBalanceResponse_init_default, false, grpc_lb_v0_ServerList_init_default}
-#define grpc_lb_v0_InitialLoadBalanceResponse_init_default {false, "", false, "", false, grpc_lb_v0_Duration_init_default}
-#define grpc_lb_v0_ServerList_init_default       {{{NULL}, NULL}, false, grpc_lb_v0_Duration_init_default}
-#define grpc_lb_v0_Server_init_default           {false, "", false, 0, false, {0, {0}}, false, 0}
-#define grpc_lb_v0_Duration_init_zero            {false, 0, false, 0}
-#define grpc_lb_v0_LoadBalanceRequest_init_zero  {false, grpc_lb_v0_InitialLoadBalanceRequest_init_zero, false, grpc_lb_v0_ClientStats_init_zero}
-#define grpc_lb_v0_InitialLoadBalanceRequest_init_zero {false, ""}
-#define grpc_lb_v0_ClientStats_init_zero         {false, 0, false, 0, false, 0}
-#define grpc_lb_v0_LoadBalanceResponse_init_zero {false, grpc_lb_v0_InitialLoadBalanceResponse_init_zero, false, grpc_lb_v0_ServerList_init_zero}
-#define grpc_lb_v0_InitialLoadBalanceResponse_init_zero {false, "", false, "", false, grpc_lb_v0_Duration_init_zero}
-#define grpc_lb_v0_ServerList_init_zero          {{{NULL}, NULL}, false, grpc_lb_v0_Duration_init_zero}
-#define grpc_lb_v0_Server_init_zero              {false, "", false, 0, false, {0, {0}}, false, 0}
-
-/* Field tags (for use in manual encoding/decoding) */
-#define grpc_lb_v0_ClientStats_total_requests_tag 1
-#define grpc_lb_v0_ClientStats_client_rpc_errors_tag 2
-#define grpc_lb_v0_ClientStats_dropped_requests_tag 3
-#define grpc_lb_v0_Duration_seconds_tag          1
-#define grpc_lb_v0_Duration_nanos_tag            2
-#define grpc_lb_v0_InitialLoadBalanceRequest_name_tag 1
-#define grpc_lb_v0_Server_ip_address_tag         1
-#define grpc_lb_v0_Server_port_tag               2
-#define grpc_lb_v0_Server_load_balance_token_tag 3
-#define grpc_lb_v0_Server_drop_request_tag       4
-#define grpc_lb_v0_InitialLoadBalanceResponse_client_config_tag 1
-#define grpc_lb_v0_InitialLoadBalanceResponse_load_balancer_delegate_tag 2
-#define grpc_lb_v0_InitialLoadBalanceResponse_client_stats_report_interval_tag 3
-#define grpc_lb_v0_LoadBalanceRequest_initial_request_tag 1
-#define grpc_lb_v0_LoadBalanceRequest_client_stats_tag 2
-#define grpc_lb_v0_ServerList_servers_tag        1
-#define grpc_lb_v0_ServerList_expiration_interval_tag 3
-#define grpc_lb_v0_LoadBalanceResponse_initial_response_tag 1
-#define grpc_lb_v0_LoadBalanceResponse_server_list_tag 2
-
-/* Struct field encoding specification for nanopb */
-extern const pb_field_t grpc_lb_v0_Duration_fields[3];
-extern const pb_field_t grpc_lb_v0_LoadBalanceRequest_fields[3];
-extern const pb_field_t grpc_lb_v0_InitialLoadBalanceRequest_fields[2];
-extern const pb_field_t grpc_lb_v0_ClientStats_fields[4];
-extern const pb_field_t grpc_lb_v0_LoadBalanceResponse_fields[3];
-extern const pb_field_t grpc_lb_v0_InitialLoadBalanceResponse_fields[4];
-extern const pb_field_t grpc_lb_v0_ServerList_fields[3];
-extern const pb_field_t grpc_lb_v0_Server_fields[5];
-
-/* Maximum encoded size of messages (where known) */
-#define grpc_lb_v0_Duration_size                 22
-#define grpc_lb_v0_LoadBalanceRequest_size       169
-#define grpc_lb_v0_InitialLoadBalanceRequest_size 131
-#define grpc_lb_v0_ClientStats_size              33
-#define grpc_lb_v0_LoadBalanceResponse_size      (165 + grpc_lb_v0_ServerList_size)
-#define grpc_lb_v0_InitialLoadBalanceResponse_size 156
-#define grpc_lb_v0_Server_size                   127
-
-/* Message IDs (where set with "msgid" option) */
-#ifdef PB_MSGID
-
-#define LOAD_BALANCER_MESSAGES \
-
-
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
diff --git a/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c b/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
similarity index 55%
rename from src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c
rename to src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
index 9719673181..52e11c40bb 100644
--- a/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c
+++ b/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c
@@ -33,7 +33,7 @@
 /* Automatically generated nanopb constant definitions */
 /* Generated by nanopb-0.3.5-dev */
 
-#include "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+#include "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
 
 #if PB_PROTO_HEADER_VERSION != 30
 #error Regenerate this file with the current version of nanopb generator.
@@ -41,54 +41,53 @@
 
 
 
-const pb_field_t grpc_lb_v0_Duration_fields[3] = {
-    PB_FIELD(  1, INT64   , OPTIONAL, STATIC  , FIRST, grpc_lb_v0_Duration, seconds, seconds, 0),
-    PB_FIELD(  2, INT32   , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_Duration, nanos, seconds, 0),
+const pb_field_t grpc_lb_v1_Duration_fields[3] = {
+    PB_FIELD(  1, INT64   , OPTIONAL, STATIC  , FIRST, grpc_lb_v1_Duration, seconds, seconds, 0),
+    PB_FIELD(  2, INT32   , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_Duration, nanos, seconds, 0),
     PB_LAST_FIELD
 };
 
-const pb_field_t grpc_lb_v0_LoadBalanceRequest_fields[3] = {
-    PB_FIELD(  1, MESSAGE , OPTIONAL, STATIC  , FIRST, grpc_lb_v0_LoadBalanceRequest, initial_request, initial_request, &grpc_lb_v0_InitialLoadBalanceRequest_fields),
-    PB_FIELD(  2, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_LoadBalanceRequest, client_stats, initial_request, &grpc_lb_v0_ClientStats_fields),
+const pb_field_t grpc_lb_v1_LoadBalanceRequest_fields[3] = {
+    PB_FIELD(  1, MESSAGE , OPTIONAL, STATIC  , FIRST, grpc_lb_v1_LoadBalanceRequest, initial_request, initial_request, &grpc_lb_v1_InitialLoadBalanceRequest_fields),
+    PB_FIELD(  2, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_LoadBalanceRequest, client_stats, initial_request, &grpc_lb_v1_ClientStats_fields),
     PB_LAST_FIELD
 };
 
-const pb_field_t grpc_lb_v0_InitialLoadBalanceRequest_fields[2] = {
-    PB_FIELD(  1, STRING  , OPTIONAL, STATIC  , FIRST, grpc_lb_v0_InitialLoadBalanceRequest, name, name, 0),
+const pb_field_t grpc_lb_v1_InitialLoadBalanceRequest_fields[2] = {
+    PB_FIELD(  1, STRING  , OPTIONAL, STATIC  , FIRST, grpc_lb_v1_InitialLoadBalanceRequest, name, name, 0),
     PB_LAST_FIELD
 };
 
-const pb_field_t grpc_lb_v0_ClientStats_fields[4] = {
-    PB_FIELD(  1, INT64   , OPTIONAL, STATIC  , FIRST, grpc_lb_v0_ClientStats, total_requests, total_requests, 0),
-    PB_FIELD(  2, INT64   , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_ClientStats, client_rpc_errors, total_requests, 0),
-    PB_FIELD(  3, INT64   , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_ClientStats, dropped_requests, client_rpc_errors, 0),
+const pb_field_t grpc_lb_v1_ClientStats_fields[4] = {
+    PB_FIELD(  1, INT64   , OPTIONAL, STATIC  , FIRST, grpc_lb_v1_ClientStats, total_requests, total_requests, 0),
+    PB_FIELD(  2, INT64   , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_ClientStats, client_rpc_errors, total_requests, 0),
+    PB_FIELD(  3, INT64   , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_ClientStats, dropped_requests, client_rpc_errors, 0),
     PB_LAST_FIELD
 };
 
-const pb_field_t grpc_lb_v0_LoadBalanceResponse_fields[3] = {
-    PB_FIELD(  1, MESSAGE , OPTIONAL, STATIC  , FIRST, grpc_lb_v0_LoadBalanceResponse, initial_response, initial_response, &grpc_lb_v0_InitialLoadBalanceResponse_fields),
-    PB_FIELD(  2, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_LoadBalanceResponse, server_list, initial_response, &grpc_lb_v0_ServerList_fields),
+const pb_field_t grpc_lb_v1_LoadBalanceResponse_fields[3] = {
+    PB_FIELD(  1, MESSAGE , OPTIONAL, STATIC  , FIRST, grpc_lb_v1_LoadBalanceResponse, initial_response, initial_response, &grpc_lb_v1_InitialLoadBalanceResponse_fields),
+    PB_FIELD(  2, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_LoadBalanceResponse, server_list, initial_response, &grpc_lb_v1_ServerList_fields),
     PB_LAST_FIELD
 };
 
-const pb_field_t grpc_lb_v0_InitialLoadBalanceResponse_fields[4] = {
-    PB_FIELD(  1, STRING  , OPTIONAL, STATIC  , FIRST, grpc_lb_v0_InitialLoadBalanceResponse, client_config, client_config, 0),
-    PB_FIELD(  2, STRING  , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_InitialLoadBalanceResponse, load_balancer_delegate, client_config, 0),
-    PB_FIELD(  3, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_InitialLoadBalanceResponse, client_stats_report_interval, load_balancer_delegate, &grpc_lb_v0_Duration_fields),
+const pb_field_t grpc_lb_v1_InitialLoadBalanceResponse_fields[3] = {
+    PB_FIELD(  2, STRING  , OPTIONAL, STATIC  , FIRST, grpc_lb_v1_InitialLoadBalanceResponse, load_balancer_delegate, load_balancer_delegate, 0),
+    PB_FIELD(  3, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_InitialLoadBalanceResponse, client_stats_report_interval, load_balancer_delegate, &grpc_lb_v1_Duration_fields),
     PB_LAST_FIELD
 };
 
-const pb_field_t grpc_lb_v0_ServerList_fields[3] = {
-    PB_FIELD(  1, MESSAGE , REPEATED, CALLBACK, FIRST, grpc_lb_v0_ServerList, servers, servers, &grpc_lb_v0_Server_fields),
-    PB_FIELD(  3, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_ServerList, expiration_interval, servers, &grpc_lb_v0_Duration_fields),
+const pb_field_t grpc_lb_v1_ServerList_fields[3] = {
+    PB_FIELD(  1, MESSAGE , REPEATED, CALLBACK, FIRST, grpc_lb_v1_ServerList, servers, servers, &grpc_lb_v1_Server_fields),
+    PB_FIELD(  3, MESSAGE , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_ServerList, expiration_interval, servers, &grpc_lb_v1_Duration_fields),
     PB_LAST_FIELD
 };
 
-const pb_field_t grpc_lb_v0_Server_fields[5] = {
-    PB_FIELD(  1, STRING  , OPTIONAL, STATIC  , FIRST, grpc_lb_v0_Server, ip_address, ip_address, 0),
-    PB_FIELD(  2, INT32   , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_Server, port, ip_address, 0),
-    PB_FIELD(  3, BYTES   , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_Server, load_balance_token, port, 0),
-    PB_FIELD(  4, BOOL    , OPTIONAL, STATIC  , OTHER, grpc_lb_v0_Server, drop_request, load_balance_token, 0),
+const pb_field_t grpc_lb_v1_Server_fields[5] = {
+    PB_FIELD(  1, STRING  , OPTIONAL, STATIC  , FIRST, grpc_lb_v1_Server, ip_address, ip_address, 0),
+    PB_FIELD(  2, INT32   , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_Server, port, ip_address, 0),
+    PB_FIELD(  3, STRING  , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_Server, load_balance_token, port, 0),
+    PB_FIELD(  4, BOOL    , OPTIONAL, STATIC  , OTHER, grpc_lb_v1_Server, drop_request, load_balance_token, 0),
     PB_LAST_FIELD
 };
 
@@ -102,7 +101,7 @@ const pb_field_t grpc_lb_v0_Server_fields[5] = {
  * numbers or field sizes that are larger than what can fit in 8 or 16 bit
  * field descriptors.
  */
-PB_STATIC_ASSERT((pb_membersize(grpc_lb_v0_LoadBalanceRequest, initial_request) < 65536 && pb_membersize(grpc_lb_v0_LoadBalanceRequest, client_stats) < 65536 && pb_membersize(grpc_lb_v0_LoadBalanceResponse, initial_response) < 65536 && pb_membersize(grpc_lb_v0_LoadBalanceResponse, server_list) < 65536 && pb_membersize(grpc_lb_v0_InitialLoadBalanceResponse, client_stats_report_interval) < 65536 && pb_membersize(grpc_lb_v0_ServerList, servers) < 65536 && pb_membersize(grpc_lb_v0_ServerList, expiration_interval) < 65536), YOU_MUST_DEFINE_PB_FIELD_32BIT_FOR_MESSAGES_grpc_lb_v0_Duration_grpc_lb_v0_LoadBalanceRequest_grpc_lb_v0_InitialLoadBalanceRequest_grpc_lb_v0_ClientStats_grpc_lb_v0_LoadBalanceResponse_grpc_lb_v0_InitialLoadBalanceResponse_grpc_lb_v0_ServerList_grpc_lb_v0_Server)
+PB_STATIC_ASSERT((pb_membersize(grpc_lb_v1_LoadBalanceRequest, initial_request) < 65536 && pb_membersize(grpc_lb_v1_LoadBalanceRequest, client_stats) < 65536 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, initial_response) < 65536 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, server_list) < 65536 && pb_membersize(grpc_lb_v1_InitialLoadBalanceResponse, client_stats_report_interval) < 65536 && pb_membersize(grpc_lb_v1_ServerList, servers) < 65536 && pb_membersize(grpc_lb_v1_ServerList, expiration_interval) < 65536), YOU_MUST_DEFINE_PB_FIELD_32BIT_FOR_MESSAGES_grpc_lb_v1_Duration_grpc_lb_v1_LoadBalanceRequest_grpc_lb_v1_InitialLoadBalanceRequest_grpc_lb_v1_ClientStats_grpc_lb_v1_LoadBalanceResponse_grpc_lb_v1_InitialLoadBalanceResponse_grpc_lb_v1_ServerList_grpc_lb_v1_Server)
 #endif
 
 #if !defined(PB_FIELD_16BIT) && !defined(PB_FIELD_32BIT)
@@ -113,7 +112,7 @@ PB_STATIC_ASSERT((pb_membersize(grpc_lb_v0_LoadBalanceRequest, initial_request)
  * numbers or field sizes that are larger than what can fit in the default
  * 8 bit descriptors.
  */
-PB_STATIC_ASSERT((pb_membersize(grpc_lb_v0_LoadBalanceRequest, initial_request) < 256 && pb_membersize(grpc_lb_v0_LoadBalanceRequest, client_stats) < 256 && pb_membersize(grpc_lb_v0_LoadBalanceResponse, initial_response) < 256 && pb_membersize(grpc_lb_v0_LoadBalanceResponse, server_list) < 256 && pb_membersize(grpc_lb_v0_InitialLoadBalanceResponse, client_stats_report_interval) < 256 && pb_membersize(grpc_lb_v0_ServerList, servers) < 256 && pb_membersize(grpc_lb_v0_ServerList, expiration_interval) < 256), YOU_MUST_DEFINE_PB_FIELD_16BIT_FOR_MESSAGES_grpc_lb_v0_Duration_grpc_lb_v0_LoadBalanceRequest_grpc_lb_v0_InitialLoadBalanceRequest_grpc_lb_v0_ClientStats_grpc_lb_v0_LoadBalanceResponse_grpc_lb_v0_InitialLoadBalanceResponse_grpc_lb_v0_ServerList_grpc_lb_v0_Server)
+PB_STATIC_ASSERT((pb_membersize(grpc_lb_v1_LoadBalanceRequest, initial_request) < 256 && pb_membersize(grpc_lb_v1_LoadBalanceRequest, client_stats) < 256 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, initial_response) < 256 && pb_membersize(grpc_lb_v1_LoadBalanceResponse, server_list) < 256 && pb_membersize(grpc_lb_v1_InitialLoadBalanceResponse, client_stats_report_interval) < 256 && pb_membersize(grpc_lb_v1_ServerList, servers) < 256 && pb_membersize(grpc_lb_v1_ServerList, expiration_interval) < 256), YOU_MUST_DEFINE_PB_FIELD_16BIT_FOR_MESSAGES_grpc_lb_v1_Duration_grpc_lb_v1_LoadBalanceRequest_grpc_lb_v1_InitialLoadBalanceRequest_grpc_lb_v1_ClientStats_grpc_lb_v1_LoadBalanceResponse_grpc_lb_v1_InitialLoadBalanceResponse_grpc_lb_v1_ServerList_grpc_lb_v1_Server)
 #endif
 
 
diff --git a/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h b/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
new file mode 100644
index 0000000000..d5dc39ab94
--- /dev/null
+++ b/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h
@@ -0,0 +1,178 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+/* Automatically generated nanopb header */
+/* Generated by nanopb-0.3.5-dev */
+
+#ifndef PB_LOAD_BALANCER_PB_H_INCLUDED
+#define PB_LOAD_BALANCER_PB_H_INCLUDED
+#include "third_party/nanopb/pb.h"
+#if PB_PROTO_HEADER_VERSION != 30
+#error Regenerate this file with the current version of nanopb generator.
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Struct definitions */
+typedef struct _grpc_lb_v1_ClientStats {
+    bool has_total_requests;
+    int64_t total_requests;
+    bool has_client_rpc_errors;
+    int64_t client_rpc_errors;
+    bool has_dropped_requests;
+    int64_t dropped_requests;
+} grpc_lb_v1_ClientStats;
+
+typedef struct _grpc_lb_v1_Duration {
+    bool has_seconds;
+    int64_t seconds;
+    bool has_nanos;
+    int32_t nanos;
+} grpc_lb_v1_Duration;
+
+typedef struct _grpc_lb_v1_InitialLoadBalanceRequest {
+    bool has_name;
+    char name[128];
+} grpc_lb_v1_InitialLoadBalanceRequest;
+
+typedef struct _grpc_lb_v1_Server {
+    bool has_ip_address;
+    char ip_address[46];
+    bool has_port;
+    int32_t port;
+    bool has_load_balance_token;
+    char load_balance_token[64];
+    bool has_drop_request;
+    bool drop_request;
+} grpc_lb_v1_Server;
+
+typedef struct _grpc_lb_v1_InitialLoadBalanceResponse {
+    bool has_load_balancer_delegate;
+    char load_balancer_delegate[64];
+    bool has_client_stats_report_interval;
+    grpc_lb_v1_Duration client_stats_report_interval;
+} grpc_lb_v1_InitialLoadBalanceResponse;
+
+typedef struct _grpc_lb_v1_LoadBalanceRequest {
+    bool has_initial_request;
+    grpc_lb_v1_InitialLoadBalanceRequest initial_request;
+    bool has_client_stats;
+    grpc_lb_v1_ClientStats client_stats;
+} grpc_lb_v1_LoadBalanceRequest;
+
+typedef struct _grpc_lb_v1_ServerList {
+    pb_callback_t servers;
+    bool has_expiration_interval;
+    grpc_lb_v1_Duration expiration_interval;
+} grpc_lb_v1_ServerList;
+
+typedef struct _grpc_lb_v1_LoadBalanceResponse {
+    bool has_initial_response;
+    grpc_lb_v1_InitialLoadBalanceResponse initial_response;
+    bool has_server_list;
+    grpc_lb_v1_ServerList server_list;
+} grpc_lb_v1_LoadBalanceResponse;
+
+/* Default values for struct fields */
+
+/* Initializer values for message structs */
+#define grpc_lb_v1_Duration_init_default         {false, 0, false, 0}
+#define grpc_lb_v1_LoadBalanceRequest_init_default {false, grpc_lb_v1_InitialLoadBalanceRequest_init_default, false, grpc_lb_v1_ClientStats_init_default}
+#define grpc_lb_v1_InitialLoadBalanceRequest_init_default {false, ""}
+#define grpc_lb_v1_ClientStats_init_default      {false, 0, false, 0, false, 0}
+#define grpc_lb_v1_LoadBalanceResponse_init_default {false, grpc_lb_v1_InitialLoadBalanceResponse_init_default, false, grpc_lb_v1_ServerList_init_default}
+#define grpc_lb_v1_InitialLoadBalanceResponse_init_default {false, "", false, grpc_lb_v1_Duration_init_default}
+#define grpc_lb_v1_ServerList_init_default       {{{NULL}, NULL}, false, grpc_lb_v1_Duration_init_default}
+#define grpc_lb_v1_Server_init_default           {false, "", false, 0, false, "", false, 0}
+#define grpc_lb_v1_Duration_init_zero            {false, 0, false, 0}
+#define grpc_lb_v1_LoadBalanceRequest_init_zero  {false, grpc_lb_v1_InitialLoadBalanceRequest_init_zero, false, grpc_lb_v1_ClientStats_init_zero}
+#define grpc_lb_v1_InitialLoadBalanceRequest_init_zero {false, ""}
+#define grpc_lb_v1_ClientStats_init_zero         {false, 0, false, 0, false, 0}
+#define grpc_lb_v1_LoadBalanceResponse_init_zero {false, grpc_lb_v1_InitialLoadBalanceResponse_init_zero, false, grpc_lb_v1_ServerList_init_zero}
+#define grpc_lb_v1_InitialLoadBalanceResponse_init_zero {false, "", false, grpc_lb_v1_Duration_init_zero}
+#define grpc_lb_v1_ServerList_init_zero          {{{NULL}, NULL}, false, grpc_lb_v1_Duration_init_zero}
+#define grpc_lb_v1_Server_init_zero              {false, "", false, 0, false, "", false, 0}
+
+/* Field tags (for use in manual encoding/decoding) */
+#define grpc_lb_v1_ClientStats_total_requests_tag 1
+#define grpc_lb_v1_ClientStats_client_rpc_errors_tag 2
+#define grpc_lb_v1_ClientStats_dropped_requests_tag 3
+#define grpc_lb_v1_Duration_seconds_tag          1
+#define grpc_lb_v1_Duration_nanos_tag            2
+#define grpc_lb_v1_InitialLoadBalanceRequest_name_tag 1
+#define grpc_lb_v1_Server_ip_address_tag         1
+#define grpc_lb_v1_Server_port_tag               2
+#define grpc_lb_v1_Server_load_balance_token_tag 3
+#define grpc_lb_v1_Server_drop_request_tag       4
+#define grpc_lb_v1_InitialLoadBalanceResponse_load_balancer_delegate_tag 2
+#define grpc_lb_v1_InitialLoadBalanceResponse_client_stats_report_interval_tag 3
+#define grpc_lb_v1_LoadBalanceRequest_initial_request_tag 1
+#define grpc_lb_v1_LoadBalanceRequest_client_stats_tag 2
+#define grpc_lb_v1_ServerList_servers_tag        1
+#define grpc_lb_v1_ServerList_expiration_interval_tag 3
+#define grpc_lb_v1_LoadBalanceResponse_initial_response_tag 1
+#define grpc_lb_v1_LoadBalanceResponse_server_list_tag 2
+
+/* Struct field encoding specification for nanopb */
+extern const pb_field_t grpc_lb_v1_Duration_fields[3];
+extern const pb_field_t grpc_lb_v1_LoadBalanceRequest_fields[3];
+extern const pb_field_t grpc_lb_v1_InitialLoadBalanceRequest_fields[2];
+extern const pb_field_t grpc_lb_v1_ClientStats_fields[4];
+extern const pb_field_t grpc_lb_v1_LoadBalanceResponse_fields[3];
+extern const pb_field_t grpc_lb_v1_InitialLoadBalanceResponse_fields[3];
+extern const pb_field_t grpc_lb_v1_ServerList_fields[3];
+extern const pb_field_t grpc_lb_v1_Server_fields[5];
+
+/* Maximum encoded size of messages (where known) */
+#define grpc_lb_v1_Duration_size                 22
+#define grpc_lb_v1_LoadBalanceRequest_size       169
+#define grpc_lb_v1_InitialLoadBalanceRequest_size 131
+#define grpc_lb_v1_ClientStats_size              33
+#define grpc_lb_v1_LoadBalanceResponse_size      (98 + grpc_lb_v1_ServerList_size)
+#define grpc_lb_v1_InitialLoadBalanceResponse_size 90
+#define grpc_lb_v1_Server_size                   127
+
+/* Message IDs (where set with "msgid" option) */
+#ifdef PB_MSGID
+
+#define LOAD_BALANCER_MESSAGES \
+
+
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/src/proto/grpc/lb/v0/load_balancer.options b/src/proto/grpc/lb/v0/load_balancer.options
deleted file mode 100644
index 6d4528f838..0000000000
--- a/src/proto/grpc/lb/v0/load_balancer.options
+++ /dev/null
@@ -1,6 +0,0 @@
-grpc.lb.v0.InitialLoadBalanceRequest.name max_size:128
-grpc.lb.v0.InitialLoadBalanceResponse.client_config max_size:64
-grpc.lb.v0.InitialLoadBalanceResponse.load_balancer_delegate max_size:64
-grpc.lb.v0.Server.ip_address max_size:46
-grpc.lb.v0.Server.load_balance_token max_size:64
-load_balancer.proto no_unions:true
diff --git a/src/proto/grpc/lb/v1/load_balancer.options b/src/proto/grpc/lb/v1/load_balancer.options
new file mode 100644
index 0000000000..d90366996e
--- /dev/null
+++ b/src/proto/grpc/lb/v1/load_balancer.options
@@ -0,0 +1,6 @@
+grpc.lb.v1.InitialLoadBalanceRequest.name max_size:128
+grpc.lb.v1.InitialLoadBalanceResponse.client_config max_size:64
+grpc.lb.v1.InitialLoadBalanceResponse.load_balancer_delegate max_size:64
+grpc.lb.v1.Server.ip_address max_size:46
+grpc.lb.v1.Server.load_balance_token max_size:64
+load_balancer.proto no_unions:true
diff --git a/src/proto/grpc/lb/v0/load_balancer.proto b/src/proto/grpc/lb/v1/load_balancer.proto
similarity index 94%
rename from src/proto/grpc/lb/v0/load_balancer.proto
rename to src/proto/grpc/lb/v1/load_balancer.proto
index e88a4f8c4a..1bcad0b1d4 100644
--- a/src/proto/grpc/lb/v0/load_balancer.proto
+++ b/src/proto/grpc/lb/v1/load_balancer.proto
@@ -29,7 +29,7 @@
 
 syntax = "proto3";
 
-package grpc.lb.v0;
+package grpc.lb.v1;
 
 message Duration {
 
@@ -94,9 +94,8 @@ message LoadBalanceResponse {
 
 message InitialLoadBalanceResponse {
   oneof initial_response_type {
-    // Contains gRPC config options like RPC deadline or flow control.
-    // TODO(yetianx): Change to ClientConfig after it is defined.
-    string client_config = 1;
+    // TODO(zhangkun83): ClientConfig not yet defined
+    //ClientConfig client_config = 1;
 
     // This is an application layer redirect that indicates the client should
     // use the specified server for load balancing. When this field is set in
@@ -134,9 +133,7 @@ message Server {
   // An opaque token that is passed from the client to the server in metadata.
   // The server may expect this token to indicate that the request from the
   // client was load balanced.
-  // TODO(yetianx): Not used right now, and will be used after implementing
-  // load report.
-  bytes load_balance_token = 3;
+  string load_balance_token = 3;
 
   // Indicates whether this particular request should be dropped by the client
   // when this server is chosen from the list.
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index c5a0a398b4..e1fe5fc1f6 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -221,7 +221,7 @@ CORE_SOURCE_FILES = [
   'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
   'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
-  'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
+  'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
   'third_party/nanopb/pb_common.c',
   'third_party/nanopb/pb_decode.c',
   'third_party/nanopb/pb_encode.c',
diff --git a/test/cpp/grpclb/grpclb_api_test.cc b/test/cpp/grpclb/grpclb_api_test.cc
index 92f93c869c..bf77878e0a 100644
--- a/test/cpp/grpclb/grpclb_api_test.cc
+++ b/test/cpp/grpclb/grpclb_api_test.cc
@@ -35,13 +35,13 @@
 #include <string>
 
 #include "src/core/ext/lb_policy/grpclb/load_balancer_api.h"
-#include "src/proto/grpc/lb/v0/load_balancer.pb.h"  // C++ version
+#include "src/proto/grpc/lb/v1/load_balancer.pb.h"  // C++ version
 
 namespace grpc {
 namespace {
 
-using grpc::lb::v0::LoadBalanceRequest;
-using grpc::lb::v0::LoadBalanceResponse;
+using grpc::lb::v1::LoadBalanceRequest;
+using grpc::lb::v1::LoadBalanceResponse;
 
 class GrpclbTest : public ::testing::Test {};
 
@@ -60,9 +60,7 @@ TEST_F(GrpclbTest, CreateRequest) {
 
 TEST_F(GrpclbTest, ParseResponse) {
   LoadBalanceResponse response;
-  const std::string client_config_str = "I'm a client config";
   auto* initial_response = response.mutable_initial_response();
-  initial_response->set_client_config(client_config_str);
   auto* client_stats_report_interval =
       initial_response->mutable_client_stats_report_interval();
   client_stats_report_interval->set_seconds(123);
@@ -73,10 +71,7 @@ TEST_F(GrpclbTest, ParseResponse) {
       gpr_slice_from_copied_string(encoded_response.c_str());
   grpc_grpclb_response* c_response = grpc_grpclb_response_parse(encoded_slice);
   EXPECT_TRUE(c_response->has_initial_response);
-  EXPECT_TRUE(c_response->initial_response.has_client_config);
   EXPECT_FALSE(c_response->initial_response.has_load_balancer_delegate);
-  EXPECT_TRUE(strcmp(c_response->initial_response.client_config,
-                     client_config_str.c_str()) == 0);
   EXPECT_EQ(c_response->initial_response.client_stats_report_interval.seconds,
             123);
   EXPECT_EQ(c_response->initial_response.client_stats_report_interval.nanos,
diff --git a/tools/codegen/core/gen_nano_proto.sh b/tools/codegen/core/gen_nano_proto.sh
index e2d2f672e9..b216a20379 100755
--- a/tools/codegen/core/gen_nano_proto.sh
+++ b/tools/codegen/core/gen_nano_proto.sh
@@ -29,11 +29,11 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-#
 # Example usage:
 #   tools/codegen/core/gen_nano_proto.sh \
-#     src/proto/grpc/lb/v0/load_balancer.proto
-#     $PWD/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0
+#     src/proto/grpc/lb/v1/load_balancer.proto \
+#     $PWD/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1 \
+#     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1
 #
 # Exit statuses:
 # 1: Incorrect number of arguments
diff --git a/tools/distrib/check_include_guards.py b/tools/distrib/check_include_guards.py
index 897a899e7e..b1fdb942cd 100755
--- a/tools/distrib/check_include_guards.py
+++ b/tools/distrib/check_include_guards.py
@@ -169,7 +169,7 @@ argp.add_argument('--precommit',
 args = argp.parse_args()
 
 KNOWN_BAD = set([
-    'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
+    'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
 ])
 
 
diff --git a/tools/distrib/check_nanopb_output.sh b/tools/distrib/check_nanopb_output.sh
index 92cb8ecbb4..c0707051a6 100755
--- a/tools/distrib/check_nanopb_output.sh
+++ b/tools/distrib/check_nanopb_output.sh
@@ -58,15 +58,15 @@ popd
 #
 # Checks for load_balancer.proto
 #
-readonly LOAD_BALANCER_GRPC_OUTPUT_PATH='src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0'
+readonly LOAD_BALANCER_GRPC_OUTPUT_PATH='src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1'
 # nanopb-compile the proto to a temp location
 ./tools/codegen/core/gen_nano_proto.sh \
-  src/proto/grpc/lb/v0/load_balancer.proto \
+  src/proto/grpc/lb/v1/load_balancer.proto \
   "$NANOPB_TMP_OUTPUT" \
   "$LOAD_BALANCER_GRPC_OUTPUT_PATH"
 
 # compare outputs to checked compiled code
-if ! diff -r $NANOPB_TMP_OUTPUT src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0; then
+if ! diff -r $NANOPB_TMP_OUTPUT src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1; then
   echo "Outputs differ: $NANOPB_TMP_OUTPUT vs $LOAD_BALANCER_GRPC_OUTPUT_PATH"
   exit 2
 fi
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 3a774a70d6..ebf573d3b2 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -913,7 +913,7 @@ src/core/ext/client_config/subchannel_call_holder.h \
 src/core/ext/client_config/subchannel_index.h \
 src/core/ext/client_config/uri_parser.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
-src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \
+src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h \
 third_party/nanopb/pb.h \
 third_party/nanopb/pb_common.h \
 third_party/nanopb/pb_decode.h \
@@ -1071,7 +1071,7 @@ src/core/ext/client_config/uri_parser.c \
 src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
 src/core/ext/transport/chttp2/client/insecure/channel_create.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
-src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
+src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
 third_party/nanopb/pb_common.c \
 third_party/nanopb/pb_decode.c \
 third_party/nanopb/pb_encode.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 38e68f3b1a..2599df2303 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -2201,8 +2201,8 @@
       "grpc_test_util"
     ], 
     "headers": [
-      "src/proto/grpc/lb/v0/load_balancer.grpc.pb.h", 
-      "src/proto/grpc/lb/v0/load_balancer.pb.h"
+      "src/proto/grpc/lb/v1/load_balancer.grpc.pb.h", 
+      "src/proto/grpc/lb/v1/load_balancer.pb.h"
     ], 
     "language": "c++", 
     "name": "grpclb_api_test", 
@@ -5860,15 +5860,15 @@
     ], 
     "headers": [
       "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
     ], 
     "language": "c", 
     "name": "grpc_lb_policy_grpclb", 
     "src": [
       "src/core/ext/lb_policy/grpclb/load_balancer_api.c", 
       "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c", 
+      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h"
     ], 
     "third_party": false, 
     "type": "filegroup"
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 4eec05a3b1..26109c7102 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -422,7 +422,7 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_common.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_decode.h" />
@@ -729,7 +729,7 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\nanopb\pb_common.c">
     </ClCompile>
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 17c88c4805..8d7072b04a 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -442,8 +442,8 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
-      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0</Filter>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.c">
+      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1</Filter>
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\nanopb\pb_common.c">
       <Filter>third_party\nanopb</Filter>
@@ -959,8 +959,8 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h">
-      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0</Filter>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.h">
+      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1</Filter>
     </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h">
       <Filter>third_party\nanopb</Filter>
@@ -1037,8 +1037,8 @@
     <Filter Include="src\core\ext\lb_policy\grpclb\proto\grpc\lb">
       <UniqueIdentifier>{adf7e553-94ef-14fd-e845-03104f00a06f}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0">
-      <UniqueIdentifier>{0406d191-8817-38c3-a562-e3541201f424}</UniqueIdentifier>
+    <Filter Include="src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1">
+      <UniqueIdentifier>{bc357e2d-8ddd-a688-88a3-255228fc0818}</UniqueIdentifier>
     </Filter>
     <Filter Include="src\core\ext\lb_policy\pick_first">
       <UniqueIdentifier>{b63ded00-b24f-708e-333f-ce199e421875}</UniqueIdentifier>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 26050dcf74..31ab8f4ba4 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -397,7 +397,7 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_common.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_decode.h" />
@@ -668,7 +668,7 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\nanopb\pb_common.c">
     </ClCompile>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index a4acf513bc..869d92c738 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -388,8 +388,8 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
-      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0</Filter>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.c">
+      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1</Filter>
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\third_party\nanopb\pb_common.c">
       <Filter>third_party\nanopb</Filter>
@@ -851,8 +851,8 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h">
-      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0</Filter>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.h">
+      <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1</Filter>
     </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h">
       <Filter>third_party\nanopb</Filter>
@@ -929,8 +929,8 @@
     <Filter Include="src\core\ext\lb_policy\grpclb\proto\grpc\lb">
       <UniqueIdentifier>{21858d9d-30b5-8847-5882-6b47df0fa293}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0">
-      <UniqueIdentifier>{1795a20b-3e7c-e27d-eae1-96582fa9a958}</UniqueIdentifier>
+    <Filter Include="src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1">
+      <UniqueIdentifier>{e9256e96-ea3d-c1fd-6426-9d53d9f08f66}</UniqueIdentifier>
     </Filter>
     <Filter Include="src\core\ext\lb_policy\pick_first">
       <UniqueIdentifier>{e27f9ecf-97bb-1a2e-3135-a41f732dcf55}</UniqueIdentifier>
diff --git a/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj b/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj
index 1509ece9f9..91b11a1f0f 100644
--- a/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj
+++ b/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj
@@ -160,13 +160,13 @@
   </ItemDefinitionGroup>
 
   <ItemGroup>
-    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\lb\v0\load_balancer.pb.cc">
+    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\lb\v1\load_balancer.pb.cc">
     </ClCompile>
-    <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\lb\v0\load_balancer.pb.h">
+    <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\lb\v1\load_balancer.pb.h">
     </ClInclude>
-    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\lb\v0\load_balancer.grpc.pb.cc">
+    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\lb\v1\load_balancer.grpc.pb.cc">
     </ClCompile>
-    <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\lb\v0\load_balancer.grpc.pb.h">
+    <ClInclude Include="$(SolutionDir)\..\src\proto\grpc\lb\v1\load_balancer.grpc.pb.h">
     </ClInclude>
     <ClCompile Include="$(SolutionDir)\..\test\cpp\grpclb\grpclb_api_test.cc">
     </ClCompile>
diff --git a/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj.filters b/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj.filters
index 6c57b8c162..50f0a3eac2 100644
--- a/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj.filters
+++ b/vsprojects/vcxproj/test/grpclb_api_test/grpclb_api_test.vcxproj.filters
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
-    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\lb\v0\load_balancer.proto">
-      <Filter>src\proto\grpc\lb\v0</Filter>
+    <ClCompile Include="$(SolutionDir)\..\src\proto\grpc\lb\v1\load_balancer.proto">
+      <Filter>src\proto\grpc\lb\v1</Filter>
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\test\cpp\grpclb\grpclb_api_test.cc">
       <Filter>test\cpp\grpclb</Filter>
@@ -22,8 +22,8 @@
     <Filter Include="src\proto\grpc\lb">
       <UniqueIdentifier>{2981699e-c196-c599-bc17-c177770f89ee}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\proto\grpc\lb\v0">
-      <UniqueIdentifier>{3d04774a-1c2f-e100-435e-08af5d539250}</UniqueIdentifier>
+    <Filter Include="src\proto\grpc\lb\v1">
+      <UniqueIdentifier>{6cce8ddf-d9a9-1d71-0810-d1e6f8685d76}</UniqueIdentifier>
     </Filter>
     <Filter Include="test">
       <UniqueIdentifier>{64736e1d-eb77-664f-34ab-6cf41263d3d8}</UniqueIdentifier>
-- 
GitLab


From eb913107f75073f24e0ade0fd18f526195db78b7 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Mon, 25 Apr 2016 17:30:04 -0700
Subject: [PATCH 189/525] Init tracers after plugin registration

---
 src/core/lib/surface/init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index 03f379aba8..d7ee122f87 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -167,7 +167,6 @@ void grpc_init(void) {
     grpc_security_pre_init();
     grpc_iomgr_init();
     grpc_executor_init();
-    grpc_tracer_init("GRPC_TRACE");
     gpr_timers_global_init();
     grpc_cq_global_init();
     for (i = 0; i < g_number_of_plugins; i++) {
@@ -179,6 +178,7 @@ void grpc_init(void) {
      * at the appropriate time */
     grpc_register_security_filters();
     register_builtin_channel_init();
+    grpc_tracer_init("GRPC_TRACE");
     /* no more changes to channel init pipelines */
     grpc_channel_init_finalize();
   }
-- 
GitLab


From b695b9b035472ee4ce7454eb7c8e3b8914021a27 Mon Sep 17 00:00:00 2001
From: Wouter van Oortmerssen <wvo@google.com>
Date: Wed, 13 Apr 2016 18:18:08 -0700
Subject: [PATCH 190/525] Some additional fixes to make the C++ codegen not
 depend on protobuf.

---
 src/compiler/cpp_generator.cc | 21 +++++++++++----------
 src/compiler/cpp_generator.h  |  3 +++
 src/compiler/cpp_plugin.cc    |  5 +++++
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index b133699306..9319c41934 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -86,7 +86,7 @@ void PrintIncludes(Printer *printer, const std::vector<grpc::string>& headers, c
   }
 }
 
-grpc::string GetHeaderPrologue(File *file, const Parameters &params) {
+grpc::string GetHeaderPrologue(File *file, const Parameters & /*params*/) {
   grpc::string output;
   {
     // Scope the output stream so it closes and finalizes output to the string.
@@ -96,6 +96,7 @@ grpc::string GetHeaderPrologue(File *file, const Parameters &params) {
     vars["filename"] = file->filename();
     vars["filename_identifier"] = FilenameIdentifier(file->filename());
     vars["filename_base"] = file->filename_without_ext();
+    vars["message_header_ext"] = file->message_header_ext();
 
     printer->Print(vars, "// Generated by the gRPC protobuf plugin.\n");
     printer->Print(vars,
@@ -104,7 +105,7 @@ grpc::string GetHeaderPrologue(File *file, const Parameters &params) {
     printer->Print(vars, "#ifndef GRPC_$filename_identifier$__INCLUDED\n");
     printer->Print(vars, "#define GRPC_$filename_identifier$__INCLUDED\n");
     printer->Print(vars, "\n");
-    printer->Print(vars, "#include \"$filename_base$.pb.h\"\n");
+    printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n");
     printer->Print(vars, "\n");
   }
   return output;
@@ -794,8 +795,7 @@ grpc::string GetHeaderServices(File *file,
   return output;
 }
 
-grpc::string GetHeaderEpilogue(File *file,
-                               const Parameters &params) {
+grpc::string GetHeaderEpilogue(File *file, const Parameters & /*params*/) {
   grpc::string output;
   {
     // Scope the output stream so it closes and finalizes output to the string.
@@ -821,8 +821,7 @@ grpc::string GetHeaderEpilogue(File *file,
   return output;
 }
 
-grpc::string GetSourcePrologue(File *file,
-                               const Parameters &params) {
+grpc::string GetSourcePrologue(File *file, const Parameters & /*params*/) {
   grpc::string output;
   {
     // Scope the output stream so it closes and finalizes output to the string.
@@ -831,13 +830,16 @@ grpc::string GetSourcePrologue(File *file,
 
     vars["filename"] = file->filename();
     vars["filename_base"] = file->filename_without_ext();
+    vars["message_header_ext"] = file->message_header_ext();
+    vars["service_header_ext"] = file->service_header_ext();
 
     printer->Print(vars, "// Generated by the gRPC protobuf plugin.\n");
     printer->Print(vars,
                   "// If you make any local change, they will be lost.\n");
     printer->Print(vars, "// source: $filename$\n\n");
-    printer->Print(vars, "#include \"$filename_base$.pb.h\"\n");
-    printer->Print(vars, "#include \"$filename_base$.grpc.pb.h\"\n");
+    printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n");
+    printer->Print(vars, "#include \"$filename_base$$service_header_ext$\"\n");
+    printer->Print(vars, file->additional_headers().c_str());
     printer->Print(vars, "\n");
   }
   return output;
@@ -1180,8 +1182,7 @@ grpc::string GetSourceServices(File *file,
   return output;
 }
 
-grpc::string GetSourceEpilogue(File *file,
-                               const Parameters &params) {
+grpc::string GetSourceEpilogue(File *file, const Parameters & /*params*/) {
   grpc::string temp;
 
   if (!file->package().empty()) {
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index 99a60a2eae..953ddfd569 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -106,8 +106,11 @@ struct File {
 
   virtual grpc::string filename() const = 0;
   virtual grpc::string filename_without_ext() const = 0;
+  virtual grpc::string message_header_ext() const = 0;
+  virtual grpc::string service_header_ext() const = 0;
   virtual grpc::string package() const = 0;
   virtual std::vector<grpc::string> package_parts() const = 0;
+  virtual grpc::string additional_headers() const = 0;
 
   virtual int service_count() const = 0;
   virtual std::unique_ptr<const Service> service(int i) const = 0;
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index f703c6453d..e321c64639 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -120,11 +120,16 @@ class ProtoBufFile : public grpc_cpp_generator::File {
     return grpc_generator::StripProto(filename());
   }
 
+  grpc::string message_header_ext() const { return ".pb.h"; }
+  grpc::string service_header_ext() const { return ".grpc.pb.h"; }
+
   grpc::string package() const { return file_->package(); }
   std::vector<grpc::string> package_parts() const {
     return grpc_generator::tokenize(package(), ".");
   }
 
+  grpc::string additional_headers() const { return ""; }
+
   int service_count() const { return file_->service_count(); };
   std::unique_ptr<const grpc_cpp_generator::Service> service(int i) const {
     return std::unique_ptr<const grpc_cpp_generator::Service> (
-- 
GitLab


From deadbcdab185e237990dbb2e1ac46f4f1cff3672 Mon Sep 17 00:00:00 2001
From: Eric Richardson <ewr@squareup.com>
Date: Fri, 22 Apr 2016 10:31:47 -0400
Subject: [PATCH 191/525] Wrap delegate line to fix a Rubocop error about line
 length

---
 src/ruby/lib/grpc/generic/active_call.rb | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/ruby/lib/grpc/generic/active_call.rb b/src/ruby/lib/grpc/generic/active_call.rb
index 4bc95dd78a..4f4a145a8b 100644
--- a/src/ruby/lib/grpc/generic/active_call.rb
+++ b/src/ruby/lib/grpc/generic/active_call.rb
@@ -59,7 +59,8 @@ module GRPC
     include Core::CallOps
     extend Forwardable
     attr_reader(:deadline)
-    def_delegators :@call, :cancel, :metadata, :write_flag, :write_flag=, :peer, :peer_cert
+    def_delegators :@call, :cancel, :metadata, :write_flag, :write_flag=,
+                   :peer, :peer_cert
 
     # client_invoke begins a client invocation.
     #
-- 
GitLab


From 8c065a7b22dfe803cd03be24ae3cabaefeb6d59d Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Tue, 26 Apr 2016 12:11:42 -0700
Subject: [PATCH 192/525] clang format

---
 test/cpp/util/metrics_server.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/cpp/util/metrics_server.h b/test/cpp/util/metrics_server.h
index b04879c5e6..2caacad5f3 100644
--- a/test/cpp/util/metrics_server.h
+++ b/test/cpp/util/metrics_server.h
@@ -97,7 +97,7 @@ class MetricsServiceImpl GRPC_FINAL : public MetricsService::Service {
   // NOTE: CreateQpsGauge can be called anytime (i.e before or after calling
   // StartServer).
   std::shared_ptr<QpsGauge> CreateQpsGauge(const grpc::string& name,
-                                     bool* already_present);
+                                           bool* already_present);
 
   std::unique_ptr<grpc::Server> StartServer(int port);
 
-- 
GitLab


From 44b9cd75847baa6cf275536264ab156c7f3e4518 Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Tue, 26 Apr 2016 12:15:48 -0700
Subject: [PATCH 193/525] Fix the sanity error reported by
 check_sources_and_headers.py

---
 test/cpp/util/metrics_server.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/test/cpp/util/metrics_server.h b/test/cpp/util/metrics_server.h
index 2caacad5f3..aa9bfed23d 100644
--- a/test/cpp/util/metrics_server.h
+++ b/test/cpp/util/metrics_server.h
@@ -36,7 +36,6 @@
 #include <map>
 #include <mutex>
 
-#include "grpc/support/time.h"
 #include "src/proto/grpc/testing/metrics.grpc.pb.h"
 #include "src/proto/grpc/testing/metrics.pb.h"
 
-- 
GitLab


From 707c9e29e08f1db8f27253c1951ff62b55561e13 Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Wed, 20 Apr 2016 09:42:19 -0700
Subject: [PATCH 194/525] Changed python proto build to use shared protos

---
 src/python/.gitignore                         |   1 +
 src/python/grpcio/commands.py                 |  50 ++++--
 .../tests/interop/_insecure_interop_test.py   |   2 +-
 .../tests/interop/_secure_interop_test.py     |   2 +-
 src/python/grpcio/tests/interop/client.py     |   2 +-
 src/python/grpcio/tests/interop/empty.proto   |  43 -----
 .../grpcio/tests/interop/messages.proto       | 167 ------------------
 src/python/grpcio/tests/interop/methods.py    |   6 +-
 src/python/grpcio/tests/interop/server.py     |   2 +-
 src/python/grpcio/tests/interop/test.proto    |  86 ---------
 tools/run_tests/run_interop_tests.py          |   3 +-
 tools/run_tests/run_tests.py                  |   1 +
 12 files changed, 45 insertions(+), 320 deletions(-)
 create mode 100644 src/python/.gitignore
 delete mode 100644 src/python/grpcio/tests/interop/empty.proto
 delete mode 100644 src/python/grpcio/tests/interop/messages.proto
 delete mode 100644 src/python/grpcio/tests/interop/test.proto

diff --git a/src/python/.gitignore b/src/python/.gitignore
new file mode 100644
index 0000000000..f158efa4bf
--- /dev/null
+++ b/src/python/.gitignore
@@ -0,0 +1 @@
+gens/
diff --git a/src/python/grpcio/commands.py b/src/python/grpcio/commands.py
index 9e745701c1..295dab2d27 100644
--- a/src/python/grpcio/commands.py
+++ b/src/python/grpcio/commands.py
@@ -50,6 +50,9 @@ from setuptools.command import test
 import support
 
 PYTHON_STEM = os.path.dirname(os.path.abspath(__file__))
+GRPC_STEM = os.path.abspath(PYTHON_STEM + '../../../../')
+PROTO_STEM = os.path.join(GRPC_STEM, 'src', 'proto')
+PROTO_GEN_STEM = os.path.join(GRPC_STEM, 'src', 'python', 'gens')
 
 CONF_PY_ADDENDUM = """
 extensions.append('sphinx.ext.napoleon')
@@ -157,30 +160,45 @@ class BuildProtoModules(setuptools.Command):
     if not self.grpc_python_plugin_command:
       raise CommandError('could not find grpc_python_plugin '
                          '(protoc plugin for GRPC Python)')
+
+    if not os.path.exists(PROTO_GEN_STEM):
+      os.makedirs(PROTO_GEN_STEM)
+
     include_regex = re.compile(self.include)
     exclude_regex = re.compile(self.exclude) if self.exclude else None
     paths = []
-    root_directory = PYTHON_STEM
-    for walk_root, directories, filenames in os.walk(root_directory):
+    for walk_root, directories, filenames in os.walk(PROTO_STEM):
       for filename in filenames:
         path = os.path.join(walk_root, filename)
         if include_regex.match(path) and not (
             exclude_regex and exclude_regex.match(path)):
           paths.append(path)
-    command = [
-        self.protoc_command,
-        '--plugin=protoc-gen-python-grpc={}'.format(
-            self.grpc_python_plugin_command),
-        '-I {}'.format(root_directory),
-        '--python_out={}'.format(root_directory),
-        '--python-grpc_out={}'.format(root_directory),
-    ] + paths
-    try:
-      subprocess.check_output(' '.join(command), cwd=root_directory, shell=True,
-                              stderr=subprocess.STDOUT)
-    except subprocess.CalledProcessError as e:
-      raise CommandError('Command:\n{}\nMessage:\n{}\nOutput:\n{}'.format(
-          command, e.message, e.output))
+
+    # TODO(kpayson): It would be nice to do this in a batch command,
+    # but we currently have name conflicts in src/proto
+    for path in paths:
+      command = [
+          self.protoc_command,
+          '--plugin=protoc-gen-python-grpc={}'.format(
+              self.grpc_python_plugin_command),
+          '-I {}'.format(GRPC_STEM),
+          '--python_out={}'.format(PROTO_GEN_STEM),
+          '--python-grpc_out={}'.format(PROTO_GEN_STEM),
+      ] + [path]
+      try:
+        subprocess.check_output(' '.join(command), cwd=PYTHON_STEM, shell=True,
+                                stderr=subprocess.STDOUT)
+      except subprocess.CalledProcessError as e:
+        sys.stderr.write(
+            'warning: Command:\n{}\nMessage:\n{}\nOutput:\n{}'.format(
+                command, e.message, e.output))
+
+    # Generated proto directories dont include __init__.py, but
+    # these are needed for python package resolution
+    for walk_root, _, _ in os.walk(PROTO_GEN_STEM):
+      if walk_root != PROTO_GEN_STEM:
+        path = os.path.join(walk_root, '__init__.py')
+        open(path, 'a').close()
 
 
 class BuildProjectMetadata(setuptools.Command):
diff --git a/src/python/grpcio/tests/interop/_insecure_interop_test.py b/src/python/grpcio/tests/interop/_insecure_interop_test.py
index 00b49aba37..91519b6fba 100644
--- a/src/python/grpcio/tests/interop/_insecure_interop_test.py
+++ b/src/python/grpcio/tests/interop/_insecure_interop_test.py
@@ -32,11 +32,11 @@
 import unittest
 
 from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
 
 from tests.interop import _interop_test_case
 from tests.interop import methods
 from tests.interop import server
-from tests.interop import test_pb2
 
 
 class InsecureInteropTest(
diff --git a/src/python/grpcio/tests/interop/_secure_interop_test.py b/src/python/grpcio/tests/interop/_secure_interop_test.py
index 86d7e43351..c61547b977 100644
--- a/src/python/grpcio/tests/interop/_secure_interop_test.py
+++ b/src/python/grpcio/tests/interop/_secure_interop_test.py
@@ -32,11 +32,11 @@
 import unittest
 
 from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
 
 from tests.interop import _interop_test_case
 from tests.interop import methods
 from tests.interop import resources
-from tests.interop import test_pb2
 
 from tests.unit.beta import test_utilities
 
diff --git a/src/python/grpcio/tests/interop/client.py b/src/python/grpcio/tests/interop/client.py
index 1d10d7e45d..db29eb4aa7 100644
--- a/src/python/grpcio/tests/interop/client.py
+++ b/src/python/grpcio/tests/interop/client.py
@@ -33,10 +33,10 @@ import argparse
 from oauth2client import client as oauth2client_client
 
 from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
 
 from tests.interop import methods
 from tests.interop import resources
-from tests.interop import test_pb2
 from tests.unit.beta import test_utilities
 
 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
diff --git a/src/python/grpcio/tests/interop/empty.proto b/src/python/grpcio/tests/interop/empty.proto
deleted file mode 100644
index 6d0eb937d6..0000000000
--- a/src/python/grpcio/tests/interop/empty.proto
+++ /dev/null
@@ -1,43 +0,0 @@
-
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package grpc.testing;
-
-// An empty message that you can re-use to avoid defining duplicated empty
-// messages in your project. A typical example is to use it as argument or the
-// return value of a service API. For instance:
-//
-//   service Foo {
-//     rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
-//   };
-//
-message Empty {}
diff --git a/src/python/grpcio/tests/interop/messages.proto b/src/python/grpcio/tests/interop/messages.proto
deleted file mode 100644
index 193b6c4171..0000000000
--- a/src/python/grpcio/tests/interop/messages.proto
+++ /dev/null
@@ -1,167 +0,0 @@
-
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Message definitions to be used by integration test service definitions.
-
-syntax = "proto3";
-
-package grpc.testing;
-
-// The type of payload that should be returned.
-enum PayloadType {
-  // Compressable text format.
-  COMPRESSABLE = 0;
-
-  // Uncompressable binary format.
-  UNCOMPRESSABLE = 1;
-
-  // Randomly chosen from all other formats defined in this enum.
-  RANDOM = 2;
-}
-
-// Compression algorithms
-enum CompressionType {
-  // No compression
-  NONE = 0;
-  GZIP = 1;
-  DEFLATE = 2;
-}
-
-// A block of data, to simply increase gRPC message size.
-message Payload {
-  // The type of data in body.
-  PayloadType type = 1;
-  // Primary contents of payload.
-  bytes body = 2;
-}
-
-// A protobuf representation for grpc status. This is used by test
-// clients to specify a status that the server should attempt to return.
-message EchoStatus {
-  int32 code = 1;
-  string message = 2;
-}
-
-// Unary request.
-message SimpleRequest {
-  // Desired payload type in the response from the server.
-  // If response_type is RANDOM, server randomly chooses one from other formats.
-  PayloadType response_type = 1;
-
-  // Desired payload size in the response from the server.
-  // If response_type is COMPRESSABLE, this denotes the size before compression.
-  int32 response_size = 2;
-
-  // Optional input payload sent along with the request.
-  Payload payload = 3;
-
-  // Whether SimpleResponse should include username.
-  bool fill_username = 4;
-
-  // Whether SimpleResponse should include OAuth scope.
-  bool fill_oauth_scope = 5;
-
-  // Compression algorithm to be used by the server for the response (stream)
-  CompressionType response_compression = 6;
-
-  // Whether server should return a given status
-  EchoStatus response_status = 7;
-}
-
-// Unary response, as configured by the request.
-message SimpleResponse {
-  // Payload to increase message size.
-  Payload payload = 1;
-  // The user the request came from, for verifying authentication was
-  // successful when the client expected it.
-  string username = 2;
-  // OAuth scope.
-  string oauth_scope = 3;
-}
-
-// Client-streaming request.
-message StreamingInputCallRequest {
-  // Optional input payload sent along with the request.
-  Payload payload = 1;
-
-  // Not expecting any payload from the response.
-}
-
-// Client-streaming response.
-message StreamingInputCallResponse {
-  // Aggregated size of payloads received from the client.
-  int32 aggregated_payload_size = 1;
-}
-
-// Configuration for a particular response.
-message ResponseParameters {
-  // Desired payload sizes in responses from the server.
-  // If response_type is COMPRESSABLE, this denotes the size before compression.
-  int32 size = 1;
-
-  // Desired interval between consecutive responses in the response stream in
-  // microseconds.
-  int32 interval_us = 2;
-}
-
-// Server-streaming request.
-message StreamingOutputCallRequest {
-  // Desired payload type in the response from the server.
-  // If response_type is RANDOM, the payload from each response in the stream
-  // might be of different types. This is to simulate a mixed type of payload
-  // stream.
-  PayloadType response_type = 1;
-
-  // Configuration for each expected response message.
-  repeated ResponseParameters response_parameters = 2;
-
-  // Optional input payload sent along with the request.
-  Payload payload = 3;
-
-  // Compression algorithm to be used by the server for the response (stream)
-  CompressionType response_compression = 6;
-
-  // Whether server should return a given status
-  EchoStatus response_status = 7;
-}
-
-// Server-streaming response, as configured by the request and parameters.
-message StreamingOutputCallResponse {
-  // Payload to increase response size.
-  Payload payload = 1;
-}
-
-// For reconnect interop test only.
-// Server tells client whether its reconnects are following the spec and the
-// reconnect backoffs it saw.
-message ReconnectInfo {
-  bool passed = 1;
-  repeated int32 backoff_ms = 2;
-}
diff --git a/src/python/grpcio/tests/interop/methods.py b/src/python/grpcio/tests/interop/methods.py
index 03810338ed..67862ed7d3 100644
--- a/src/python/grpcio/tests/interop/methods.py
+++ b/src/python/grpcio/tests/interop/methods.py
@@ -42,9 +42,9 @@ from oauth2client import client as oauth2client_client
 from grpc.framework.common import cardinality
 from grpc.framework.interfaces.face import face
 
-from tests.interop import empty_pb2
-from tests.interop import messages_pb2
-from tests.interop import test_pb2
+from src.proto.grpc.testing import empty_pb2
+from src.proto.grpc.testing import messages_pb2
+from src.proto.grpc.testing import test_pb2
 
 _TIMEOUT = 7
 
diff --git a/src/python/grpcio/tests/interop/server.py b/src/python/grpcio/tests/interop/server.py
index 6dd55f008c..ab2c3c708f 100644
--- a/src/python/grpcio/tests/interop/server.py
+++ b/src/python/grpcio/tests/interop/server.py
@@ -34,10 +34,10 @@ import logging
 import time
 
 from grpc.beta import implementations
+from src.proto.grpc.testing import test_pb2
 
 from tests.interop import methods
 from tests.interop import resources
-from tests.interop import test_pb2
 
 _ONE_DAY_IN_SECONDS = 60 * 60 * 24
 
diff --git a/src/python/grpcio/tests/interop/test.proto b/src/python/grpcio/tests/interop/test.proto
deleted file mode 100644
index 9feecc0278..0000000000
--- a/src/python/grpcio/tests/interop/test.proto
+++ /dev/null
@@ -1,86 +0,0 @@
-
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-
-syntax = "proto3";
-
-import "tests/interop/empty.proto";
-import "tests/interop/messages.proto";
-
-package grpc.testing;
-
-// A simple service to test the various types of RPCs and experiment with
-// performance with various types of payload.
-service TestService {
-  // One empty request followed by one empty response.
-  rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
-
-  // One request followed by one response.
-  rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
-
-  // One request followed by a sequence of responses (streamed download).
-  // The server returns the payload with client desired type and sizes.
-  rpc StreamingOutputCall(StreamingOutputCallRequest)
-      returns (stream StreamingOutputCallResponse);
-
-  // A sequence of requests followed by one response (streamed upload).
-  // The server returns the aggregated size of client payload as the result.
-  rpc StreamingInputCall(stream StreamingInputCallRequest)
-      returns (StreamingInputCallResponse);
-
-  // A sequence of requests with each request served by the server immediately.
-  // As one request could lead to multiple responses, this interface
-  // demonstrates the idea of full duplexing.
-  rpc FullDuplexCall(stream StreamingOutputCallRequest)
-      returns (stream StreamingOutputCallResponse);
-
-  // A sequence of requests followed by a sequence of responses.
-  // The server buffers all the client requests and then serves them in order. A
-  // stream of responses are returned to the client when the server starts with
-  // first request.
-  rpc HalfDuplexCall(stream StreamingOutputCallRequest)
-      returns (stream StreamingOutputCallResponse);
-}
-
-
-// A simple service NOT implemented at servers so clients can test for
-// that case.
-service UnimplementedService {
-  // A call that no server should implement
-  rpc UnimplementedCall(grpc.testing.Empty) returns(grpc.testing.Empty);  
-}
-
-// A service used to control reconnect server.
-service ReconnectService {
-  rpc Start(grpc.testing.Empty) returns (grpc.testing.Empty);
-  rpc Stop(grpc.testing.Empty) returns (grpc.testing.ReconnectInfo);
-}
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 28b91f8b62..fb2be22944 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -314,7 +314,8 @@ class PythonLanguage:
     ]
 
   def global_env(self):
-    return {'LD_LIBRARY_PATH': '{}/libs/opt'.format(DOCKER_WORKDIR_ROOT)}
+    return {'LD_LIBRARY_PATH': '{}/libs/opt'.format(DOCKER_WORKDIR_ROOT),
+            'PYTHONPATH': '{}/src/python/gens'.format(DOCKER_WORKDIR_ROOT)}
 
   def unimplemented_test_cases(self):
     return _SKIP_ADVANCED + _SKIP_COMPRESSION + ['jwt_token_creds',
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 9dff686bbf..4b9898539d 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -371,6 +371,7 @@ class PythonLanguage(object):
       tests_json = json.load(tests_json_file)
     environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
     environment['PYVER'] = '2.7'
+    environment['PYTHONPATH'] = os.path.abspath('src/python/gens')
     if self.config.build_config != 'gcov':
       return [self.config.job_spec(
           ['tools/run_tests/run_python.sh'],
-- 
GitLab


From c5b1eef8b1e6d56a9f3c25962d815ae6579c78ee Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Tue, 26 Apr 2016 14:16:20 -0700
Subject: [PATCH 195/525] Change C implementation to not log an "Unexpected
 content-type" message when the header includes a semicolon.

---
 src/core/lib/channel/http_server_filter.c     |  9 ++++----
 .../tests/server_registered_method.headers    |  2 +-
 test/core/bad_client/tests/simple_request.c   | 22 +++++++++++++++++++
 .../tests/simple_request_unusual2.headers     | 13 +++++++++++
 4 files changed, 41 insertions(+), 5 deletions(-)
 create mode 100644 test/core/bad_client/tests/simple_request_unusual2.headers

diff --git a/src/core/lib/channel/http_server_filter.c b/src/core/lib/channel/http_server_filter.c
index c140c61b8f..ad3462bff4 100644
--- a/src/core/lib/channel/http_server_filter.c
+++ b/src/core/lib/channel/http_server_filter.c
@@ -92,8 +92,10 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) {
        require */
     return NULL;
   } else if (md->key == GRPC_MDSTR_CONTENT_TYPE) {
-    if (strncmp(grpc_mdstr_as_c_string(md->value), "application/grpc+", 17) ==
-        0) {
+    const char* value_str = grpc_mdstr_as_c_string(md->value);
+    if (strncmp(value_str, "application/grpc", 16) == 0 &&
+        (strlen(value_str) == 16 ||
+         value_str[16] == '+' || value_str[16] == ';')) {
       /* Although the C implementation doesn't (currently) generate them,
          any custom +-suffix is explicitly valid. */
       /* TODO(klempner): We should consider preallocating common values such
@@ -102,8 +104,7 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) {
     } else {
       /* TODO(klempner): We're currently allowing this, but we shouldn't
          see it without a proxy so log for now. */
-      gpr_log(GPR_INFO, "Unexpected content-type %s",
-              grpc_mdstr_as_c_string(md->value));
+      gpr_log(GPR_INFO, "Unexpected content-type %s", value_str);
     }
     return NULL;
   } else if (md->key == GRPC_MDSTR_TE || md->key == GRPC_MDSTR_METHOD ||
diff --git a/test/core/bad_client/tests/server_registered_method.headers b/test/core/bad_client/tests/server_registered_method.headers
index 06ee73c82e..2640cc9cb8 100644
--- a/test/core/bad_client/tests/server_registered_method.headers
+++ b/test/core/bad_client/tests/server_registered_method.headers
@@ -1,4 +1,4 @@
-# headers used in simple_request.c
+# headers used in server_registered_method.c
 # use tools/codegen/core/gen_header_frame.py to generate the binary strings
 # contained in the source code
 :path: /registered/bar
diff --git a/test/core/bad_client/tests/simple_request.c b/test/core/bad_client/tests/simple_request.c
index ac0fdde876..d6b85aefb5 100644
--- a/test/core/bad_client/tests/simple_request.c
+++ b/test/core/bad_client/tests/simple_request.c
@@ -77,6 +77,27 @@
   "\x10\x0cgrpc-timeout\x02"                                               \
   "5S"
 
+#define PFX_STR_UNUSUAL2                                                   \
+  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"                                       \
+  "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* settings frame */              \
+  "\x00\x00\xf4\x01\x04\x00\x00\x00\x01" /* headers: generated from        \
+                                            simple_request_unusual2.headers \
+                                            in this directory */           \
+  "\x10\x05:path\x08/foo/bar"                                              \
+  "\x10\x07:scheme\x04http"                                                \
+  "\x10\x07:method\x04POST"                                                \
+  "\x10\x04host\x09localhost"                                              \
+  "\x10\x0c"                                                               \
+  "content-type\x1e"                                                       \
+  "application/grpc;this-is-valid"                                         \
+  "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip"                  \
+  "\x10\x02te\x08trailers"                                                 \
+  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"                 \
+  "\x10\x0cgrpc-timeout\x03"                                               \
+  "10S"                                                                    \
+  "\x10\x0cgrpc-timeout\x02"                                               \
+  "5S"
+
 static void *tag(intptr_t t) { return (void *)t; }
 
 static void verifier(grpc_server *server, grpc_completion_queue *cq,
@@ -120,6 +141,7 @@ int main(int argc, char **argv) {
   /* basic request: check that things are working */
   GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR, 0);
   GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR_UNUSUAL, 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR_UNUSUAL2, 0);
 
   /* push an illegal data frame */
   GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
diff --git a/test/core/bad_client/tests/simple_request_unusual2.headers b/test/core/bad_client/tests/simple_request_unusual2.headers
new file mode 100644
index 0000000000..f70920f372
--- /dev/null
+++ b/test/core/bad_client/tests/simple_request_unusual2.headers
@@ -0,0 +1,13 @@
+# headers used in simple_request.c
+# use tools/codegen/core/gen_header_frame.py to generate the binary strings
+# contained in the source code
+:path: /foo/bar
+:scheme: http
+:method: POST
+host: localhost
+content-type: application/grpc;this-is-valid
+grpc-accept-encoding: deflate,identity,gzip
+te: trailers
+user-agent: bad-client grpc-c/0.12.0.0 (linux)
+grpc-timeout: 10S
+grpc-timeout: 5S
-- 
GitLab


From 85c3ab0b0b1c3abf7f8b2c7538e5ca147c88d557 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 26 Apr 2016 17:17:02 -0700
Subject: [PATCH 196/525] fix #5912

---
 src/csharp/Grpc.IntegrationTesting/InteropClient.cs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
index 5436517960..b3b1abf1bc 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
@@ -494,7 +494,8 @@ namespace Grpc.IntegrationTesting
                 }
 
                 var ex = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseStream.MoveNext());
-                Assert.AreEqual(StatusCode.DeadlineExceeded, ex.Status.StatusCode);
+                // We can't guarantee the status code always DeadlineExceeded. See issue #2685.
+                Assert.Contains(ex.Status.StatusCode, new[] { StatusCode.DeadlineExceeded, StatusCode.Internal });
             }
             Console.WriteLine("Passed!");
         }
-- 
GitLab


From 110e07af8de2fbdbdac531195bffab29988e246c Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 26 Apr 2016 17:20:10 -0700
Subject: [PATCH 197/525] Added node plugin to grpc-tools npm package, updated
 build_package_node

---
 src/node/tools/bin/protoc_plugin.js           | 54 +++++++++++++++++++
 src/node/tools/package.json                   |  4 +-
 .../src/node/tools/package.json.template      |  4 +-
 tools/run_tests/build_package_node.sh         | 45 ++++++++++++++--
 4 files changed, 102 insertions(+), 5 deletions(-)
 create mode 100755 src/node/tools/bin/protoc_plugin.js

diff --git a/src/node/tools/bin/protoc_plugin.js b/src/node/tools/bin/protoc_plugin.js
new file mode 100755
index 0000000000..0e0bb9406e
--- /dev/null
+++ b/src/node/tools/bin/protoc_plugin.js
@@ -0,0 +1,54 @@
+#!/usr/bin/env node
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/**
+ * This file is required because package.json cannot reference a file that
+ * is not distributed with the package, and we use node-pre-gyp to distribute
+ * the plugin binary
+ */
+
+'use strict';
+
+var path = require('path');
+var execFile = require('child_process').execFile;
+
+var protoc = path.resolve(__dirname, 'grpc_node_plugin');
+
+execFile(protoc, process.argv.slice(2), function(error, stdout, stderr) {
+  if (error) {
+    throw error;
+  }
+  console.log(stdout);
+  console.log(stderr);
+});
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index 4b3499f2f9..d98ed0b1fc 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -16,7 +16,8 @@
     }
   ],
   "bin": {
-    "grpc-tools-protoc": "./bin/protoc.js"
+    "grpc-tools-protoc": "./bin/protoc.js",
+    "grpc-tools-plugin": "./bin/protoc_plugin.js"
   },
   "scripts": {
     "install": "./node_modules/.bin/node-pre-gyp install"
@@ -32,6 +33,7 @@
   "files": [
     "index.js",
     "bin/protoc.js",
+    "bin/protoc_plugin.js",
     "LICENSE"
   ],
   "main": "index.js"
diff --git a/templates/src/node/tools/package.json.template b/templates/src/node/tools/package.json.template
index c69de7c989..4f673c48d1 100644
--- a/templates/src/node/tools/package.json.template
+++ b/templates/src/node/tools/package.json.template
@@ -18,7 +18,8 @@
       }
     ],
     "bin": {
-      "grpc-tools-protoc": "./bin/protoc.js"
+      "grpc-tools-protoc": "./bin/protoc.js",
+      "grpc-tools-plugin": "./bin/protoc_plugin.js"
     },
     "scripts": {
       "install": "./node_modules/.bin/node-pre-gyp install"
@@ -34,6 +35,7 @@
     "files": [
       "index.js",
       "bin/protoc.js",
+      "bin/protoc_plugin.js",
       "LICENSE"
     ],
     "main": "index.js"
diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 540c826311..137c8e77bc 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -35,10 +35,49 @@ set -ex
 
 cd $(dirname $0)/../..
 
-mkdir -p artifacts/
-cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=node,platform={windows,linux,macos}/artifacts/* artifacts/ || true
+artifacts=$cwd/artifacts
+
+mkdir -p $artifacts
+cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=node,platform={windows,linux,macos}/artifacts/* $artifacts/ || true
 
 npm update
 npm pack
 
-cp grpc-*.tgz artifacts/grpc.tgz
+cp grpc-*.tgz $artifacts/grpc.tgz
+
+mkdir -p bin
+
+for arch in {x86,x64}; do
+  case arch in
+    x86)
+      node_arch=ia32
+      ;;
+    *)
+      node_arch=$arch
+      ;;
+  esac
+  for plat in {windows,linux,macos}; do
+    case plat in
+      windows)
+        node_plat=win32
+        ;;
+      macos)
+        node_plat=darwin
+        ;;
+      *)
+        node_plat=$plat
+    esac
+    input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
+    cp $input_dir/protoc bin/
+    cp $input_dir/grpc_node_plugin bin/
+    # For now, this will have to be manually uploaded to a folder with the
+    # correct package version
+    output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/
+    tar -czf $output_dir/$node_plat-$node_arch.tar.gz bin/
+  done
+done
+
+cd src/node/tools
+npm update
+npm pack
+cp grpc-tools-*.tgz $artifacts/
-- 
GitLab


From f8fb955e154c20d1ac70de408ab917e24b45007f Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 26 Apr 2016 17:50:24 -0700
Subject: [PATCH 198/525] Account for windows file names

---
 tools/run_tests/build_package_node.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 137c8e77bc..292408a703 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -68,8 +68,8 @@ for arch in {x86,x64}; do
         node_plat=$plat
     esac
     input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
-    cp $input_dir/protoc bin/
-    cp $input_dir/grpc_node_plugin bin/
+    cp $input_dir/protoc* bin/
+    cp $input_dir/grpc_node_plugin* bin/
     # For now, this will have to be manually uploaded to a folder with the
     # correct package version
     output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/
-- 
GitLab


From 44f7c54847d4f733c681c87952afb95be8c54eb6 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 14:50:27 -0700
Subject: [PATCH 199/525] params for generating only client/server

---
 src/compiler/csharp_generator.cc | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 4def6c5e31..08cd41dee7 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -527,7 +527,8 @@ void GenerateNewStubMethods(Printer* out, const ServiceDescriptor *service) {
   out->Print("\n");
 }
 
-void GenerateService(Printer* out, const ServiceDescriptor *service) {
+void GenerateService(Printer* out, const ServiceDescriptor *service,
+                     bool generate_client, bool generate_server) {
   out->Print("public static class $classname$\n", "classname",
              GetServiceClassName(service));
   out->Print("{\n");
@@ -542,13 +543,22 @@ void GenerateService(Printer* out, const ServiceDescriptor *service) {
     GenerateStaticMethodField(out, service->method(i));
   }
   GenerateServiceDescriptorProperty(out, service);
-  GenerateClientInterface(out, service);
-  GenerateServerInterface(out, service);
-  GenerateServerClass(out, service);
-  GenerateClientStub(out, service);
-  GenerateBindServiceMethod(out, service, false);
-  GenerateBindServiceMethod(out, service, true);
-  GenerateNewStubMethods(out, service);
+
+  if (generate_client) {
+    GenerateClientInterface(out, service);
+  }
+  if (generate_server) {
+    GenerateServerInterface(out, service);
+    GenerateServerClass(out, service);
+  }
+  if (generate_client) {
+    GenerateClientStub(out, service);
+    GenerateNewStubMethods(out, service);
+  }
+  if (generate_server) {
+    GenerateBindServiceMethod(out, service, false);
+    GenerateBindServiceMethod(out, service, true);
+  }
 
   out->Outdent();
   out->Print("}\n");
@@ -584,7 +594,7 @@ grpc::string GetServices(const FileDescriptor *file) {
     out.Print("namespace $namespace$ {\n", "namespace", GetFileNamespace(file));
     out.Indent();
     for (int i = 0; i < file->service_count(); i++) {
-      GenerateService(&out, file->service(i));
+      GenerateService(&out, file->service(i), true, true);
     }
     out.Outdent();
     out.Print("}\n");
-- 
GitLab


From a967ee567e24c998b45560ba3e32032d7791649b Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 14:51:05 -0700
Subject: [PATCH 200/525] support custom parsegeneratorparameter

---
 src/compiler/config.h         | 10 ++++++++++
 src/compiler/csharp_plugin.cc |  3 +++
 2 files changed, 13 insertions(+)

diff --git a/src/compiler/config.h b/src/compiler/config.h
index fea976c318..a31dc24f6d 100644
--- a/src/compiler/config.h
+++ b/src/compiler/config.h
@@ -68,6 +68,11 @@
 #define GRPC_CUSTOM_PLUGINMAIN ::google::protobuf::compiler::PluginMain
 #endif
 
+#ifndef GRPC_CUSTOM_PARSEGENERATORPARAMETER
+#include <google/protobuf/compiler/code_generator.h>
+#define GRPC_CUSTOM_PARSEGENERATORPARAMETER ::google::protobuf::compiler::ParseGeneratorParameter
+#endif
+
 namespace grpc {
 namespace protobuf {
 typedef GRPC_CUSTOM_DESCRIPTOR Descriptor;
@@ -81,6 +86,11 @@ static inline int PluginMain(int argc, char* argv[],
                              const CodeGenerator* generator) {
   return GRPC_CUSTOM_PLUGINMAIN(argc, argv, generator);
 }
+static inline void ParseGeneratorParameter(const string& parameter,
+    std::vector<std::pair<string, string> >* options) {
+  GRPC_CUSTOM_PARSEGENERATORPARAMETER(parameter, options);
+}
+
 }  // namespace compiler
 namespace io {
 typedef GRPC_CUSTOM_PRINTER Printer;
diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc
index 8b9395f9e2..bc86fbd616 100644
--- a/src/compiler/csharp_plugin.cc
+++ b/src/compiler/csharp_plugin.cc
@@ -48,6 +48,9 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
                 const grpc::string &parameter,
                 grpc::protobuf::compiler::GeneratorContext *context,
                 grpc::string *error) const {
+    std::vector<std::pair<grpc::string, grpc::string> > options;
+    grpc::protobuf::compiler::ParseGeneratorParameter(parameter, &options);
+
     grpc::string code = grpc_csharp_generator::GetServices(file);
     if (code.size() == 0) {
       return true;  // don't generate a file if there are no services
-- 
GitLab


From 5f8872f8995cd45d86feb361bfa9b8084c51b85e Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 15:57:10 -0700
Subject: [PATCH 201/525] introduce c# generator options

---
 src/compiler/csharp_generator.cc |  5 +++--
 src/compiler/csharp_generator.h  |  3 ++-
 src/compiler/csharp_plugin.cc    | 17 ++++++++++++++++-
 3 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 08cd41dee7..5744d7c96a 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -566,7 +566,8 @@ void GenerateService(Printer* out, const ServiceDescriptor *service,
 
 }  // anonymous namespace
 
-grpc::string GetServices(const FileDescriptor *file) {
+grpc::string GetServices(const FileDescriptor *file, bool generate_client,
+                         bool generate_server) {
   grpc::string output;
   {
     // Scope the output stream so it closes and finalizes output to the string.
@@ -594,7 +595,7 @@ grpc::string GetServices(const FileDescriptor *file) {
     out.Print("namespace $namespace$ {\n", "namespace", GetFileNamespace(file));
     out.Indent();
     for (int i = 0; i < file->service_count(); i++) {
-      GenerateService(&out, file->service(i), true, true);
+      GenerateService(&out, file->service(i), generate_client, generate_server);
     }
     out.Outdent();
     out.Print("}\n");
diff --git a/src/compiler/csharp_generator.h b/src/compiler/csharp_generator.h
index 90eb7e2984..79c2e57266 100644
--- a/src/compiler/csharp_generator.h
+++ b/src/compiler/csharp_generator.h
@@ -40,7 +40,8 @@
 
 namespace grpc_csharp_generator {
 
-grpc::string GetServices(const grpc::protobuf::FileDescriptor *file);
+grpc::string GetServices(const grpc::protobuf::FileDescriptor *file,
+                         bool generate_client, bool generate_server);
 
 }  // namespace grpc_csharp_generator
 
diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc
index bc86fbd616..fd1ec99e2b 100644
--- a/src/compiler/csharp_plugin.cc
+++ b/src/compiler/csharp_plugin.cc
@@ -51,7 +51,22 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
     std::vector<std::pair<grpc::string, grpc::string> > options;
     grpc::protobuf::compiler::ParseGeneratorParameter(parameter, &options);
 
-    grpc::string code = grpc_csharp_generator::GetServices(file);
+    bool generate_client = true;
+    bool generate_server = true;
+    for (size_t i = 0; i < options.size(); i++) {
+      if (options[i].first == "no_client") {
+        generate_client = false;
+      } else if (options[i].first == "no_server") {
+        generate_server = false;
+      } else {
+        *error = "Unknown generator option: " + options[i].first;
+        return false;
+      }
+    }
+
+    grpc::string code = grpc_csharp_generator::GetServices(file,
+                                                           generate_client,
+                                                           generate_server);
     if (code.size() == 0) {
       return true;  // don't generate a file if there are no services
     }
-- 
GitLab


From 4e0f73cddbebdeae1cf96b9d63ec7af37396a665 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 16:11:03 -0700
Subject: [PATCH 202/525] add internal_access option for C# codegen

---
 src/compiler/csharp_generator.cc | 15 +++++++++++----
 src/compiler/csharp_generator.h  |  3 ++-
 src/compiler/csharp_plugin.cc    |  6 +++++-
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 5744d7c96a..0d1404341d 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -123,6 +123,10 @@ std::string GetMethodRequestParamMaybe(const MethodDescriptor *method,
   return GetClassName(method->input_type()) + " request, ";
 }
 
+std::string GetAccessLevel(bool internal_access) {
+  return internal_access ? "internal" : "public";
+}
+
 std::string GetMethodReturnTypeClient(const MethodDescriptor *method) {
   switch (GetMethodType(method)) {
     case METHODTYPE_NO_STREAMING:
@@ -528,8 +532,10 @@ void GenerateNewStubMethods(Printer* out, const ServiceDescriptor *service) {
 }
 
 void GenerateService(Printer* out, const ServiceDescriptor *service,
-                     bool generate_client, bool generate_server) {
-  out->Print("public static class $classname$\n", "classname",
+                     bool generate_client, bool generate_server,
+                     bool internal_access) {
+  out->Print("$access_level$ static class $classname$\n", "access_level",
+             GetAccessLevel(internal_access), "classname",
              GetServiceClassName(service));
   out->Print("{\n");
   out->Indent();
@@ -567,7 +573,7 @@ void GenerateService(Printer* out, const ServiceDescriptor *service,
 }  // anonymous namespace
 
 grpc::string GetServices(const FileDescriptor *file, bool generate_client,
-                         bool generate_server) {
+                         bool generate_server, bool internal_access) {
   grpc::string output;
   {
     // Scope the output stream so it closes and finalizes output to the string.
@@ -595,7 +601,8 @@ grpc::string GetServices(const FileDescriptor *file, bool generate_client,
     out.Print("namespace $namespace$ {\n", "namespace", GetFileNamespace(file));
     out.Indent();
     for (int i = 0; i < file->service_count(); i++) {
-      GenerateService(&out, file->service(i), generate_client, generate_server);
+      GenerateService(&out, file->service(i), generate_client, generate_server,
+                      internal_access);
     }
     out.Outdent();
     out.Print("}\n");
diff --git a/src/compiler/csharp_generator.h b/src/compiler/csharp_generator.h
index 79c2e57266..f0585af4fd 100644
--- a/src/compiler/csharp_generator.h
+++ b/src/compiler/csharp_generator.h
@@ -41,7 +41,8 @@
 namespace grpc_csharp_generator {
 
 grpc::string GetServices(const grpc::protobuf::FileDescriptor *file,
-                         bool generate_client, bool generate_server);
+                         bool generate_client, bool generate_server,
+                         bool internal_access);
 
 }  // namespace grpc_csharp_generator
 
diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc
index fd1ec99e2b..5350e73f10 100644
--- a/src/compiler/csharp_plugin.cc
+++ b/src/compiler/csharp_plugin.cc
@@ -53,11 +53,14 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
 
     bool generate_client = true;
     bool generate_server = true;
+    bool internal_access = false;
     for (size_t i = 0; i < options.size(); i++) {
       if (options[i].first == "no_client") {
         generate_client = false;
       } else if (options[i].first == "no_server") {
         generate_server = false;
+      } else if (options[i].first == "internal_access") {
+        internal_access = true;
       } else {
         *error = "Unknown generator option: " + options[i].first;
         return false;
@@ -66,7 +69,8 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
 
     grpc::string code = grpc_csharp_generator::GetServices(file,
                                                            generate_client,
-                                                           generate_server);
+                                                           generate_server,
+                                                           internal_access);
     if (code.size() == 0) {
       return true;  // don't generate a file if there are no services
     }
-- 
GitLab


From 7c0e1eec85d74c5b1c8d9565f0bc28194aebae4f Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 16:00:34 -0700
Subject: [PATCH 203/525] regenerate code

---
 src/csharp/Grpc.Examples/MathGrpc.cs          | 12 +++----
 src/csharp/Grpc.HealthCheck/HealthGrpc.cs     | 12 +++----
 .../Grpc.IntegrationTesting/MetricsGrpc.cs    | 12 +++----
 .../Grpc.IntegrationTesting/ServicesGrpc.cs   | 24 ++++++-------
 .../Grpc.IntegrationTesting/TestGrpc.cs       | 36 +++++++++----------
 5 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index 1a6482df90..edbce913b8 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -168,6 +168,12 @@ namespace Math {
       }
     }
 
+    // creates a new client
+    public static MathClient NewClient(Channel channel)
+    {
+      return new MathClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMath serviceImpl)
@@ -192,12 +198,6 @@ namespace Math {
           .AddMethod(__Method_Sum, serviceImpl.Sum).Build();
     }
 
-    // creates a new client
-    public static MathClient NewClient(Channel channel)
-    {
-      return new MathClient(channel);
-    }
-
   }
 }
 #endregion
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index e7f779753d..e2cdabf011 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -97,6 +97,12 @@ namespace Grpc.Health.V1 {
       }
     }
 
+    // creates a new client
+    public static HealthClient NewClient(Channel channel)
+    {
+      return new HealthClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IHealth serviceImpl)
@@ -115,12 +121,6 @@ namespace Grpc.Health.V1 {
           .AddMethod(__Method_Check, serviceImpl.Check).Build();
     }
 
-    // creates a new client
-    public static HealthClient NewClient(Channel channel)
-    {
-      return new HealthClient(channel);
-    }
-
   }
 }
 #endregion
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index 11c1572c19..0f701a837f 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -121,6 +121,12 @@ namespace Grpc.Testing {
       }
     }
 
+    // creates a new client
+    public static MetricsServiceClient NewClient(Channel channel)
+    {
+      return new MetricsServiceClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMetricsService serviceImpl)
@@ -141,12 +147,6 @@ namespace Grpc.Testing {
           .AddMethod(__Method_GetGauge, serviceImpl.GetGauge).Build();
     }
 
-    // creates a new client
-    public static MetricsServiceClient NewClient(Channel channel)
-    {
-      return new MetricsServiceClient(channel);
-    }
-
   }
 }
 #endregion
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index 18cf0672e3..3f07a7aeb6 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -120,6 +120,12 @@ namespace Grpc.Testing {
       }
     }
 
+    // creates a new client
+    public static BenchmarkServiceClient NewClient(Channel channel)
+    {
+      return new BenchmarkServiceClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IBenchmarkService serviceImpl)
@@ -140,12 +146,6 @@ namespace Grpc.Testing {
           .AddMethod(__Method_StreamingCall, serviceImpl.StreamingCall).Build();
     }
 
-    // creates a new client
-    public static BenchmarkServiceClient NewClient(Channel channel)
-    {
-      return new BenchmarkServiceClient(channel);
-    }
-
   }
   public static class WorkerService
   {
@@ -320,6 +320,12 @@ namespace Grpc.Testing {
       }
     }
 
+    // creates a new client
+    public static WorkerServiceClient NewClient(Channel channel)
+    {
+      return new WorkerServiceClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IWorkerService serviceImpl)
@@ -344,12 +350,6 @@ namespace Grpc.Testing {
           .AddMethod(__Method_QuitWorker, serviceImpl.QuitWorker).Build();
     }
 
-    // creates a new client
-    public static WorkerServiceClient NewClient(Channel channel)
-    {
-      return new WorkerServiceClient(channel);
-    }
-
   }
 }
 #endregion
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index 3b915f6df1..4efd35f81f 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -227,6 +227,12 @@ namespace Grpc.Testing {
       }
     }
 
+    // creates a new client
+    public static TestServiceClient NewClient(Channel channel)
+    {
+      return new TestServiceClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(ITestService serviceImpl)
@@ -255,12 +261,6 @@ namespace Grpc.Testing {
           .AddMethod(__Method_HalfDuplexCall, serviceImpl.HalfDuplexCall).Build();
     }
 
-    // creates a new client
-    public static TestServiceClient NewClient(Channel channel)
-    {
-      return new TestServiceClient(channel);
-    }
-
   }
   public static class UnimplementedService
   {
@@ -350,6 +350,12 @@ namespace Grpc.Testing {
       }
     }
 
+    // creates a new client
+    public static UnimplementedServiceClient NewClient(Channel channel)
+    {
+      return new UnimplementedServiceClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IUnimplementedService serviceImpl)
@@ -368,12 +374,6 @@ namespace Grpc.Testing {
           .AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
     }
 
-    // creates a new client
-    public static UnimplementedServiceClient NewClient(Channel channel)
-    {
-      return new UnimplementedServiceClient(channel);
-    }
-
   }
   public static class ReconnectService
   {
@@ -498,6 +498,12 @@ namespace Grpc.Testing {
       }
     }
 
+    // creates a new client
+    public static ReconnectServiceClient NewClient(Channel channel)
+    {
+      return new ReconnectServiceClient(channel);
+    }
+
     // creates service definition that can be registered with a server
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IReconnectService serviceImpl)
@@ -518,12 +524,6 @@ namespace Grpc.Testing {
           .AddMethod(__Method_Stop, serviceImpl.Stop).Build();
     }
 
-    // creates a new client
-    public static ReconnectServiceClient NewClient(Channel channel)
-    {
-      return new ReconnectServiceClient(channel);
-    }
-
   }
 }
 #endregion
-- 
GitLab


From a4c1644d56b8cdd09d1ebcc0b0f9bd46cc106ffe Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 26 Apr 2016 18:04:36 -0700
Subject: [PATCH 204/525] Actually make the output directories

---
 tools/run_tests/build_package_node.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 292408a703..8297b70188 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -72,7 +72,8 @@ for arch in {x86,x64}; do
     cp $input_dir/grpc_node_plugin* bin/
     # For now, this will have to be manually uploaded to a folder with the
     # correct package version
-    output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/
+    output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools
+    mkdir -p $output_dir
     tar -czf $output_dir/$node_plat-$node_arch.tar.gz bin/
   done
 done
-- 
GitLab


From 24947de3d28f13164ab627be61cb534bf7b59b83 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 26 Apr 2016 18:09:04 -0700
Subject: [PATCH 205/525] Fixed working directory path

---
 tools/run_tests/build_package_node.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 8297b70188..53dbed76d0 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -35,7 +35,7 @@ set -ex
 
 cd $(dirname $0)/../..
 
-artifacts=$cwd/artifacts
+artifacts=$(pwd)/artifacts
 
 mkdir -p $artifacts
 cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=node,platform={windows,linux,macos}/artifacts/* $artifacts/ || true
-- 
GitLab


From 825471c38718a770b4ce763f8fad45b26ebe1766 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 25 Apr 2016 16:52:25 -0700
Subject: [PATCH 206/525] Add --compiler python3.4 option to run_tests.py

---
 tools/run_tests/build_python.sh | 12 +++++++-----
 tools/run_tests/run_python.sh   |  6 ++++--
 tools/run_tests/run_tests.py    | 34 ++++++++++++++-------------------
 tox.ini                         |  2 +-
 4 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index 30d121007f..594c20b14c 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -33,6 +33,8 @@ set -ex
 # change to grpc repo root
 cd $(dirname $0)/../..
 
+TOX_PYTHON_ENV="$1"
+
 ROOT=`pwd`
 export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG
 export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG
@@ -47,9 +49,9 @@ then
   export GRPC_PYTHON_ENABLE_CYTHON_TRACING=1
 fi
 
-tox --notest
+tox -e ${TOX_PYTHON_ENV} --notest
 
-$ROOT/.tox/py27/bin/python $ROOT/setup.py build
-$ROOT/.tox/py27/bin/python $ROOT/setup.py build_py
-$ROOT/.tox/py27/bin/python $ROOT/setup.py build_ext --inplace
-$ROOT/.tox/py27/bin/python $ROOT/setup.py gather --test
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build_py
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build_ext --inplace
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py gather --test
diff --git a/tools/run_tests/run_python.sh b/tools/run_tests/run_python.sh
index a93ef2576d..7a3ce6b821 100755
--- a/tools/run_tests/run_python.sh
+++ b/tools/run_tests/run_python.sh
@@ -33,6 +33,8 @@ set -ex
 # change to grpc repo root
 cd $(dirname $0)/../..
 
+TOX_PYTHON_ENV="$1"
+
 ROOT=`pwd`
 export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG
 export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG
@@ -45,9 +47,9 @@ export GRPC_PYTHON_USE_PRECOMPILED_BINARIES=0
 if [ "$CONFIG" = "gcov" ]
 then
   export GRPC_PYTHON_ENABLE_CYTHON_TRACING=1
-  tox
+  tox -e ${TOX_PYTHON_ENV}
 else
-  $ROOT/.tox/py27/bin/python $ROOT/setup.py test_lite
+  $ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py test_lite
 fi
 
 mkdir -p $ROOT/reports
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 4b9898539d..dea481ef90 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -356,25 +356,20 @@ class PhpLanguage(object):
 
 class PythonLanguage(object):
 
-  def __init__(self):
-    self._build_python_versions = ['2.7']
-    self._has_python_versions = []
-
   def configure(self, config, args):
     self.config = config
     self.args = args
-    _check_compiler(self.args.compiler, ['default'])
+    self._tox_env = self._get_tox_env(self.args.compiler)
 
   def test_specs(self):
     # load list of known test suites
     with open('src/python/grpcio/tests/tests.json') as tests_json_file:
       tests_json = json.load(tests_json_file)
     environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
-    environment['PYVER'] = '2.7'
     environment['PYTHONPATH'] = os.path.abspath('src/python/gens')
     if self.config.build_config != 'gcov':
       return [self.config.job_spec(
-          ['tools/run_tests/run_python.sh'],
+          ['tools/run_tests/run_python.sh', self._tox_env],
           None,
           environ=dict(environment.items() +
                        [('GRPC_PYTHON_TESTRUNNER_FILTER', suite_name)]),
@@ -399,18 +394,7 @@ class PythonLanguage(object):
     return []
 
   def build_steps(self):
-    commands = []
-    for python_version in self._build_python_versions:
-      try:
-        with open(os.devnull, 'w') as output:
-          subprocess.check_call(['which', 'python' + python_version],
-                                stdout=output, stderr=output)
-        commands.append(['tools/run_tests/build_python.sh', python_version])
-        self._has_python_versions.append(python_version)
-      except:
-        jobset.message('WARNING', 'Missing Python ' + python_version,
-                       do_newline=True)
-    return commands
+    return [['tools/run_tests/build_python.sh', self._tox_env]]
 
   def post_tests_steps(self):
     return []
@@ -421,6 +405,15 @@ class PythonLanguage(object):
   def dockerfile_dir(self):
     return 'tools/dockerfile/test/python_jessie_%s' % _docker_arch_suffix(self.args.arch)
 
+  def _get_tox_env(self, compiler):
+    """Returns name of tox environment based on selected compiler."""
+    if compiler == 'python2.7' or compiler == 'default':
+      return 'py27'
+    elif compiler == 'python3.4':
+      return 'py34'
+    else:
+      raise Exception('Compiler %s not supported.' % compiler)
+
   def __str__(self):
     return 'python'
 
@@ -808,7 +801,8 @@ argp.add_argument('--compiler',
                   choices=['default',
                            'gcc4.4', 'gcc4.9', 'gcc5.3',
                            'clang3.4', 'clang3.6',
-                           'vs2010', 'vs2013', 'vs2015'],
+                           'vs2010', 'vs2013', 'vs2015',
+                           'python2.7', 'python3.4'],
                   default='default',
                   help='Selects compiler to use. Allowed values depend on the platform and language.')
 argp.add_argument('--build_only',
diff --git a/tox.ini b/tox.ini
index a655935219..66b74a32db 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
 # GRPC Python tox (test environment) settings
 [tox]
 skipsdist = true
-envlist = py27
+envlist = py27,py34
 
 [testenv]
 setenv =
-- 
GitLab


From 63753077c504178182d1911f1c66f636ecd7da2b Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 26 Apr 2016 18:23:09 -0700
Subject: [PATCH 207/525] Get version explicitly

---
 tools/run_tests/build_package_node.sh | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 53dbed76d0..4a21104e28 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -35,7 +35,9 @@ set -ex
 
 cd $(dirname $0)/../..
 
-artifacts=$(pwd)/artifacts
+base=$(pwd)
+
+artifacts=$base/artifacts
 
 mkdir -p $artifacts
 cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=node,platform={windows,linux,macos}/artifacts/* $artifacts/ || true
@@ -47,6 +49,15 @@ cp grpc-*.tgz $artifacts/grpc.tgz
 
 mkdir -p bin
 
+cd src/node/tools
+npm update
+npm pack
+cp grpc-tools-*.tgz $artifacts/
+tools_version=$(npm list | grep -oP '(?<=grpc-tools@)\\S+')
+
+output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/$tools_version
+mkdir -p $output_dir
+
 for arch in {x86,x64}; do
   case arch in
     x86)
@@ -70,15 +81,6 @@ for arch in {x86,x64}; do
     input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
     cp $input_dir/protoc* bin/
     cp $input_dir/grpc_node_plugin* bin/
-    # For now, this will have to be manually uploaded to a folder with the
-    # correct package version
-    output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools
-    mkdir -p $output_dir
     tar -czf $output_dir/$node_plat-$node_arch.tar.gz bin/
   done
 done
-
-cd src/node/tools
-npm update
-npm pack
-cp grpc-tools-*.tgz $artifacts/
-- 
GitLab


From d9062b98a3662298f685a7dfe8207053af4f2424 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 26 Apr 2016 18:25:49 -0700
Subject: [PATCH 208/525] Get version explicitly

---
 tools/run_tests/build_package_node.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 4a21104e28..e98fabbc5f 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -53,7 +53,7 @@ cd src/node/tools
 npm update
 npm pack
 cp grpc-tools-*.tgz $artifacts/
-tools_version=$(npm list | grep -oP '(?<=grpc-tools@)\\S+')
+tools_version=$(npm list | grep -oP '(?<=grpc-tools@)\S+')
 
 output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/$tools_version
 mkdir -p $output_dir
-- 
GitLab


From ee9de2faeed5c7505ee4a34227a97485abd7d5dc Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 26 Apr 2016 18:59:47 -0700
Subject: [PATCH 209/525] cleanup build_interop.sh for python

---
 tools/dockerfile/grpc_interop_python/build_interop.sh | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/tools/dockerfile/grpc_interop_python/build_interop.sh b/tools/dockerfile/grpc_interop_python/build_interop.sh
index 6454a4f5e2..f29c59da8e 100755
--- a/tools/dockerfile/grpc_interop_python/build_interop.sh
+++ b/tools/dockerfile/grpc_interop_python/build_interop.sh
@@ -39,8 +39,4 @@ cp -r /var/local/jenkins/service_account $HOME || true
 
 cd /var/local/git/grpc
 
-make
-
-# build Python interop client and server
-CONFIG=opt ./tools/run_tests/build_python.sh
-
+tools/run_tests/run_tests.py -l python -c opt --build_only
-- 
GitLab


From 773d9908aa90652df9ac47a9ab16467658d32dd4 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 26 Apr 2016 18:27:31 -0700
Subject: [PATCH 210/525] Fix refcounting bug for mdstrs

---
 src/core/lib/transport/metadata.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c
index 779efbb97d..5847ec9053 100644
--- a/src/core/lib/transport/metadata.c
+++ b/src/core/lib/transport/metadata.c
@@ -386,10 +386,18 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
   for (s = shard->strs[idx]; s; s = s->bucket_next) {
     if (s->hash == hash && GPR_SLICE_LENGTH(s->slice) == length &&
         0 == memcmp(buf, GPR_SLICE_START_PTR(s->slice), length)) {
-      GRPC_MDSTR_REF((grpc_mdstr *)s);
-      gpr_mu_unlock(&shard->mu);
-      GPR_TIMER_END("grpc_mdstr_from_buffer", 0);
-      return (grpc_mdstr *)s;
+      if (gpr_atm_full_fetch_add(&s->refcnt, 1) == 0) {
+        /* If we get here, we've added a ref to something that was about to
+         * die - drop it immediately.
+         * The *only* possible path here (given the shard mutex) should be to
+         * drop from one ref back to zero - assert that with a CAS */
+        GPR_ASSERT(gpr_atm_rel_cas(&s->refcnt, 1, 0));
+        /* and treat this as if we were never here... sshhh */
+      } else {
+        gpr_mu_unlock(&shard->mu);
+        GPR_TIMER_END("grpc_mdstr_from_buffer", 0);
+        return (grpc_mdstr *)s;
+      }
     }
   }
 
@@ -397,7 +405,7 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
   if (length + 1 < GPR_SLICE_INLINED_SIZE) {
     /* string data goes directly into the slice */
     s = gpr_malloc(sizeof(internal_string));
-    gpr_atm_rel_store(&s->refcnt, 2);
+    gpr_atm_rel_store(&s->refcnt, 1);
     s->slice.refcount = NULL;
     memcpy(s->slice.data.inlined.bytes, buf, length);
     s->slice.data.inlined.bytes[length] = 0;
@@ -406,7 +414,7 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
     /* string data goes after the internal_string header, and we +1 for null
        terminator */
     s = gpr_malloc(sizeof(internal_string) + length + 1);
-    gpr_atm_rel_store(&s->refcnt, 2);
+    gpr_atm_rel_store(&s->refcnt, 1);
     s->refcount.ref = slice_ref;
     s->refcount.unref = slice_unref;
     s->slice.refcount = &s->refcount;
@@ -675,20 +683,19 @@ const char *grpc_mdstr_as_c_string(grpc_mdstr *s) {
 grpc_mdstr *grpc_mdstr_ref(grpc_mdstr *gs DEBUG_ARGS) {
   internal_string *s = (internal_string *)gs;
   if (is_mdstr_static(gs)) return gs;
-  GPR_ASSERT(gpr_atm_full_fetch_add(&s->refcnt, 1) != 0);
+  GPR_ASSERT(gpr_atm_full_fetch_add(&s->refcnt, 1) > 0);
   return gs;
 }
 
 void grpc_mdstr_unref(grpc_mdstr *gs DEBUG_ARGS) {
   internal_string *s = (internal_string *)gs;
   if (is_mdstr_static(gs)) return;
-  if (2 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
+  if (1 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
     strtab_shard *shard =
         &g_strtab_shard[SHARD_IDX(s->hash, LOG2_STRTAB_SHARD_COUNT)];
     gpr_mu_lock(&shard->mu);
-    if (1 == gpr_atm_no_barrier_load(&s->refcnt)) {
-      internal_destroy_string(shard, s);
-    }
+    GPR_ASSERT(0 == gpr_atm_no_barrier_load(&s->refcnt));
+    internal_destroy_string(shard, s);
     gpr_mu_unlock(&shard->mu);
   }
 }
-- 
GitLab


From 068d143c8e93f0db051e2a216b2f46b382a2a0ff Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 26 Apr 2016 20:37:10 -0700
Subject: [PATCH 211/525] Expand corpora

---
 .../04a5f10d2ebc712cf13c05b5ed0fafb31b42737c  | Bin 0 -> 570 bytes
 .../38a55e83e685617cdf72e95f1303857b627ae346  | Bin 0 -> 98 bytes
 .../40b4b92460c4e76a39af9042fb3d86d491a98e16  | Bin 0 -> 337 bytes
 .../6914f5f380c83ff9e3e90fc60d5048e47e5e77d9  | Bin 0 -> 367 bytes
 .../7abe8c414aa1418157c2d7ae5e70a84ffb61c027  | Bin 0 -> 405 bytes
 .../8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8  | Bin 0 -> 233 bytes
 .../b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361  | Bin 0 -> 232 bytes
 .../f755b44ff2221c971ca2bfaffc69e002ba982730  | Bin 0 -> 375 bytes
 .../1e64080289ea4168304417f3fbd86b01d7d6f431  | Bin 0 -> 229 bytes
 .../20ee437b7f456ebb19d98d94d9feb1d5e9174c65  | Bin 0 -> 142 bytes
 .../2c1ecf05c5dde692ed16502294e9570ac3b02600  | Bin 0 -> 22 bytes
 .../aa878edb0100e876e00e310ae221b220fdb5e028  | Bin 0 -> 131 bytes
 ...t-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9 | Bin 0 -> 25 bytes
 .../03a304b82629155af693978c2b53439e553f6450  | Bin 0 -> 225 bytes
 .../052c8f28e5884bb48f0d504461272cd3a5893215  | Bin 0 -> 286 bytes
 .../2c4c7e2ed6d977ec119b040b328ad09808909a70  | Bin 0 -> 287 bytes
 .../4d982c41efad2242f8c06630c23c68146153b47b  | Bin 0 -> 287 bytes
 .../830e3f794c53f7b284eb5c635b2943db9ee9aaee  | Bin 0 -> 287 bytes
 ...t-0aa52e00ddd54f8e129430852c2da95650c354b0 | Bin 0 -> 2048 bytes
 ...t-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8 | Bin 0 -> 2047 bytes
 ...t-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77 | Bin 0 -> 2048 bytes
 ...t-adaac86cf1aa1e98e95240c5f92c3708456c3624 | Bin 0 -> 2047 bytes
 ...t-b281f018cc919301131cf3ed28449cfbd24b6bbf | Bin 0 -> 2047 bytes
 ...t-ba0016a62a8576a57f000b90c364847ef6b12dcc | Bin 0 -> 2046 bytes
 ...t-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471 | Bin 0 -> 2048 bytes
 ...t-ccafab6afdc6474610023b47bd7b3e1b9ea4647b | Bin 0 -> 2047 bytes
 ...t-dc57e96cd02ba32fa4a99c97b6490e9879d30be5 | Bin 0 -> 2047 bytes
 ...t-f6c1042f96e15183dcc13b9658d971cc29426d53 | Bin 0 -> 2047 bytes
 ...t-f9a2773d6502fd4b1ffa73df3c550b0da63af833 | Bin 0 -> 2046 bytes
 tools/run_tests/tests.json                    | 464 ++++++++++++++++++
 30 files changed, 464 insertions(+)
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361
 create mode 100644 test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028
 create mode 100644 test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c b/test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c
new file mode 100644
index 0000000000000000000000000000000000000000..d46856deb1aca93384f486786efdef63284a482b
GIT binary patch
literal 570
zcmWek&PdG5OU+?mDo!mbOD$sH_|L>v&X>x;QB<a(^`D7}fvud6Bh_BbmWhq4+&;Ca
zjEPTyfsKJ7y{I5rFE_Cwz9=<0KQAvexg<U*F*!RwEiFE`m?8B)V^J9s17nd00}~s_
zTnProM_1U8jb>nA1ldzmrU5cJ)gESY>i@e%WlU=oU#l|~wX`$*=U7$7z<4N>sob7}
zk1ZAA4zOwl#v&~y{gy{e|NnCY>oKvV7H>{vVrzM{wmg-itjmGFhye_^)-o`rTCp<m
zv1yk7Pkqi&R94Es$e_jbpRtI6iQ$m~12+Q?6AMTw3j-$yCj$c`10w?iW6PtpEDW4r
zzd~HZ08-DET$Wm-0rJaQMRj$?W{3+J7!PqUFffE7+)|thatqiY3=Hrv23f)Yau3Kg
z<^NN$xP^z2fq@}4wYZ4sNFoCR<NhMXM=cx-tI9wD$}r{8Qfqhw6_sf*FzIVJLlmQi
ztaZzyL`EjIa%NCW@qz5I*ZL3ga7IZ<0mFXAc||R-crIf2pQ>!X)*x7~qllqQLx|}m
o8v_GK4CH+d&K>q^4TIG>7+W5(F<3KjFsx<ZEaG6`;AGeV0Qs<)Q2+n{

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346 b/test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346
new file mode 100644
index 0000000000000000000000000000000000000000..3c8c2c1c84922d0bed209730139d36a8cc13353e
GIT binary patch
literal 98
wcmZQ#E9cWp<tPe+GB}FDG_?L}X#I!sF(nun7#KKP9<60z;N;*$VPh8s0CTn#=>Px#

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16 b/test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16
new file mode 100644
index 0000000000000000000000000000000000000000..44a2b9e30ff9c9d351bc7be555944c7f73f16ffb
GIT binary patch
literal 337
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|R&K?Y%28CNq4l4MiGi)0k0aGy&6bIctK2@d
zsEmn^fsG;e|J|Z8CI-eLjRqz*kVXjx#z$A!nApnsQaK=685kjku(5HKr`m(`DKM}x
zq=GfBReY_^Sk%(a@SkH<83W^?PzJ^#EhhbzM~Y1U|8oTEF|nl<Z%$=mYk9P`Je8x&
zp@@NjfsuiMi-9rKij|3vO|$%e>T`~QvQh>{1}(1tj71Dg4388TxEXkum>3us7+4rM
z85tNDI5`*@7#Ld~tz}{0bWTkzE@C<Ya$(tj4vr!%jZ_BfmPd&Uj7)6h%nW>~MP>F{
z|3OAgd9?I5!~QD97LNZQ)wv+=2r<26V_;zTpUSdUnSqmobBF!fV6_g$mPc$1Rty{r
PYZ*9;I5-(N7<K>v66#ss

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9 b/test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9
new file mode 100644
index 0000000000000000000000000000000000000000..da0c78ebc07c6f4b42058e62aea8716b3e473166
GIT binary patch
literal 367
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|#*kiAkgS)RSP`F`pO;)(RFs-m5?@?Wl$w}Z
z%usH{m&#F8rlIwpiHU)&oR1^bUd@(?jjP-~wWutEiI0JeA@~2?qB151#v+XdCN_|<
z5)6!wuCOt&mGh-?K=d*&LQG*}<0?<JFDhf=Q($0YNCj(LtN2=-v8bh;;XlW!G6u#&
zp$v>gT1@&aj})2y|K|wSV`57!-ki$B*7E2}c`8SlLlFZ510w?i7XxFe6)O`Tn`Zg{
z)aM)pWu**^3|d_O8H*U07#=Awa5L~QF)=VOFt9LiGBPkQaB?s*Ffg_}TFb(~>71Hc
zT*Pz)<ifK592`Yj8mSD{Esqiz7@640nHl&}i^}Y^{)3E~@@VOAhW%BHEgb(rs&hf!
v5n_7D#=yYvKb2*zG6N?E=MMX|!D=0hEsxk3tQa^L)-rGwad0wlFzf&T<v?Yw

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027 b/test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027
new file mode 100644
index 0000000000000000000000000000000000000000..6b06ce291a5e7f07e95cabe10f25d6b9457c9c0a
GIT binary patch
literal 405
zcmZQ7PAw`+En?u<^Ph={t(-5FgQKWSL+d{i69XG#dQm~LUUh16eqKsmQDuB-acWU~
zdTL$?!~eTQWlRhVVENp{iufXsn!MEHlK7;=<m~*kwD{a&hDTTa{{R0UY-UlJ1```s
zd8&O;851AGnj!@THip#y{dbGX6q(j4zE)=}YGGh#XZX*-z}Oqgz*wZkq~G$0>HmL@
zU_B<b)Z)#lOl;+;MGR$K3=SNO3?RU@mVwcVm5Gl{v;2SRbB?02QU=B{`~QqZ4FCWC
z|F6XbVlgp1Qefa_;9+7^2WeqoY<aX+lYxVgfrWvAvE|iT76#rIsj0<9Oh=gV%K1{6
z^x2sHrz+bU1nYGaF|n0%aFl^UgMq=i<xwI7Bh=|-_N)H?mfBy$_(-6I<3Ci8FO{Q+
ziGiUE6nsoC*%%lY{--LhWl`Yd;M`%q*62UTzDEp<EsPA0)-rH%Fa)cCT-m|c@`#OL
TEd!@j5yx5v4+aJfPKF%-W5a#m

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8 b/test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8
new file mode 100644
index 0000000000000000000000000000000000000000..a0b621b9fc2a4165006ffdbfdc3c8663338b5f70
GIT binary patch
literal 233
zcmWek&PdG5OSQ{kU@A^6DoZV5;P}tPR?f$f%28CNq4l4M0mR`=wO6xcV&f{ePc15A
z;!|K?V@UnaSX9Qyz{FI<zy{JM!NB;4?FvY1DhEU>0|R3@AJ`a>&QyDZ&bvirOluWi
zGy1o*GyLaRRmQ-0D3pP*NQ+6o<<bBD9Km`_Y^lYYQ<>OW9<41;<tXcNC}IEuuC)w|
zsek`7@v&)^|9{R=R94Es$e_jbpRtI6iQ$m~12+Q?6AMTs3j-$yCj$c`10w?iW6Ptp
GEDQki13cRR

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361 b/test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361
new file mode 100644
index 0000000000000000000000000000000000000000..80aa9b8a3d92444102d081272b5aed3093752bd3
GIT binary patch
literal 232
zcmWek&PdG5OU+?mDo!mjOD$sH_|L>v&c~6;QB<a(^`D6W#Nkb~SF>ee<0`jLEh=N;
zQ($0YNd3=PRK~=>Sj51@R#cW+B*DP=i0ukUYbpmsD+2>#IUm><kj_+lgwDG~WlU=o
zUo-l*v@`tYSXIWrcqo*Cu}F(azva>Y{~W=3Ol+yen^T$CS{|(}Pvt1<awuW|1Fp3U
zjH!SBGx4!$mj8dwQB+pSz{sG*^&jL4hDQnv+zdQSEFhIE44fRC3=E76j0_BnEsxf+
GFaQ99csyMI

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730 b/test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730
new file mode 100644
index 0000000000000000000000000000000000000000..32dab3be54740cd1b8178d2e21bda6e0771310fe
GIT binary patch
literal 375
zcmWek&PdG5OU+?mDo!mbOD$sH_|L?|#*kiAkgS(cQc_@~mr;<IoE=}1n3R(mUz}N$
zs+XFVoS%|f#87U<m&#F8rlIwpiHU)&oR1^bUd@(?jjP-~wWy4VkAaOL_y66ZGA0Jb
zB8>(nHjwEO42+MiuraZf^QCe?v@$R-LQG*}<0?<J2WeDbU}H!H>s+h&TAi_|rJdnF
z$Eq?0#zUbDj73^Z`Yn$Xng0Lh2-ag_OD*1<`tSe$|7*)rIm#T07{GvwficyJm5Gl{
zv;2SRbB=<tQU*o_Ew2BJMGQ;~j}#cV8F-kOKq^@nI2joj7&ti?85kH_9<60z;B-z+
zEiPg@0&-&6e-4f!EsazL>y}4}42(={<;)CxsYPY>TK_>tO?kBRH^cra#ukqMAl11b
w{|GU?WMg1p_@BzMR+)j5gL8-d+F-Q~#+FBH3|0ah3~L!Ui#RwLI2d*S0Hy|N3jhEB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431 b/test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431
new file mode 100644
index 0000000000000000000000000000000000000000..374b283186cb2fc5f9d5af3719728057b26308bc
GIT binary patch
literal 229
zcmZQz&|+j^Vqjoo5J@j8NY+hEPEIW-(M`>JoS%}JmzJ86&XZHZz`_6qjEoGqxr(`p
zjDAxmPE?$jt2oimPko}M*2;+!7fwV7`7tptFev77Fid1r%*|y46N(@$2ptnA!VQ?{
zm#UMlky*eF(xb_etH`K05u_MyJ_DoX#EE{26DRt8nCR!HIni(8#EE_r{rvp=W~fip
goCtEk#EE`f6B9wg6TuQ7Nk2b7D?dN26@Gqx09vz2KL7v#

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65 b/test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65
new file mode 100644
index 0000000000000000000000000000000000000000..29243f999626e72e2f64aad3f36ef406173dca84
GIT binary patch
literal 142
zcmY$)&1F{f%gtqEm^yKy;>27<MG)mT@tmK!Vs0*@q92&d)ns;e4PnVuoH)@Bgg;F5
z^V6KjH8FAG#EBFA{QRa)oH$W)q8~_W?o_Zb6aD-^66zB*K?)Q#Cr(uN^P4ykB)QAa
T&rcB~36k;i^Yeo!0*L?s42U#U

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600 b/test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600
new file mode 100644
index 0000000000000000000000000000000000000000..0f30385492e93c1eef80915d82fb364a1f5fb5bb
GIT binary patch
literal 22
ecmY$$wf@gIajGAK;IIGx|Eo`&s4>%TnjZjjfeL{D

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028 b/test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028
new file mode 100644
index 0000000000000000000000000000000000000000..bc6a44485273bf3b4b1f77dcaf439759afcbedd3
GIT binary patch
literal 131
zcmY$)&F5fXRLsp~1QS~srcRtVF;{V-pC5l>a&l@xiEe6Ma(+r?Ub^~3O|6L&r%s%x
z2$A=j=%?7M$&#zcs5sFNA*?=8bK*ol#fcOBK1}rU)12rxapFY3iGF?%ajuDpAnwG8
Heh2^nt?DnV

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9 b/test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9
new file mode 100644
index 0000000000000000000000000000000000000000..997b3d360b14675a7a4d6006619af2187c431234
GIT binary patch
literal 25
bcmZo*RAkT1&1KB>Q{0=#z^Ir5;(<5-SI-Aw

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450 b/test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450
new file mode 100644
index 0000000000000000000000000000000000000000..d4072c69216efd1baabae8515fcea67703600252
GIT binary patch
literal 225
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&Sj8C_7+4sffRTlPfsu=s3rS28B*wsqrd5C^
zy{I5rw<I$+HNUik%P>zNKczU;Ai0=<0iuB!U4@B4F#`i5*eXVbr648)Luzt<9s>(Q
gN-+Zy$X19Wk?iII+s(|tzyx+5GXnzyC&;ag0Bgq|3jhEB

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215 b/test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215
new file mode 100644
index 0000000000000000000000000000000000000000..5cbafc457ca08c481d645cbd34d90ab13436c63e
GIT binary patch
literal 286
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^z5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5%3{PfpAMu>^S1iwcr;b5o0p
z6Vp@W5(^4)GLsWaGV}BFK@!>}8JWepnZ>$gj7FI$0wN$W-NfYN)PfS-)V$>Ul+3(z
z(ae<8ypqh4N}ZI{w4B6}RGsvy%mM+Xl2ne8qQuOc)S_YmuF~SvBHhIF)Vva<q{I~6
y<ebdZyb=Ylamo4ydWJ>}tVM}=>8T8Pr4^b`N0nserskKHFdG^Kqlz#Y1p@%lmsczR

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70 b/test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70
new file mode 100644
index 0000000000000000000000000000000000000000..1d73a923c3e36e1171829f6b1582732ef740230b
GIT binary patch
literal 287
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5%3{PfpAMu>^RM^Ycnl^Gb9}
zDhpEO5(^4)GLsWaGV}BF(~Am{wM#NGi*+-Lb;}ZSGE)RZKw`Ry$;qh&C3(83$@wXn
zdFi5=DXDoSnI)AvDXD2Wi6yBz=~bBp0!$^T93@4GnK`LN#R6QV#i>QQiRr0%B}z$&
zDb~q3nW=dt3Si@s^-c8*jr0uk3=}kSGV@9+GzECT5+#|rsrjWP%!UTJ!Kgw^M!^7^
C&{#SE

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b b/test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b
new file mode 100644
index 0000000000000000000000000000000000000000..fa1d5f081e4e59fcf3d9b0836eb8fcee2ab1a9ff
GIT binary patch
literal 287
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5%3{PfpAMu>^RM^Ycnl^Gb9}
zDhpEO5(^4)GLsWaGV}BF(~Am{wM#NGi*+-Lb;}ZSGE)RZKw`Ry$;qh&C3(83$@wXn
zdFi5=DXDoSnI)AvDXD2Wi6yBz=~bBp0!$^T93@4GnK`LN#R6QV#i>QQiRr0%B}z$&
zDZ0rynW=dt3Si@s^$qk4jr0uk3=}kSGV@9+GzECT5+#|rsrjWP%!UTJ!Kgw^M!^7=
CB3LH?

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee b/test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee
new file mode 100644
index 0000000000000000000000000000000000000000..366077e52821a1dd5180f7f96882cc64eb06864f
GIT binary patch
literal 287
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5yhh$Vtr4$uBMu;7QKUD@n~O
z(JiSgNR>-0D9Fi7PAtjH&(lvYDoEBY$;d3$%`Da}OU%hk5fA~1=_e*9rxujt>82*<
zr)1`(i)N;z=9OfYRO+OprsX82rk7+^=@bYsm85c%6eVWnq!twmaFrIP7U?FYr{<L?
zB_*clCg)_P=9MUbjMGilH_|gS(lgLAP|(Q9%qy+X6yO0%lw{_n=9iW*8ye&WqY5z@
G1p@$?1XwEo

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0
new file mode 100644
index 0000000000000000000000000000000000000000..15d6f17cd386af5d553052a0a29d390ef739ec00
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=9ek3=9k>8Ce(@7#IautqKxLGC1_p
z^7HkR5{m@bt%{Q~Qgc&TGD=Dc1lX-|Q%f@PQ&<B0gF^(ktP)F0GV+TuODZ{Y@{<#D
zGV+T{1bCA3^GZ_lN_0yq3sMCV3kq^FlM_oa^Yir6iwcqjL_nl&Vsdh7L5Xf^UUGg)
zW?s5zN@`k8Vo9n_W=d*aNoGl<PI^^lfdErUDo06CVrEWiQLzA5X>n?iZen_BUWrmt
zVv25ZPG)Lei2~TTWPJlYLnA!{Jp%=eoXot^3QY$4KOk>0FoMZZVl)JXVF&~dLqCmr
WiPR9VB2~kvdisSx82zlmZ4&_8pi9dD

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8
new file mode 100644
index 0000000000000000000000000000000000000000..ca94f4b84365f1b07bac8982f266c477ccc9564b
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=rc3?{{R1f
zkpR0@adJj#ZYoPgNlAeKyH###Nk)DOOMriHhya&WVrfZ6eo<ygC1*~4a$-(KesPHa
zPjY@<Norn+Zb@Z9sz72vK~83JVo7Fxo_=~!L9&1dh}2C?PEIW-(M`=u&QHnAOBYQ^
zP0L9vN!7_rNzE(CEUDB<ugWYCU@A%FC@D(J%t>Y7gPEF>nwMUZ!H}YxoRgWFSE2wm
zE?M6|&(KKEK+ixyBPTPjv_g}?{twt=j9_w<7!8487y`k=&`+aYA~gi8NYyZ^eq@CJ
E0R5p%EdT%j

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77
new file mode 100644
index 0000000000000000000000000000000000000000..9e7b0022381185ac6afc7b52c155ee91d126d51f
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;3fB~nAcic}4w
e>gg8(VHj5NW~S-p<>#g9<|dXTXJAOvLI42vvrwJ@

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624
new file mode 100644
index 0000000000000000000000000000000000000000..c525f76ce3cb9ae6637a942c04214db0ef6d633d
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kejyM%{Jb>kBa%bFiew$5
O8t4`RVRW+zk3|5LiA$>h

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf
new file mode 100644
index 0000000000000000000000000000000000000000..380cd877caed9a240848c26392c54ed431deb082
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;3fB@#oxibVCJ
O%IO#aVRW<$r&R!zHcP7j

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc
new file mode 100644
index 0000000000000000000000000000000000000000..cbd18291f10c97dfef925dbcaf1751bc65daf17b
GIT binary patch
literal 2046
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?lX{{R1f
zkpR0@adJj#ZYoPgNlAeKyH###Nk)DOOMriHhya&WVrfZ6eo<ygC1*~4a$-(KesPHa
zPjY@<Norn+Zb@Z9sz72vK~83JVo7Fxo_=~!L9&1dh}2C?PEIW-(M`=u&QHnAOBYQ^
zP0L9vN!7_rNzE(CEUDB<ugWYCU@A%FC@D(J%t<XO7T_u^PA$?+Oi#@#QA$co(M`_D
zOwB7%02`OAZ=h#rq-UUKprDbHnO9n&$zcBn>@h|#IZBL%!0-!!;Nj<`Q6G^U0#+pJ
K7}YSMLI40Tq)jFO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471
new file mode 100644
index 0000000000000000000000000000000000000000..3f5b83987ce833cabbe398606a8498bd07db3c6b
GIT binary patch
literal 2048
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=nXV5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0V;Ic|AEy>6)$}Fkm%*jtq%*n_vE)n2K
z&d)1J%`4F@sVqnpNGvGG$xKcx$;{8wPcJG+77ziEx{1ljsRbpvsd>ryDVcfcqA96q
zIf*5yI+-b{c_o=8l{)EFnFRt&C8-=GMTwa?sYS&CT&2aSMY@UUsd*(zNr@@C$vK&+
zc_j*9<C66a^bC#k4D<{XG;%WYN-H!O?Eip0#t0@yiO~=kh9M9<4E;o`mzarFIPBF~
P4SOFBVGo842DbwM>D5cF

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b
new file mode 100644
index 0000000000000000000000000000000000000000..65737bfeacfc7dcc8a4d28cc46fb237b920a7782
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTP44M#Xlq4<$n2A$1s%l_EAb4P{
UAGLi@gn-qcaK)%225krc0E5j+y8r+H

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5
new file mode 100644
index 0000000000000000000000000000000000000000..6c4ed6d13e132724e518133cb292889647330355
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqXcOoz)YI*QPl$z0>J}g?WnDT
UDg>+sm22qW7<D?>F`TRb0F#MIxc~qF

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53
new file mode 100644
index 0000000000000000000000000000000000000000..414dc698e916c484b84bb568da92c8f3a109408e
GIT binary patch
literal 2047
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k48srz9_)VNgXZ((jKrei
V)RMvO+@a|{tD))aQCHI|1OU~RP$U2V

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833 b/test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833
new file mode 100644
index 0000000000000000000000000000000000000000..bf38fac345d5abf9b2e29bec704d8077b3fc2691
GIT binary patch
literal 2046
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>_zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(rKH3Z-Q=9i
z)VvY}uyM)y26~1@dIow13K}_?d8HMa4EBG(9%BTPqr_+k4D}G;!1O>crqHO!NDBcg
Qx_DTFF1CzXLW2+h0C0LrzW@LL

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 5b9a8fade2..85fca6f221 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23464,6 +23464,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/04a5f10d2ebc712cf13c05b5ed0fafb31b42737c"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/04e01f399f194434b2b724877df64828e8f52c14"
@@ -25528,6 +25544,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/38a55e83e685617cdf72e95f1303857b627ae346"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/38c609f72f5a2cf977788afef9c34652f754add0"
@@ -25720,6 +25752,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/40b4b92460c4e76a39af9042fb3d86d491a98e16"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/42324d3d9e013cd43d4feeed1b48fbe1ea18a732"
@@ -26888,6 +26936,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/6914f5f380c83ff9e3e90fc60d5048e47e5e77d9"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/696ea30e2e1490f2f31b153641b2c29152ded5c2"
@@ -27400,6 +27464,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/7abe8c414aa1418157c2d7ae5e70a84ffb61c027"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/7be89fb64b3d931387e8a5b1ef51bf9cda18006a"
@@ -28024,6 +28104,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/8c5bbcc6935d43c94a0c4ce4a5da01c04fd223d8"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/8d7bb385d6b13b0e689a1e81e29113746218ba99"
@@ -29352,6 +29448,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/b5bcc7f39420e997ec6f8e3c70ef49b8f1afb361"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/b5daec8e0821e8626c9b93ece56ccfef0511346b"
@@ -32648,6 +32760,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/api_fuzzer_corpus/f755b44ff2221c971ca2bfaffc69e002ba982730"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "api_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/api_fuzzer_corpus/f788d2b893fe39fe24582acffa6a70f1ca4e3037"
@@ -33960,6 +34088,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/1e64080289ea4168304417f3fbd86b01d7d6f431"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/1e84d42fcf18bbf81ef6e8a16a0c57abbf8d292a"
@@ -34120,6 +34264,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/20ee437b7f456ebb19d98d94d9feb1d5e9174c65"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2166c7093c424a2136c4cb8b10d0b124047320d4"
@@ -34504,6 +34664,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/2c1ecf05c5dde692ed16502294e9570ac3b02600"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/2c342f8715556398d49bcf3343b5a249d968e19e"
@@ -37656,6 +37832,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/aa878edb0100e876e00e310ae221b220fdb5e028"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/client_fuzzer_corpus/aaada46c7f3bff58c2dd6f4a8394135ed5f253ee"
@@ -40104,6 +40296,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/client_fuzzer_corpus/slow-unit-53cf4d25741d5f6e7ad9147b286ff0b40cb500a9"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "client_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/transport/chttp2/hpack_parser_corpus/0141fcddc9807ee093313b2256f1306fbbdc6cda"
@@ -57512,6 +57720,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/03a304b82629155af693978c2b53439e553f6450"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/03b9be1fa172dff5d1543be079b9c64fa2c9a278"
@@ -57528,6 +57752,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/05c3a0390d0f52d241728926fa901599a47e4606"
@@ -58520,6 +58760,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/2c4c7e2ed6d977ec119b040b328ad09808909a70"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/2c6660ba.bin"
@@ -59288,6 +59544,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/4d982c41efad2242f8c06630c23c68146153b47b"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4db3d4075ed27f2a2311f85dd1d6df028cc5d083"
@@ -60376,6 +60648,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/830e3f794c53f7b284eb5c635b2943db9ee9aaee"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/8338ebee.bin"
@@ -62808,6 +63096,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0aa52e00ddd54f8e129430852c2da95650c354b0"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-13501419f349b7855d2e94060bd08b28923d1f37"
@@ -62904,6 +63208,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-3cec540a680b108dda1e0a8e0bfb2d44e5a4a4e8"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-4c6da955e4c101b81a62b2f8e934d94a62ae534b"
@@ -63064,6 +63384,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-84f22ffca68c6e1590a44aa9f6dd0cef1f680c77"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-93cd6b3f9786ee107a0e2d135b40d13f96e652ed"
@@ -63144,6 +63480,70 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-adaac86cf1aa1e98e95240c5f92c3708456c3624"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-b281f018cc919301131cf3ed28449cfbd24b6bbf"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba0016a62a8576a57f000b90c364847ef6b12dcc"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba17346b8e46e6a05aaa7342a959a7c5ab0f1471"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ba2b1fde90cc70d9abae22c4c4cb051aae8aa148"
@@ -63224,6 +63624,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ccafab6afdc6474610023b47bd7b3e1b9ea4647b"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-d3c3cba3897fafec97665411ea1f94a89bb4de7b"
@@ -63256,6 +63672,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-dc57e96cd02ba32fa4a99c97b6490e9879d30be5"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ddfe613d8791b2d377e14fbdffb18b84a89d49b6"
@@ -63288,6 +63720,38 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f6c1042f96e15183dcc13b9658d971cc29426d53"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-f9a2773d6502fd4b1ffa73df3c550b0da63af833"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/client_config/uri_corpus/02d156dc5e6f2c11c90c2e06fcee04adf036a342"
-- 
GitLab


From 9859d8d2969ab28541a91b77a321d9c7265c45fd Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 26 Apr 2016 21:07:53 -0700
Subject: [PATCH 212/525] Fix use-after-free

---
 src/core/lib/surface/call.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index f33688beef..3f31e77247 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -373,7 +373,6 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
   if (c->receiving_stream != NULL) {
     grpc_byte_stream_destroy(exec_ctx, c->receiving_stream);
   }
-  GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, c->channel, "call");
   gpr_mu_destroy(&c->mu);
   for (i = 0; i < STATUS_SOURCE_COUNT; i++) {
     if (c->status[i].details) {
@@ -391,7 +390,9 @@ static void destroy_call(grpc_exec_ctx *exec_ctx, void *call, bool success) {
   if (c->cq) {
     GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
   }
+  grpc_channel *channel = c->channel;
   grpc_call_stack_destroy(exec_ctx, CALL_STACK_FROM_CALL(c), c);
+  GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, channel, "call");
   GPR_TIMER_END("destroy_call", 0);
 }
 
-- 
GitLab


From cce51fe5ac8a394ed6e3ca5b1d9c504148bbf345 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Tue, 26 Apr 2016 21:36:29 -0700
Subject: [PATCH 213/525] Added compression tracer

---
 src/core/lib/channel/compress_filter.c | 22 ++++++++++++++++++++++
 src/core/lib/channel/compress_filter.h |  2 ++
 src/core/lib/surface/init.c            |  1 +
 3 files changed, 25 insertions(+)

diff --git a/src/core/lib/channel/compress_filter.c b/src/core/lib/channel/compress_filter.c
index 3d42d0e616..d423aa464e 100644
--- a/src/core/lib/channel/compress_filter.c
+++ b/src/core/lib/channel/compress_filter.c
@@ -47,6 +47,8 @@
 #include "src/core/lib/support/string.h"
 #include "src/core/lib/transport/static_metadata.h"
 
+int grpc_compress_filter_trace = 0;
+
 typedef struct call_data {
   gpr_slice_buffer slices; /**< Buffers up input slices to be compressed */
   grpc_linked_mdelem compression_algorithm_storage;
@@ -169,9 +171,29 @@ static void finish_send_message(grpc_exec_ctx *exec_ctx,
   did_compress =
       grpc_msg_compress(calld->compression_algorithm, &calld->slices, &tmp);
   if (did_compress) {
+    if (grpc_compress_filter_trace) {
+      char *algo_name;
+      const size_t before_size = calld->slices.length;
+      const size_t after_size = tmp.length;
+      const float savings_ratio = 1.0f - (float)after_size / (float)before_size;
+      GPR_ASSERT(grpc_compression_algorithm_name(calld->compression_algorithm,
+                                                 &algo_name));
+      gpr_log(GPR_DEBUG,
+              "Compressed[%s] %d bytes vs. %d bytes (%.2f%% savings)",
+              algo_name, before_size, after_size, 100 * savings_ratio);
+    }
     gpr_slice_buffer_swap(&calld->slices, &tmp);
     calld->send_flags |= GRPC_WRITE_INTERNAL_COMPRESS;
+  } else {
+    if (grpc_compress_filter_trace) {
+      char *algo_name;
+      GPR_ASSERT(grpc_compression_algorithm_name(calld->compression_algorithm,
+                                                 &algo_name));
+      gpr_log(GPR_DEBUG, "Algorithm '%s' enabled but decided not to compress.",
+              algo_name);
+    }
   }
+
   gpr_slice_buffer_destroy(&tmp);
 
   grpc_slice_buffer_stream_init(&calld->replacement_stream, &calld->slices,
diff --git a/src/core/lib/channel/compress_filter.h b/src/core/lib/channel/compress_filter.h
index 0d973329c4..cf5879d82e 100644
--- a/src/core/lib/channel/compress_filter.h
+++ b/src/core/lib/channel/compress_filter.h
@@ -38,6 +38,8 @@
 
 #define GRPC_COMPRESS_REQUEST_ALGORITHM_KEY "grpc-internal-encoding-request"
 
+extern int grpc_compress_filter_trace;
+
 /** Compression filter for outgoing data.
  *
  * See <grpc/compression.h> for the available compression settings.
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index 03f379aba8..736e8b296f 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -164,6 +164,7 @@ void grpc_init(void) {
     grpc_register_tracer("channel_stack_builder",
                          &grpc_trace_channel_stack_builder);
     grpc_register_tracer("http1", &grpc_http1_trace);
+    grpc_register_tracer("compression", &grpc_compress_filter_trace);
     grpc_security_pre_init();
     grpc_iomgr_init();
     grpc_executor_init();
-- 
GitLab


From a93e5a49e3d04c2f72e320040a15121e4d88b5d3 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 26 Apr 2016 21:47:49 -0700
Subject: [PATCH 214/525] Fix use-after-free

---
 .../chttp2/transport/chttp2_transport.c       | 20 +++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 24448714a8..fcf2abfe66 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -1668,6 +1668,14 @@ static void set_pollset(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
  * BYTE STREAM
  */
 
+static void incoming_byte_stream_unref(grpc_exec_ctx *exec_ctx,
+                                       grpc_chttp2_incoming_byte_stream *bs) {
+  if (gpr_unref(&bs->refs)) {
+    gpr_slice_buffer_destroy(&bs->slices);
+    gpr_free(bs);
+  }
+}
+
 static void incoming_byte_stream_update_flow_control(
     grpc_chttp2_transport_global *transport_global,
     grpc_chttp2_stream_global *stream_global, size_t max_size_hint,
@@ -1738,6 +1746,7 @@ static void incoming_byte_stream_next_locked(grpc_exec_ctx *exec_ctx,
     bs->on_next = arg->on_complete;
     bs->next = arg->slice;
   }
+  incoming_byte_stream_unref(exec_ctx, bs);
 }
 
 static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
@@ -1747,20 +1756,13 @@ static int incoming_byte_stream_next(grpc_exec_ctx *exec_ctx,
   grpc_chttp2_incoming_byte_stream *bs =
       (grpc_chttp2_incoming_byte_stream *)byte_stream;
   incoming_byte_stream_next_arg arg = {bs, slice, max_size_hint, on_complete};
+  gpr_ref(&bs->refs);
   grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
                                    incoming_byte_stream_next_locked, &arg,
                                    sizeof(arg));
   return 0;
 }
 
-static void incoming_byte_stream_unref(grpc_exec_ctx *exec_ctx,
-                                       grpc_chttp2_incoming_byte_stream *bs) {
-  if (gpr_unref(&bs->refs)) {
-    gpr_slice_buffer_destroy(&bs->slices);
-    gpr_free(bs);
-  }
-}
-
 static void incoming_byte_stream_destroy(grpc_exec_ctx *exec_ctx,
                                          grpc_byte_stream *byte_stream);
 
@@ -1801,12 +1803,14 @@ static void incoming_byte_stream_push_locked(grpc_exec_ctx *exec_ctx,
   } else {
     gpr_slice_buffer_add(&bs->slices, arg->slice);
   }
+  incoming_byte_stream_unref(exec_ctx, bs);
 }
 
 void grpc_chttp2_incoming_byte_stream_push(grpc_exec_ctx *exec_ctx,
                                            grpc_chttp2_incoming_byte_stream *bs,
                                            gpr_slice slice) {
   incoming_byte_stream_push_arg arg = {bs, slice};
+  gpr_ref(&bs->refs);
   grpc_chttp2_run_with_global_lock(exec_ctx, bs->transport, bs->stream,
                                    incoming_byte_stream_push_locked, &arg,
                                    sizeof(arg));
-- 
GitLab


From d04376d1e868670625a3e03986ba6fd5488e26ba Mon Sep 17 00:00:00 2001
From: thinkerou <thinkerou@gmail.com>
Date: Wed, 27 Apr 2016 19:58:49 +0800
Subject: [PATCH 215/525] PHP Extension: add owned assignment

---
 src/php/ext/grpc/call.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index a0f3d160c6..a2c1c08169 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -96,6 +96,7 @@ zval *grpc_php_wrap_call(grpc_call *wrapped, bool owned) {
   wrapped_grpc_call *call =
       (wrapped_grpc_call *)zend_object_store_get_object(call_object TSRMLS_CC);
   call->wrapped = wrapped;
+  call->owned = owned;
   return call_object;
 }
 
-- 
GitLab


From 640d71dda90fee3dbb66f1b50c9b42058d063244 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Wed, 27 Apr 2016 07:17:58 -0700
Subject: [PATCH 216/525] Use cpp macros for the "application/grpc" string and
 its length. Also remove unnecessary strlen() call.

---
 src/core/lib/channel/http_server_filter.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/core/lib/channel/http_server_filter.c b/src/core/lib/channel/http_server_filter.c
index ad3462bff4..192783f4ed 100644
--- a/src/core/lib/channel/http_server_filter.c
+++ b/src/core/lib/channel/http_server_filter.c
@@ -39,6 +39,9 @@
 #include "src/core/lib/profiling/timers.h"
 #include "src/core/lib/transport/static_metadata.h"
 
+#define EXPECTED_CONTENT_TYPE "application/grpc"
+#define EXPECTED_CONTENT_TYPE_LENGTH sizeof(EXPECTED_CONTENT_TYPE) - 1
+
 typedef struct call_data {
   uint8_t seen_path;
   uint8_t seen_method;
@@ -93,9 +96,10 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) {
     return NULL;
   } else if (md->key == GRPC_MDSTR_CONTENT_TYPE) {
     const char* value_str = grpc_mdstr_as_c_string(md->value);
-    if (strncmp(value_str, "application/grpc", 16) == 0 &&
-        (strlen(value_str) == 16 ||
-         value_str[16] == '+' || value_str[16] == ';')) {
+    if (strncmp(value_str, EXPECTED_CONTENT_TYPE,
+                EXPECTED_CONTENT_TYPE_LENGTH) == 0 &&
+        (value_str[EXPECTED_CONTENT_TYPE_LENGTH] == '+' ||
+         value_str[EXPECTED_CONTENT_TYPE_LENGTH] == ';')) {
       /* Although the C implementation doesn't (currently) generate them,
          any custom +-suffix is explicitly valid. */
       /* TODO(klempner): We should consider preallocating common values such
-- 
GitLab


From 1843ccb226c477798ed7dd25287cb9ef3a87c754 Mon Sep 17 00:00:00 2001
From: Benjamin Herzog <benjamin.herzog@lovoo.com>
Date: Wed, 27 Apr 2016 17:39:26 +0200
Subject: [PATCH 217/525] Use static const strings

---
 src/compiler/objective_c_plugin.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc
index 9522956fde..3ccfd5b037 100644
--- a/src/compiler/objective_c_plugin.cc
+++ b/src/compiler/objective_c_plugin.cc
@@ -81,12 +81,12 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
         declarations += grpc_objective_c_generator::GetHeader(service);
       }
 
-      ::grpc::string nonNullBegin = "\nNS_ASSUME_NONNULL_BEGIN\n\n";
-      ::grpc::string nonNullEnd = "\nNS_ASSUME_NONNULL_END\n";
+      static const ::grpc::string kNonNullBegin = "\nNS_ASSUME_NONNULL_BEGIN\n\n";
+      static const ::grpc::string kNonNullEnd = "\nNS_ASSUME_NONNULL_END\n";
 
       Write(context, file_name + ".pbrpc.h",
-          imports + '\n' + proto_imports + '\n' + nonNullBegin + 
-          declarations + nonNullEnd);
+          imports + '\n' + proto_imports + '\n' + kNonNullBegin + 
+          declarations + kNonNullEnd);
     }
 
     {
-- 
GitLab


From c0ad0bd485d0d7358e1378e8e8e79098888094c2 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 27 Apr 2016 09:53:06 -0700
Subject: [PATCH 218/525] Clear bin directory after generating each tarball

---
 tools/run_tests/build_package_node.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index e98fabbc5f..e945f2a00e 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -78,6 +78,7 @@ for arch in {x86,x64}; do
       *)
         node_plat=$plat
     esac
+    rm bin/*
     input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
     cp $input_dir/protoc* bin/
     cp $input_dir/grpc_node_plugin* bin/
-- 
GitLab


From 3c6ace6969e506cc3917c389342ab2535afa41b4 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 27 Apr 2016 10:16:54 -0700
Subject: [PATCH 219/525] Fixed case statement in build_package_node

---
 tools/run_tests/build_package_node.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index e945f2a00e..6bc9466b63 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -77,6 +77,7 @@ for arch in {x86,x64}; do
         ;;
       *)
         node_plat=$plat
+        ;;
     esac
     rm bin/*
     input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
-- 
GitLab


From 1f3319bc88009355a07cbc757e007a659c5beaf8 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Wed, 27 Apr 2016 10:59:19 -0700
Subject: [PATCH 220/525] Fixed clang formatting problems.

---
 src/core/lib/channel/http_server_filter.c   |  2 +-
 test/core/bad_client/tests/simple_request.c | 36 ++++++++++-----------
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/src/core/lib/channel/http_server_filter.c b/src/core/lib/channel/http_server_filter.c
index 192783f4ed..59dded6342 100644
--- a/src/core/lib/channel/http_server_filter.c
+++ b/src/core/lib/channel/http_server_filter.c
@@ -95,7 +95,7 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) {
        require */
     return NULL;
   } else if (md->key == GRPC_MDSTR_CONTENT_TYPE) {
-    const char* value_str = grpc_mdstr_as_c_string(md->value);
+    const char *value_str = grpc_mdstr_as_c_string(md->value);
     if (strncmp(value_str, EXPECTED_CONTENT_TYPE,
                 EXPECTED_CONTENT_TYPE_LENGTH) == 0 &&
         (value_str[EXPECTED_CONTENT_TYPE_LENGTH] == '+' ||
diff --git a/test/core/bad_client/tests/simple_request.c b/test/core/bad_client/tests/simple_request.c
index d6b85aefb5..3ae6eb3592 100644
--- a/test/core/bad_client/tests/simple_request.c
+++ b/test/core/bad_client/tests/simple_request.c
@@ -77,25 +77,25 @@
   "\x10\x0cgrpc-timeout\x02"                                               \
   "5S"
 
-#define PFX_STR_UNUSUAL2                                                   \
-  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"                                       \
-  "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* settings frame */              \
-  "\x00\x00\xf4\x01\x04\x00\x00\x00\x01" /* headers: generated from        \
+#define PFX_STR_UNUSUAL2                                                    \
+  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"                                        \
+  "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* settings frame */               \
+  "\x00\x00\xf4\x01\x04\x00\x00\x00\x01" /* headers: generated from         \
                                             simple_request_unusual2.headers \
-                                            in this directory */           \
-  "\x10\x05:path\x08/foo/bar"                                              \
-  "\x10\x07:scheme\x04http"                                                \
-  "\x10\x07:method\x04POST"                                                \
-  "\x10\x04host\x09localhost"                                              \
-  "\x10\x0c"                                                               \
-  "content-type\x1e"                                                       \
-  "application/grpc;this-is-valid"                                         \
-  "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip"                  \
-  "\x10\x02te\x08trailers"                                                 \
-  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"                 \
-  "\x10\x0cgrpc-timeout\x03"                                               \
-  "10S"                                                                    \
-  "\x10\x0cgrpc-timeout\x02"                                               \
+                                            in this directory */            \
+  "\x10\x05:path\x08/foo/bar"                                               \
+  "\x10\x07:scheme\x04http"                                                 \
+  "\x10\x07:method\x04POST"                                                 \
+  "\x10\x04host\x09localhost"                                               \
+  "\x10\x0c"                                                                \
+  "content-type\x1e"                                                        \
+  "application/grpc;this-is-valid"                                          \
+  "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip"                   \
+  "\x10\x02te\x08trailers"                                                  \
+  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"                  \
+  "\x10\x0cgrpc-timeout\x03"                                                \
+  "10S"                                                                     \
+  "\x10\x0cgrpc-timeout\x02"                                                \
   "5S"
 
 static void *tag(intptr_t t) { return (void *)t; }
-- 
GitLab


From ac2e88f9567c7e90f615738fb759537385dcc858 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Wed, 27 Apr 2016 14:13:27 -0700
Subject: [PATCH 221/525] Initial attempt at adding support for max metadata
 size.  Currently, the code does not seem to be properly causing the RPC to
 fail when the max size is exceeded.

---
 include/grpc/impl/codegen/grpc_types.h        |  2 ++
 .../chttp2/transport/chttp2_transport.c       | 15 ++++++++++
 .../chttp2/transport/incoming_metadata.c      |  1 +
 .../chttp2/transport/incoming_metadata.h      |  1 +
 .../ext/transport/chttp2/transport/internal.h |  3 ++
 .../ext/transport/chttp2/transport/parsing.c  | 22 +++++++++++---
 src/core/lib/transport/metadata.h             |  2 ++
 test/core/end2end/cq_verifier.c               |  8 +++++
 test/core/end2end/cq_verifier.h               |  1 +
 test/core/end2end/tests/large_metadata.c      | 29 ++++++++++++++-----
 10 files changed, 73 insertions(+), 11 deletions(-)

diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h
index 4c7373006b..b5203b6e4d 100644
--- a/include/grpc/impl/codegen/grpc_types.h
+++ b/include/grpc/impl/codegen/grpc_types.h
@@ -152,6 +152,8 @@ typedef struct {
    channel). If this parameter is specified and the underlying is not an SSL
    channel, it will just be ignored. */
 #define GRPC_SSL_TARGET_NAME_OVERRIDE_ARG "grpc.ssl_target_name_override"
+/* Maximum metadata size */
+#define GRPC_ARG_MAX_METADATA_SIZE "grpc.max_metadata_size"
 
 /** Result of a grpc call. If the caller satisfies the prerequisites of a
     particular operation, the grpc_call_error returned will be GRPC_CALL_OK.
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 01507f5ca6..c24950a189 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -56,6 +56,8 @@
 #define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
 #define MAX_WINDOW 0x7fffffffu
 
+#define DEFAULT_MAX_METADATA_SIZE 16 * 1024
+
 #define MAX_CLIENT_STREAM_ID 0x7fffffffu
 
 int grpc_http_trace = 0;
@@ -250,6 +252,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
   t->global.ping_counter = 1;
   t->global.pings.next = t->global.pings.prev = &t->global.pings;
   t->parsing.is_client = is_client;
+  t->parsing.max_metadata_size = DEFAULT_MAX_METADATA_SIZE;
   t->parsing.deframe_state =
       is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0;
   t->writing.is_client = is_client;
@@ -372,6 +375,18 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
               &t->writing.hpack_compressor,
               (uint32_t)channel_args->args[i].value.integer);
         }
+      } else if (0 == strcmp(channel_args->args[i].key,
+                             GRPC_ARG_MAX_METADATA_SIZE)) {
+        if (channel_args->args[i].type != GRPC_ARG_INTEGER) {
+          gpr_log(GPR_ERROR, "%s: must be an integer",
+                  GRPC_ARG_MAX_METADATA_SIZE);
+        } else if (channel_args->args[i].value.integer < 0) {
+          gpr_log(GPR_ERROR, "%s: must be non-negative",
+                  GRPC_ARG_MAX_METADATA_SIZE);
+        } else {
+          t->parsing.max_metadata_size =
+              (uint32_t)channel_args->args[i].value.integer;
+        }
       }
     }
   }
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.c b/src/core/ext/transport/chttp2/transport/incoming_metadata.c
index db21744f0c..3e463a7995 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.c
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.c
@@ -65,6 +65,7 @@ void grpc_chttp2_incoming_metadata_buffer_add(
         gpr_realloc(buffer->elems, sizeof(*buffer->elems) * buffer->capacity);
   }
   buffer->elems[buffer->count++].md = elem;
+  buffer->size += GRPC_MDELEM_LENGTH(elem);
 }
 
 void grpc_chttp2_incoming_metadata_buffer_set_deadline(
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.h b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
index 17ecf8e181..7db5db8de0 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.h
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
@@ -42,6 +42,7 @@ typedef struct {
   size_t capacity;
   gpr_timespec deadline;
   int published;
+  size_t size;  /* total size of metadata */
 } grpc_chttp2_incoming_metadata_buffer;
 
 /** assumes everything initially zeroed */
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index 98cd38abd4..d547a6e9c1 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -229,6 +229,9 @@ struct grpc_chttp2_transport_parsing {
   /** is this transport a client? (boolean) */
   uint8_t is_client;
 
+  /** max metadata size */
+  uint32_t max_metadata_size;
+
   /** were settings updated? */
   uint8_t settings_updated;
   /** was a settings ack received? */
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index e827a43f7a..0cf4d87f3c 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -624,8 +624,15 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
         gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), *cached_timeout));
     GRPC_MDELEM_UNREF(md);
   } else {
-    grpc_chttp2_incoming_metadata_buffer_add(
-        &stream_parsing->metadata_buffer[0], md);
+    const size_t new_size = stream_parsing->metadata_buffer[0].size +
+                            GRPC_MDELEM_LENGTH(md);
+    if (new_size > transport_parsing->max_metadata_size) {
+      stream_parsing->seen_error = 1;
+      GRPC_MDELEM_UNREF(md);
+    } else {
+      grpc_chttp2_incoming_metadata_buffer_add(
+          &stream_parsing->metadata_buffer[0], md);
+    }
   }
 
   grpc_chttp2_list_add_parsing_seen_stream(transport_parsing, stream_parsing);
@@ -652,8 +659,15 @@ static void on_trailing_header(void *tp, grpc_mdelem *md) {
     stream_parsing->seen_error = 1;
   }
 
-  grpc_chttp2_incoming_metadata_buffer_add(&stream_parsing->metadata_buffer[1],
-                                           md);
+  const size_t new_size = stream_parsing->metadata_buffer[1].size +
+                          GRPC_MDELEM_LENGTH(md);
+  if (new_size > transport_parsing->max_metadata_size) {
+    stream_parsing->seen_error = 1;
+    GRPC_MDELEM_UNREF(md);
+  } else {
+    grpc_chttp2_incoming_metadata_buffer_add(
+        &stream_parsing->metadata_buffer[1], md);
+  }
 
   grpc_chttp2_list_add_parsing_seen_stream(transport_parsing, stream_parsing);
 
diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index 713d9e6782..277c257933 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -146,6 +146,8 @@ void grpc_mdelem_unref(grpc_mdelem *md);
 const char *grpc_mdstr_as_c_string(grpc_mdstr *s);
 
 #define GRPC_MDSTR_LENGTH(s) (GPR_SLICE_LENGTH(s->slice))
+#define GRPC_MDELEM_LENGTH(e) (GRPC_MDSTR_LENGTH(e->key) + \
+                               GRPC_MDSTR_LENGTH(e->value))
 
 int grpc_mdstr_is_legal_header(grpc_mdstr *s);
 int grpc_mdstr_is_legal_nonbin_header(grpc_mdstr *s);
diff --git a/test/core/end2end/cq_verifier.c b/test/core/end2end/cq_verifier.c
index 77afe588d7..5f1a33242e 100644
--- a/test/core/end2end/cq_verifier.c
+++ b/test/core/end2end/cq_verifier.c
@@ -107,6 +107,14 @@ int contains_metadata(grpc_metadata_array *array, const char *key,
   return has_metadata(array->metadata, array->count, key, value);
 }
 
+int contains_metadata_key(grpc_metadata_array *array, const char *key) {
+  for (size_t i = 0; i < array->count; ++i) {
+    if (strcmp(array->metadata[i].key, key) == 0)
+      return 1;
+  }
+  return 0;
+}
+
 static gpr_slice merge_slices(gpr_slice *slices, size_t nslices) {
   size_t i;
   size_t len = 0;
diff --git a/test/core/end2end/cq_verifier.h b/test/core/end2end/cq_verifier.h
index b3e07c45a5..a54065950d 100644
--- a/test/core/end2end/cq_verifier.h
+++ b/test/core/end2end/cq_verifier.h
@@ -62,5 +62,6 @@ void cq_expect_completion(cq_verifier *v, void *tag, int success);
 int byte_buffer_eq_string(grpc_byte_buffer *byte_buffer, const char *string);
 int contains_metadata(grpc_metadata_array *array, const char *key,
                       const char *value);
+int contains_metadata_key(grpc_metadata_array *array, const char *key);
 
 #endif /* GRPC_TEST_CORE_END2END_CQ_VERIFIER_H */
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c
index 0e5d6b4fe0..f09b55a2c0 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.c
@@ -98,7 +98,8 @@ static void end_test(grpc_end2end_test_fixture *f) {
 }
 
 /* Request with a large amount of metadata.*/
-static void test_request_with_large_metadata(grpc_end2end_test_config config) {
+static void test_request_with_large_metadata(grpc_end2end_test_config config,
+                                             int allow_large_metadata) {
   grpc_call *c;
   grpc_call *s;
   gpr_slice request_payload_slice = gpr_slice_from_copied_string("hello world");
@@ -106,8 +107,16 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
       grpc_raw_byte_buffer_create(&request_payload_slice, 1);
   gpr_timespec deadline = five_seconds_time();
   grpc_metadata meta;
-  grpc_end2end_test_fixture f =
-      begin_test(config, "test_request_with_large_metadata", NULL, NULL);
+  const char *test_name = allow_large_metadata
+                          ? "test_request_with_large_metadata_allowed"
+                          : "test_request_with_large_metadata_not_allowed";
+  const size_t large_size = 64 * 1024;
+  grpc_arg arg = { GRPC_ARG_INTEGER, GRPC_ARG_MAX_METADATA_SIZE,
+                   { .integer=(int)large_size + 1024 } };
+  grpc_channel_args args = { 1, &arg };
+  grpc_channel_args* use_args = allow_large_metadata ? &args : NULL;
+  grpc_end2end_test_fixture f = begin_test(
+      config, test_name, use_args, use_args);
   cq_verifier *cqv = cq_verifier_create(f.cq);
   grpc_op ops[6];
   grpc_op *op;
@@ -121,7 +130,6 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   char *details = NULL;
   size_t details_capacity = 0;
   int was_cancelled = 2;
-  const size_t large_size = 64 * 1024;
 
   c = grpc_channel_create_call(f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq,
                                "/foo", "foo.test.google.fr", deadline, NULL);
@@ -214,13 +222,19 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   cq_expect_completion(cqv, tag(1), 1);
   cq_verify(cqv);
 
+// FIXME: why is this assert passing with allow_large_metadata=false?
   GPR_ASSERT(status == GRPC_STATUS_OK);
   GPR_ASSERT(0 == strcmp(details, "xyz"));
   GPR_ASSERT(0 == strcmp(call_details.method, "/foo"));
   GPR_ASSERT(0 == strcmp(call_details.host, "foo.test.google.fr"));
   GPR_ASSERT(was_cancelled == 0);
-  GPR_ASSERT(byte_buffer_eq_string(request_payload_recv, "hello world"));
-  GPR_ASSERT(contains_metadata(&request_metadata_recv, "key", meta.value));
+  if (allow_large_metadata) {
+    GPR_ASSERT(byte_buffer_eq_string(request_payload_recv, "hello world"));
+    GPR_ASSERT(contains_metadata(&request_metadata_recv, "key", meta.value));
+  } else {
+    GPR_ASSERT(request_payload_recv == NULL);
+    GPR_ASSERT(!contains_metadata_key(&request_metadata_recv, "key"));
+  }
 
   gpr_free(details);
   grpc_metadata_array_destroy(&initial_metadata_recv);
@@ -243,7 +257,8 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
 }
 
 void large_metadata(grpc_end2end_test_config config) {
-  test_request_with_large_metadata(config);
+  test_request_with_large_metadata(config, 1);
+  test_request_with_large_metadata(config, 0);
 }
 
 void large_metadata_pre_init(void) {}
-- 
GitLab


From 8658b1786628c8cb10ea0a74e7a11733f66a20ab Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 27 Apr 2016 14:54:40 -0700
Subject: [PATCH 222/525] Fixed minor Node compilation issue

---
 src/node/ext/server_credentials.cc | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/node/ext/server_credentials.cc b/src/node/ext/server_credentials.cc
index cff821aafc..a817ade518 100644
--- a/src/node/ext/server_credentials.cc
+++ b/src/node/ext/server_credentials.cc
@@ -146,7 +146,9 @@ NAN_METHOD(ServerCredentials::CreateSsl) {
         "createSsl's second argument must be a list of objects");
   }
 
-  grpc_ssl_client_certificate_request_type client_certificate_request;
+  // Default to not requesting the client certificate
+  grpc_ssl_client_certificate_request_type client_certificate_request =
+      GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
   if (info[2]->IsBoolean()) {
     client_certificate_request =
         Nan::To<bool>(info[2]).FromJust()
-- 
GitLab


From 92b8decaff5dae78531af309b241babe03c54f01 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 27 Apr 2016 14:55:13 -0700
Subject: [PATCH 223/525] Make Node servers warn instead of fail when a method
 is missing a handler

---
 src/node/src/server.js        | 34 +++++++++++++++++----
 src/node/test/surface_test.js | 56 +++++++++++++++++++++++++++++------
 2 files changed, 75 insertions(+), 15 deletions(-)

diff --git a/src/node/src/server.js b/src/node/src/server.js
index 22128343a9..fd5153f124 100644
--- a/src/node/src/server.js
+++ b/src/node/src/server.js
@@ -684,6 +684,26 @@ Server.prototype.register = function(name, handler, serialize, deserialize,
   return true;
 };
 
+var unimplementedStatusResponse = {
+  code: grpc.status.UNIMPLEMENTED,
+  details: 'The server does not implement this method'
+};
+
+var defaultHandler = {
+  unary: function(call, callback) {
+    callback(unimplementedStatusResponse);
+  },
+  client_stream: function(call, callback) {
+    callback(unimplementedStatusResponse);
+  },
+  server_stream: function(call) {
+    call.emit('error', unimplementedStatusResponse);
+  },
+  bidi: function(call) {
+    call.emit('error', unimplementedStatusResponse);
+  }
+};
+
 /**
  * Add a service to the server, with a corresponding implementation. If you are
  * generating this from a proto file, you should instead use
@@ -713,16 +733,18 @@ Server.prototype.addService = function(service, implementation) {
         method_type = 'unary';
       }
     }
+    var impl;
     if (implementation[name] === undefined) {
-      throw new Error('Method handler for ' + attrs.path +
-          ' not provided.');
+      console.warn('Method handler for %s expected but not provided',
+                   attrs.path);
+      impl = defaultHandler[method_type];
+    } else {
+      impl = _.bind(implementation[name], implementation);
     }
     var serialize = attrs.responseSerialize;
     var deserialize = attrs.requestDeserialize;
-    var register_success = self.register(attrs.path,
-                                         _.bind(implementation[name],
-                                                implementation),
-                                         serialize, deserialize, method_type);
+    var register_success = self.register(attrs.path, impl, serialize,
+                                         deserialize, method_type);
     if (!register_success) {
       throw new Error('Method handler for ' + attrs.path +
           ' already provided.');
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index b96e8e487c..d8b36dc55c 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -143,21 +143,59 @@ describe('Server.prototype.addProtoService', function() {
       server.addProtoService(mathService, dummyImpls);
     });
   });
-  it('Should fail with missing handlers', function() {
-    assert.throws(function() {
-      server.addProtoService(mathService, {
-        'div': function() {},
-        'divMany': function() {},
-        'fib': function() {}
-      });
-    }, /math.Math.Sum/);
-  });
   it('Should fail if the server has been started', function() {
     server.start();
     assert.throws(function() {
       server.addProtoService(mathService, dummyImpls);
     });
   });
+  describe('Default handlers', function() {
+    var client;
+    beforeEach(function() {
+      server.addProtoService(mathService, {});
+      var port = server.bind('localhost:0', server_insecure_creds);
+      var Client = surface_client.makeProtobufClientConstructor(mathService);
+      client = new Client('localhost:' + port,
+                          grpc.credentials.createInsecure());
+      server.start();
+    });
+    it('should respond to a unary call with UNIMPLEMENTED', function(done) {
+      client.div({divisor: 4, dividend: 3}, function(error, response) {
+        assert(error);
+        assert.strictEqual(error.code, grpc.status.UNIMPLEMENTED);
+        done();
+      });
+    });
+    it('should respond to a client stream with UNIMPLEMENTED', function(done) {
+      var call = client.sum(function(error, respones) {
+        assert(error);
+        assert.strictEqual(error.code, grpc.status.UNIMPLEMENTED);
+        done();
+      });
+      call.end();
+    });
+    it('should respond to a server stream with UNIMPLEMENTED', function(done) {
+      var call = client.fib({limit: 5});
+      call.on('data', function(value) {
+        assert.fail('No messages expected');
+      });
+      call.on('status', function(status) {
+        assert.strictEqual(status.code, grpc.status.UNIMPLEMENTED);
+        done();
+      });
+    });
+    it('should respond to a bidi call with UNIMPLEMENTED', function(done) {
+      var call = client.divMany();
+      call.on('data', function(value) {
+        assert.fail('No messages expected');
+      });
+      call.on('status', function(status) {
+        assert.strictEqual(status.code, grpc.status.UNIMPLEMENTED);
+        done();
+      });
+      call.end();
+    });
+  });
 });
 describe('Client constructor building', function() {
   var illegal_service_attrs = {
-- 
GitLab


From d06e9291cb10c5757e1b7852248af341c2cd3390 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Wed, 27 Apr 2016 14:59:17 -0700
Subject: [PATCH 224/525] Add Windows-specifics to Python docs

---
 examples/python/README.md    | 11 +++++++++--
 src/python/grpcio/README.rst | 13 +++++++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/examples/python/README.md b/examples/python/README.md
index b57da8f642..9992baa842 100644
--- a/examples/python/README.md
+++ b/examples/python/README.md
@@ -8,12 +8,19 @@ For this sample, we've already generated the server and client stubs from
 
 
 Install gRPC:
-  ```sh
+```sh
   $ pip install grpcio
 ```
 Or, to install it system wide:
 ```sh
-	$ sudo pip install grpcio
+  $ sudo pip install grpcio
+```
+
+If you're on Windows, make sure you installed the `pip.exe` component when you
+installed Python. Invoke as above but with `pip.exe` instead of `pip` (you may
+also need to invoke from a `cmd.exe` ran as administrator):
+```sh
+  $ pip.exe install grpcio
 ```
 
 Download the example
diff --git a/src/python/grpcio/README.rst b/src/python/grpcio/README.rst
index 33a462b66f..cb3f6b87fe 100644
--- a/src/python/grpcio/README.rst
+++ b/src/python/grpcio/README.rst
@@ -23,6 +23,16 @@ Else system wide (on Ubuntu)...
 
   $ sudo pip install grpcio
 
+If you're on Windows make sure that you installed the :code:`pip.exe` component
+when you installed Python (if not go back and install it!) then invoke:
+
+::
+
+  $ pip.exe install grpcio
+
+Windows users may need to invoke :code:`pip.exe` from a command line ran as
+administrator.
+
 n.b. On Windows and on Mac OS X one *must* have a recent release of :code:`pip`
 to retrieve the proper wheel from PyPI. Be sure to upgrade to the latest
 version!
@@ -43,6 +53,9 @@ package named :code:`python-dev`).
   $ pip install -rrequirements.txt
   $ GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install .
 
+You cannot currently install Python from source on Windows. Things might work
+out for you in MSYS2 (follow the Linux instructions), but it isn't officially
+supported at the moment.
 
 Troubleshooting
 ~~~~~~~~~~~~~~~
-- 
GitLab


From 1b2db6333d4783e18b8d72db7893a758c4fcd2b9 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Wed, 27 Apr 2016 15:06:54 -0700
Subject: [PATCH 225/525] Moved protos out of core_codegen interface

---
 BUILD                                         |   5 +
 Makefile                                      |   4 +
 build.yaml                                    |   1 +
 gRPC.podspec                                  |   1 +
 grpc.gemspec                                  |   1 +
 .../impl/codegen/core_codegen_interface.h     |  32 +--
 include/grpc++/impl/codegen/proto_utils.h     | 161 +++++++++++++-
 include/grpc/byte_buffer_reader.h             |  21 +-
 .../grpc/impl/codegen/byte_buffer_reader.h    |  57 +++++
 package.xml                                   |   1 +
 src/compiler/csharp_generator.cc              |   4 +
 src/core/lib/transport/metadata.c             |  29 ++-
 src/cpp/common/core_codegen.cc                | 204 ++++--------------
 src/cpp/common/core_codegen.h                 |  26 ++-
 src/csharp/Grpc.Examples/MathGrpc.cs          |   6 +
 src/csharp/Grpc.HealthCheck/HealthGrpc.cs     |   6 +
 .../Grpc.IntegrationTesting/MetricsGrpc.cs    |   6 +
 .../Grpc.IntegrationTesting/ServicesGrpc.cs   |  12 ++
 .../Grpc.IntegrationTesting/TestGrpc.cs       |  18 ++
 .../core/surface/public_headers_must_be_c89.c |   1 +
 tools/doxygen/Doxyfile.c++                    |   1 +
 tools/doxygen/Doxyfile.c++.internal           |   1 +
 tools/doxygen/Doxyfile.core                   |   1 +
 tools/doxygen/Doxyfile.core.internal          |   1 +
 tools/run_tests/sources_and_headers.json      |   2 +
 vsprojects/vcxproj/grpc++/grpc++.vcxproj      |   1 +
 .../vcxproj/grpc++/grpc++.vcxproj.filters     |   3 +
 .../grpc++_unsecure/grpc++_unsecure.vcxproj   |   1 +
 .../grpc++_unsecure.vcxproj.filters           |   3 +
 vsprojects/vcxproj/grpc/grpc.vcxproj          |   1 +
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters  |   3 +
 .../grpc_unsecure/grpc_unsecure.vcxproj       |   1 +
 .../grpc_unsecure.vcxproj.filters             |   3 +
 .../codegen_test_full.vcxproj                 |   1 +
 .../codegen_test_full.vcxproj.filters         |   3 +
 .../codegen_test_minimal.vcxproj              |   1 +
 .../codegen_test_minimal.vcxproj.filters      |   3 +
 37 files changed, 410 insertions(+), 216 deletions(-)
 create mode 100644 include/grpc/impl/codegen/byte_buffer_reader.h

diff --git a/BUILD b/BUILD
index b69c940411..aa06678ffd 100644
--- a/BUILD
+++ b/BUILD
@@ -461,6 +461,7 @@ cc_library(
     "include/grpc/grpc.h",
     "include/grpc/status.h",
     "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/byte_buffer_reader.h",
     "include/grpc/impl/codegen/compression_types.h",
     "include/grpc/impl/codegen/connectivity_state.h",
     "include/grpc/impl/codegen/grpc_types.h",
@@ -772,6 +773,7 @@ cc_library(
     "include/grpc/grpc.h",
     "include/grpc/status.h",
     "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/byte_buffer_reader.h",
     "include/grpc/impl/codegen/compression_types.h",
     "include/grpc/impl/codegen/connectivity_state.h",
     "include/grpc/impl/codegen/grpc_types.h",
@@ -944,6 +946,7 @@ cc_library(
     "include/grpc++/impl/codegen/sync_stream.h",
     "include/grpc++/impl/codegen/time.h",
     "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/byte_buffer_reader.h",
     "include/grpc/impl/codegen/compression_types.h",
     "include/grpc/impl/codegen/connectivity_state.h",
     "include/grpc/impl/codegen/grpc_types.h",
@@ -1089,6 +1092,7 @@ cc_library(
     "include/grpc++/impl/codegen/sync_stream.h",
     "include/grpc++/impl/codegen/time.h",
     "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/byte_buffer_reader.h",
     "include/grpc/impl/codegen/compression_types.h",
     "include/grpc/impl/codegen/connectivity_state.h",
     "include/grpc/impl/codegen/grpc_types.h",
@@ -1476,6 +1480,7 @@ objc_library(
     "include/grpc/grpc.h",
     "include/grpc/status.h",
     "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/byte_buffer_reader.h",
     "include/grpc/impl/codegen/compression_types.h",
     "include/grpc/impl/codegen/connectivity_state.h",
     "include/grpc/impl/codegen/grpc_types.h",
diff --git a/Makefile b/Makefile
index 3b7dbd9638..89cfd4136a 100644
--- a/Makefile
+++ b/Makefile
@@ -2629,6 +2629,7 @@ PUBLIC_HEADERS_C += \
     include/grpc/grpc.h \
     include/grpc/status.h \
     include/grpc/impl/codegen/byte_buffer.h \
+    include/grpc/impl/codegen/byte_buffer_reader.h \
     include/grpc/impl/codegen/compression_types.h \
     include/grpc/impl/codegen/connectivity_state.h \
     include/grpc/impl/codegen/grpc_types.h \
@@ -2949,6 +2950,7 @@ PUBLIC_HEADERS_C += \
     include/grpc/grpc.h \
     include/grpc/status.h \
     include/grpc/impl/codegen/byte_buffer.h \
+    include/grpc/impl/codegen/byte_buffer_reader.h \
     include/grpc/impl/codegen/compression_types.h \
     include/grpc/impl/codegen/connectivity_state.h \
     include/grpc/impl/codegen/grpc_types.h \
@@ -3235,6 +3237,7 @@ PUBLIC_HEADERS_CXX += \
     include/grpc++/impl/codegen/sync_stream.h \
     include/grpc++/impl/codegen/time.h \
     include/grpc/impl/codegen/byte_buffer.h \
+    include/grpc/impl/codegen/byte_buffer_reader.h \
     include/grpc/impl/codegen/compression_types.h \
     include/grpc/impl/codegen/connectivity_state.h \
     include/grpc/impl/codegen/grpc_types.h \
@@ -3538,6 +3541,7 @@ PUBLIC_HEADERS_CXX += \
     include/grpc++/impl/codegen/sync_stream.h \
     include/grpc++/impl/codegen/time.h \
     include/grpc/impl/codegen/byte_buffer.h \
+    include/grpc/impl/codegen/byte_buffer_reader.h \
     include/grpc/impl/codegen/compression_types.h \
     include/grpc/impl/codegen/connectivity_state.h \
     include/grpc/impl/codegen/grpc_types.h \
diff --git a/build.yaml b/build.yaml
index 6c00b42a1e..daa8c6aa95 100644
--- a/build.yaml
+++ b/build.yaml
@@ -349,6 +349,7 @@ filegroups:
 - name: grpc_codegen
   public_headers:
   - include/grpc/impl/codegen/byte_buffer.h
+  - include/grpc/impl/codegen/byte_buffer_reader.h
   - include/grpc/impl/codegen/compression_types.h
   - include/grpc/impl/codegen/connectivity_state.h
   - include/grpc/impl/codegen/grpc_types.h
diff --git a/gRPC.podspec b/gRPC.podspec
index d66e03354b..ace137f104 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -303,6 +303,7 @@ Pod::Spec.new do |s|
                       'include/grpc/grpc.h',
                       'include/grpc/status.h',
                       'include/grpc/impl/codegen/byte_buffer.h',
+                      'include/grpc/impl/codegen/byte_buffer_reader.h',
                       'include/grpc/impl/codegen/compression_types.h',
                       'include/grpc/impl/codegen/connectivity_state.h',
                       'include/grpc/impl/codegen/grpc_types.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index a9f0f681df..2f72e02152 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -147,6 +147,7 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/grpc.h )
   s.files += %w( include/grpc/status.h )
   s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
+  s.files += %w( include/grpc/impl/codegen/byte_buffer_reader.h )
   s.files += %w( include/grpc/impl/codegen/compression_types.h )
   s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
   s.files += %w( include/grpc/impl/codegen/grpc_types.h )
diff --git a/include/grpc++/impl/codegen/core_codegen_interface.h b/include/grpc++/impl/codegen/core_codegen_interface.h
index 16424bab35..aa9013c4ce 100644
--- a/include/grpc++/impl/codegen/core_codegen_interface.h
+++ b/include/grpc++/impl/codegen/core_codegen_interface.h
@@ -49,18 +49,6 @@ namespace grpc {
 /// \warning This interface should be considered internal and private.
 class CoreCodegenInterface {
  public:
-  // Serialize the msg into a buffer created inside the function. The caller
-  // should destroy the returned buffer when done with it. If serialization
-  // fails,
-  // false is returned and buffer is left unchanged.
-  virtual Status SerializeProto(const grpc::protobuf::Message& msg,
-                                grpc_byte_buffer** buffer) = 0;
-
-  // The caller keeps ownership of buffer and msg.
-  virtual Status DeserializeProto(grpc_byte_buffer* buffer,
-                                  grpc::protobuf::Message* msg,
-                                  int max_message_size) = 0;
-
   /// Upon a failed assertion, log the error.
   virtual void assert_fail(const char* failed_assertion) = 0;
 
@@ -76,9 +64,29 @@ class CoreCodegenInterface {
   virtual void gpr_free(void* p) = 0;
 
   virtual void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) = 0;
+
+  virtual void grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
+                                            grpc_byte_buffer* buffer) = 0;
+  virtual void grpc_byte_buffer_reader_destroy(
+      grpc_byte_buffer_reader* reader) = 0;
+  virtual int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
+                                           gpr_slice* slice) = 0;
+
+  virtual grpc_byte_buffer* grpc_raw_byte_buffer_create(gpr_slice* slice,
+                                                        size_t nslices) = 0;
+
+  virtual gpr_slice gpr_slice_malloc(size_t length) = 0;
+  virtual void gpr_slice_unref(gpr_slice slice) = 0;
+  virtual gpr_slice gpr_slice_split_tail(gpr_slice* s, size_t split) = 0;
+  virtual void gpr_slice_buffer_add(gpr_slice_buffer* sb, gpr_slice slice) = 0;
+  virtual void gpr_slice_buffer_pop(gpr_slice_buffer* sb) = 0;
+
   virtual void grpc_metadata_array_init(grpc_metadata_array* array) = 0;
   virtual void grpc_metadata_array_destroy(grpc_metadata_array* array) = 0;
 
+  virtual const Status& ok() = 0;
+  virtual const Status& cancelled() = 0;
+
   virtual gpr_timespec gpr_inf_future(gpr_clock_type type) = 0;
 };
 
diff --git a/include/grpc++/impl/codegen/proto_utils.h b/include/grpc++/impl/codegen/proto_utils.h
index 2aaa3c3b30..d044ddc642 100644
--- a/include/grpc++/impl/codegen/proto_utils.h
+++ b/include/grpc++/impl/codegen/proto_utils.h
@@ -41,26 +41,179 @@
 #include <grpc++/impl/codegen/serialization_traits.h>
 #include <grpc++/impl/codegen/status.h>
 #include <grpc/impl/codegen/byte_buffer.h>
+#include <grpc/impl/codegen/byte_buffer_reader.h>
 #include <grpc/impl/codegen/log.h>
+#include <grpc/impl/codegen/slice.h>
 
 namespace grpc {
 
 extern CoreCodegenInterface* g_core_codegen_interface;
 
+namespace {
+
+const int kGrpcBufferWriterMaxBufferLength = 8192;
+
+class GrpcBufferWriter GRPC_FINAL
+    : public ::grpc::protobuf::io::ZeroCopyOutputStream {
+ public:
+  explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size)
+      : block_size_(block_size), byte_count_(0), have_backup_(false) {
+    *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(NULL, 0);
+    slice_buffer_ = &(*bp)->data.raw.slice_buffer;
+  }
+
+  ~GrpcBufferWriter() GRPC_OVERRIDE {
+    if (have_backup_) {
+      g_core_codegen_interface->gpr_slice_unref(backup_slice_);
+    }
+  }
+
+  bool Next(void** data, int* size) GRPC_OVERRIDE {
+    if (have_backup_) {
+      slice_ = backup_slice_;
+      have_backup_ = false;
+    } else {
+      slice_ = g_core_codegen_interface->gpr_slice_malloc(block_size_);
+    }
+    *data = GPR_SLICE_START_PTR(slice_);
+    // On win x64, int is only 32bit
+    GPR_CODEGEN_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
+    byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
+    g_core_codegen_interface->gpr_slice_buffer_add(slice_buffer_, slice_);
+    return true;
+  }
+
+  void BackUp(int count) GRPC_OVERRIDE {
+    g_core_codegen_interface->gpr_slice_buffer_pop(slice_buffer_);
+    if (count == block_size_) {
+      backup_slice_ = slice_;
+    } else {
+      backup_slice_ = g_core_codegen_interface->gpr_slice_split_tail(
+          &slice_, GPR_SLICE_LENGTH(slice_) - count);
+      g_core_codegen_interface->gpr_slice_buffer_add(slice_buffer_, slice_);
+    }
+    have_backup_ = true;
+    byte_count_ -= count;
+  }
+
+  grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE { return byte_count_; }
+
+ private:
+  const int block_size_;
+  int64_t byte_count_;
+  gpr_slice_buffer* slice_buffer_;
+  bool have_backup_;
+  gpr_slice backup_slice_;
+  gpr_slice slice_;
+};
+
+class GrpcBufferReader GRPC_FINAL
+    : public ::grpc::protobuf::io::ZeroCopyInputStream {
+ public:
+  explicit GrpcBufferReader(grpc_byte_buffer* buffer)
+      : byte_count_(0), backup_count_(0) {
+    g_core_codegen_interface->grpc_byte_buffer_reader_init(&reader_, buffer);
+  }
+  ~GrpcBufferReader() GRPC_OVERRIDE {
+    g_core_codegen_interface->grpc_byte_buffer_reader_destroy(&reader_);
+  }
+
+  bool Next(const void** data, int* size) GRPC_OVERRIDE {
+    if (backup_count_ > 0) {
+      *data = GPR_SLICE_START_PTR(slice_) + GPR_SLICE_LENGTH(slice_) -
+              backup_count_;
+      GPR_CODEGEN_ASSERT(backup_count_ <= INT_MAX);
+      *size = (int)backup_count_;
+      backup_count_ = 0;
+      return true;
+    }
+    if (!g_core_codegen_interface->grpc_byte_buffer_reader_next(&reader_,
+                                                                &slice_)) {
+      return false;
+    }
+    g_core_codegen_interface->gpr_slice_unref(slice_);
+    *data = GPR_SLICE_START_PTR(slice_);
+    // On win x64, int is only 32bit
+    GPR_CODEGEN_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
+    byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
+    return true;
+  }
+
+  void BackUp(int count) GRPC_OVERRIDE { backup_count_ = count; }
+
+  bool Skip(int count) GRPC_OVERRIDE {
+    const void* data;
+    int size;
+    while (Next(&data, &size)) {
+      if (size >= count) {
+        BackUp(size - count);
+        return true;
+      }
+      // size < count;
+      count -= size;
+    }
+    // error or we have too large count;
+    return false;
+  }
+
+  grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE {
+    return byte_count_ - backup_count_;
+  }
+
+ private:
+  int64_t byte_count_;
+  int64_t backup_count_;
+  grpc_byte_buffer_reader reader_;
+  gpr_slice slice_;
+};
+}  // namespace
+
 template <class T>
 class SerializationTraits<T, typename std::enable_if<std::is_base_of<
                                  grpc::protobuf::Message, T>::value>::type> {
  public:
   static Status Serialize(const grpc::protobuf::Message& msg,
-                          grpc_byte_buffer** buffer, bool* own_buffer) {
+                          grpc_byte_buffer** bp, bool* own_buffer) {
     *own_buffer = true;
-    return g_core_codegen_interface->SerializeProto(msg, buffer);
+    int byte_size = msg.ByteSize();
+    if (byte_size <= kGrpcBufferWriterMaxBufferLength) {
+      gpr_slice slice = g_core_codegen_interface->gpr_slice_malloc(byte_size);
+      GPR_CODEGEN_ASSERT(
+          GPR_SLICE_END_PTR(slice) ==
+          msg.SerializeWithCachedSizesToArray(GPR_SLICE_START_PTR(slice)));
+      *bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1);
+      g_core_codegen_interface->gpr_slice_unref(slice);
+      return g_core_codegen_interface->ok();
+    } else {
+      GrpcBufferWriter writer(bp, kGrpcBufferWriterMaxBufferLength);
+      return msg.SerializeToZeroCopyStream(&writer)
+                 ? g_core_codegen_interface->ok()
+                 : Status(StatusCode::INTERNAL, "Failed to serialize message");
+    }
   }
+
   static Status Deserialize(grpc_byte_buffer* buffer,
                             grpc::protobuf::Message* msg,
                             int max_message_size) {
-    return g_core_codegen_interface->DeserializeProto(buffer, msg,
-                                                      max_message_size);
+    if (buffer == nullptr) {
+      return Status(StatusCode::INTERNAL, "No payload");
+    }
+    Status result = g_core_codegen_interface->ok();
+    {
+      GrpcBufferReader reader(buffer);
+      ::grpc::protobuf::io::CodedInputStream decoder(&reader);
+      if (max_message_size > 0) {
+        decoder.SetTotalBytesLimit(max_message_size, max_message_size);
+      }
+      if (!msg->ParseFromCodedStream(&decoder)) {
+        result = Status(StatusCode::INTERNAL, msg->InitializationErrorString());
+      }
+      if (!decoder.ConsumedEntireMessage()) {
+        result = Status(StatusCode::INTERNAL, "Did not read entire message");
+      }
+    }
+    g_core_codegen_interface->grpc_byte_buffer_destroy(buffer);
+    return result;
   }
 };
 
diff --git a/include/grpc/byte_buffer_reader.h b/include/grpc/byte_buffer_reader.h
index 9a1c6178ab..e95bf2f80d 100644
--- a/include/grpc/byte_buffer_reader.h
+++ b/include/grpc/byte_buffer_reader.h
@@ -34,25 +34,6 @@
 #ifndef GRPC_BYTE_BUFFER_READER_H
 #define GRPC_BYTE_BUFFER_READER_H
 
-#include <grpc/byte_buffer.h>
-#include <grpc/grpc.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct grpc_byte_buffer_reader {
-  grpc_byte_buffer *buffer_in;
-  grpc_byte_buffer *buffer_out;
-  /* Different current objects correspond to different types of byte buffers */
-  union {
-    /* Index into a slice buffer's array of slices */
-    unsigned index;
-  } current;
-};
-
-#ifdef __cplusplus
-}
-#endif
+#include <grpc/impl/codegen/byte_buffer_reader.h>
 
 #endif /* GRPC_BYTE_BUFFER_READER_H */
diff --git a/include/grpc/impl/codegen/byte_buffer_reader.h b/include/grpc/impl/codegen/byte_buffer_reader.h
new file mode 100644
index 0000000000..10c382924e
--- /dev/null
+++ b/include/grpc/impl/codegen/byte_buffer_reader.h
@@ -0,0 +1,57 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H
+#define GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H
+
+#include <grpc/impl/codegen/byte_buffer.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct grpc_byte_buffer_reader {
+  grpc_byte_buffer *buffer_in;
+  grpc_byte_buffer *buffer_out;
+  /* Different current objects correspond to different types of byte buffers */
+  union {
+    /* Index into a slice buffer's array of slices */
+    unsigned index;
+  } current;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_IMPL_CODEGEN_BYTE_BUFFER_READER_H */
diff --git a/package.xml b/package.xml
index 3ae810df5e..b9b8f0297f 100644
--- a/package.xml
+++ b/package.xml
@@ -154,6 +154,7 @@
     <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer_reader.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 69e2738d53..4def6c5e31 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -350,10 +350,12 @@ void GenerateServerClass(Printer* out, const ServiceDescriptor *service) {
 
 void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
   out->Print("// client stub\n");
+  out->Print("#pragma warning disable 0618\n");
   out->Print(
       "public class $name$ : ClientBase<$name$>, $interface$\n",
       "name", GetClientClassName(service),
       "interface", GetClientInterfaceName(service));
+  out->Print("#pragma warning restore 0618\n");
   out->Print("{\n");
   out->Indent();
 
@@ -480,10 +482,12 @@ void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor *service,
                                bool use_server_class) {
   out->Print(
       "// creates service definition that can be registered with a server\n");
+  out->Print("#pragma warning disable 0618\n");
   out->Print(
       "public static ServerServiceDefinition BindService($interface$ serviceImpl)\n",
       "interface", use_server_class ? GetServerClassName(service) :
           GetServerInterfaceName(service));
+  out->Print("#pragma warning restore 0618\n");
   out->Print("{\n");
   out->Indent();
 
diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c
index 779efbb97d..5847ec9053 100644
--- a/src/core/lib/transport/metadata.c
+++ b/src/core/lib/transport/metadata.c
@@ -386,10 +386,18 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
   for (s = shard->strs[idx]; s; s = s->bucket_next) {
     if (s->hash == hash && GPR_SLICE_LENGTH(s->slice) == length &&
         0 == memcmp(buf, GPR_SLICE_START_PTR(s->slice), length)) {
-      GRPC_MDSTR_REF((grpc_mdstr *)s);
-      gpr_mu_unlock(&shard->mu);
-      GPR_TIMER_END("grpc_mdstr_from_buffer", 0);
-      return (grpc_mdstr *)s;
+      if (gpr_atm_full_fetch_add(&s->refcnt, 1) == 0) {
+        /* If we get here, we've added a ref to something that was about to
+         * die - drop it immediately.
+         * The *only* possible path here (given the shard mutex) should be to
+         * drop from one ref back to zero - assert that with a CAS */
+        GPR_ASSERT(gpr_atm_rel_cas(&s->refcnt, 1, 0));
+        /* and treat this as if we were never here... sshhh */
+      } else {
+        gpr_mu_unlock(&shard->mu);
+        GPR_TIMER_END("grpc_mdstr_from_buffer", 0);
+        return (grpc_mdstr *)s;
+      }
     }
   }
 
@@ -397,7 +405,7 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
   if (length + 1 < GPR_SLICE_INLINED_SIZE) {
     /* string data goes directly into the slice */
     s = gpr_malloc(sizeof(internal_string));
-    gpr_atm_rel_store(&s->refcnt, 2);
+    gpr_atm_rel_store(&s->refcnt, 1);
     s->slice.refcount = NULL;
     memcpy(s->slice.data.inlined.bytes, buf, length);
     s->slice.data.inlined.bytes[length] = 0;
@@ -406,7 +414,7 @@ grpc_mdstr *grpc_mdstr_from_buffer(const uint8_t *buf, size_t length) {
     /* string data goes after the internal_string header, and we +1 for null
        terminator */
     s = gpr_malloc(sizeof(internal_string) + length + 1);
-    gpr_atm_rel_store(&s->refcnt, 2);
+    gpr_atm_rel_store(&s->refcnt, 1);
     s->refcount.ref = slice_ref;
     s->refcount.unref = slice_unref;
     s->slice.refcount = &s->refcount;
@@ -675,20 +683,19 @@ const char *grpc_mdstr_as_c_string(grpc_mdstr *s) {
 grpc_mdstr *grpc_mdstr_ref(grpc_mdstr *gs DEBUG_ARGS) {
   internal_string *s = (internal_string *)gs;
   if (is_mdstr_static(gs)) return gs;
-  GPR_ASSERT(gpr_atm_full_fetch_add(&s->refcnt, 1) != 0);
+  GPR_ASSERT(gpr_atm_full_fetch_add(&s->refcnt, 1) > 0);
   return gs;
 }
 
 void grpc_mdstr_unref(grpc_mdstr *gs DEBUG_ARGS) {
   internal_string *s = (internal_string *)gs;
   if (is_mdstr_static(gs)) return;
-  if (2 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
+  if (1 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
     strtab_shard *shard =
         &g_strtab_shard[SHARD_IDX(s->hash, LOG2_STRTAB_SHARD_COUNT)];
     gpr_mu_lock(&shard->mu);
-    if (1 == gpr_atm_no_barrier_load(&s->refcnt)) {
-      internal_destroy_string(shard, s);
-    }
+    GPR_ASSERT(0 == gpr_atm_no_barrier_load(&s->refcnt));
+    internal_destroy_string(shard, s);
     gpr_mu_unlock(&shard->mu);
   }
 }
diff --git a/src/cpp/common/core_codegen.cc b/src/cpp/common/core_codegen.cc
index 33a8f755e6..8e8d42eb29 100644
--- a/src/cpp/common/core_codegen.cc
+++ b/src/cpp/common/core_codegen.cc
@@ -48,124 +48,6 @@
 
 #include "src/core/lib/profiling/timers.h"
 
-namespace {
-
-const int kGrpcBufferWriterMaxBufferLength = 8192;
-
-class GrpcBufferWriter GRPC_FINAL
-    : public ::grpc::protobuf::io::ZeroCopyOutputStream {
- public:
-  explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size)
-      : block_size_(block_size), byte_count_(0), have_backup_(false) {
-    *bp = grpc_raw_byte_buffer_create(NULL, 0);
-    slice_buffer_ = &(*bp)->data.raw.slice_buffer;
-  }
-
-  ~GrpcBufferWriter() GRPC_OVERRIDE {
-    if (have_backup_) {
-      gpr_slice_unref(backup_slice_);
-    }
-  }
-
-  bool Next(void** data, int* size) GRPC_OVERRIDE {
-    if (have_backup_) {
-      slice_ = backup_slice_;
-      have_backup_ = false;
-    } else {
-      slice_ = gpr_slice_malloc(block_size_);
-    }
-    *data = GPR_SLICE_START_PTR(slice_);
-    // On win x64, int is only 32bit
-    GPR_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
-    byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
-    gpr_slice_buffer_add(slice_buffer_, slice_);
-    return true;
-  }
-
-  void BackUp(int count) GRPC_OVERRIDE {
-    gpr_slice_buffer_pop(slice_buffer_);
-    if (count == block_size_) {
-      backup_slice_ = slice_;
-    } else {
-      backup_slice_ =
-          gpr_slice_split_tail(&slice_, GPR_SLICE_LENGTH(slice_) - count);
-      gpr_slice_buffer_add(slice_buffer_, slice_);
-    }
-    have_backup_ = true;
-    byte_count_ -= count;
-  }
-
-  grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE { return byte_count_; }
-
- private:
-  const int block_size_;
-  int64_t byte_count_;
-  gpr_slice_buffer* slice_buffer_;
-  bool have_backup_;
-  gpr_slice backup_slice_;
-  gpr_slice slice_;
-};
-
-class GrpcBufferReader GRPC_FINAL
-    : public ::grpc::protobuf::io::ZeroCopyInputStream {
- public:
-  explicit GrpcBufferReader(grpc_byte_buffer* buffer)
-      : byte_count_(0), backup_count_(0) {
-    grpc_byte_buffer_reader_init(&reader_, buffer);
-  }
-  ~GrpcBufferReader() GRPC_OVERRIDE {
-    grpc_byte_buffer_reader_destroy(&reader_);
-  }
-
-  bool Next(const void** data, int* size) GRPC_OVERRIDE {
-    if (backup_count_ > 0) {
-      *data = GPR_SLICE_START_PTR(slice_) + GPR_SLICE_LENGTH(slice_) -
-              backup_count_;
-      GPR_ASSERT(backup_count_ <= INT_MAX);
-      *size = (int)backup_count_;
-      backup_count_ = 0;
-      return true;
-    }
-    if (!grpc_byte_buffer_reader_next(&reader_, &slice_)) {
-      return false;
-    }
-    gpr_slice_unref(slice_);
-    *data = GPR_SLICE_START_PTR(slice_);
-    // On win x64, int is only 32bit
-    GPR_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
-    byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
-    return true;
-  }
-
-  void BackUp(int count) GRPC_OVERRIDE { backup_count_ = count; }
-
-  bool Skip(int count) GRPC_OVERRIDE {
-    const void* data;
-    int size;
-    while (Next(&data, &size)) {
-      if (size >= count) {
-        BackUp(size - count);
-        return true;
-      }
-      // size < count;
-      count -= size;
-    }
-    // error or we have too large count;
-    return false;
-  }
-
-  grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE {
-    return byte_count_ - backup_count_;
-  }
-
- private:
-  int64_t byte_count_;
-  int64_t backup_count_;
-  grpc_byte_buffer_reader reader_;
-  gpr_slice slice_;
-};
-}  // namespace
-
 namespace grpc {
 
 grpc_completion_queue* CoreCodegen::grpc_completion_queue_create(
@@ -192,6 +74,44 @@ void CoreCodegen::grpc_byte_buffer_destroy(grpc_byte_buffer* bb) {
   ::grpc_byte_buffer_destroy(bb);
 }
 
+void CoreCodegen::grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
+                                               grpc_byte_buffer* buffer) {
+  ::grpc_byte_buffer_reader_init(reader, buffer);
+}
+
+void CoreCodegen::grpc_byte_buffer_reader_destroy(
+    grpc_byte_buffer_reader* reader) {
+  ::grpc_byte_buffer_reader_destroy(reader);
+}
+
+int CoreCodegen::grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
+                                              gpr_slice* slice) {
+  return ::grpc_byte_buffer_reader_next(reader, slice);
+}
+
+grpc_byte_buffer* CoreCodegen::grpc_raw_byte_buffer_create(gpr_slice* slice,
+                                                           size_t nslices) {
+  return ::grpc_raw_byte_buffer_create(slice, nslices);
+}
+
+gpr_slice CoreCodegen::gpr_slice_malloc(size_t length) {
+  return ::gpr_slice_malloc(length);
+}
+
+void CoreCodegen::gpr_slice_unref(gpr_slice slice) { ::gpr_slice_unref(slice); }
+
+gpr_slice CoreCodegen::gpr_slice_split_tail(gpr_slice* s, size_t split) {
+  return ::gpr_slice_split_tail(s, split);
+}
+
+void CoreCodegen::gpr_slice_buffer_add(gpr_slice_buffer* sb, gpr_slice slice) {
+  ::gpr_slice_buffer_add(sb, slice);
+}
+
+void CoreCodegen::gpr_slice_buffer_pop(gpr_slice_buffer* sb) {
+  ::gpr_slice_buffer_pop(sb);
+}
+
 void CoreCodegen::grpc_metadata_array_init(grpc_metadata_array* array) {
   ::grpc_metadata_array_init(array);
 }
@@ -200,6 +120,10 @@ void CoreCodegen::grpc_metadata_array_destroy(grpc_metadata_array* array) {
   ::grpc_metadata_array_destroy(array);
 }
 
+const Status& CoreCodegen::ok() { return grpc::Status::OK; }
+
+const Status& CoreCodegen::cancelled() { return grpc::Status::CANCELLED; }
+
 gpr_timespec CoreCodegen::gpr_inf_future(gpr_clock_type type) {
   return ::gpr_inf_future(type);
 }
@@ -209,48 +133,4 @@ void CoreCodegen::assert_fail(const char* failed_assertion) {
   abort();
 }
 
-Status CoreCodegen::SerializeProto(const grpc::protobuf::Message& msg,
-                                   grpc_byte_buffer** bp) {
-  GPR_TIMER_SCOPE("SerializeProto", 0);
-  int byte_size = msg.ByteSize();
-  if (byte_size <= kGrpcBufferWriterMaxBufferLength) {
-    gpr_slice slice = gpr_slice_malloc(byte_size);
-    GPR_ASSERT(GPR_SLICE_END_PTR(slice) ==
-               msg.SerializeWithCachedSizesToArray(GPR_SLICE_START_PTR(slice)));
-    *bp = grpc_raw_byte_buffer_create(&slice, 1);
-    gpr_slice_unref(slice);
-    return Status::OK;
-  } else {
-    GrpcBufferWriter writer(bp, kGrpcBufferWriterMaxBufferLength);
-    return msg.SerializeToZeroCopyStream(&writer)
-               ? Status::OK
-               : Status(StatusCode::INTERNAL, "Failed to serialize message");
-  }
-}
-
-Status CoreCodegen::DeserializeProto(grpc_byte_buffer* buffer,
-                                     grpc::protobuf::Message* msg,
-                                     int max_message_size) {
-  GPR_TIMER_SCOPE("DeserializeProto", 0);
-  if (buffer == nullptr) {
-    return Status(StatusCode::INTERNAL, "No payload");
-  }
-  Status result = Status::OK;
-  {
-    GrpcBufferReader reader(buffer);
-    ::grpc::protobuf::io::CodedInputStream decoder(&reader);
-    if (max_message_size > 0) {
-      decoder.SetTotalBytesLimit(max_message_size, max_message_size);
-    }
-    if (!msg->ParseFromCodedStream(&decoder)) {
-      result = Status(StatusCode::INTERNAL, msg->InitializationErrorString());
-    }
-    if (!decoder.ConsumedEntireMessage()) {
-      result = Status(StatusCode::INTERNAL, "Did not read entire message");
-    }
-  }
-  grpc_byte_buffer_destroy(buffer);
-  return result;
-}
-
 }  // namespace grpc
diff --git a/src/cpp/common/core_codegen.h b/src/cpp/common/core_codegen.h
index e15cb4c34a..656b11e7e7 100644
--- a/src/cpp/common/core_codegen.h
+++ b/src/cpp/common/core_codegen.h
@@ -42,13 +42,6 @@ namespace grpc {
 /// Implementation of the core codegen interface.
 class CoreCodegen : public CoreCodegenInterface {
  private:
-  Status SerializeProto(const grpc::protobuf::Message& msg,
-                        grpc_byte_buffer** bp) override;
-
-  Status DeserializeProto(grpc_byte_buffer* buffer,
-                          grpc::protobuf::Message* msg,
-                          int max_message_size) override;
-
   grpc_completion_queue* grpc_completion_queue_create(void* reserved) override;
   void grpc_completion_queue_destroy(grpc_completion_queue* cq) override;
   grpc_event grpc_completion_queue_pluck(grpc_completion_queue* cq, void* tag,
@@ -60,11 +53,30 @@ class CoreCodegen : public CoreCodegenInterface {
 
   void grpc_byte_buffer_destroy(grpc_byte_buffer* bb) override;
 
+  void grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
+                                    grpc_byte_buffer* buffer) override;
+  void grpc_byte_buffer_reader_destroy(
+      grpc_byte_buffer_reader* reader) override;
+  int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader* reader,
+                                   gpr_slice* slice) override;
+
+  grpc_byte_buffer* grpc_raw_byte_buffer_create(gpr_slice* slice,
+                                                size_t nslices) override;
+
+  gpr_slice gpr_slice_malloc(size_t length) override;
+  void gpr_slice_unref(gpr_slice slice) override;
+  gpr_slice gpr_slice_split_tail(gpr_slice* s, size_t split) override;
+  void gpr_slice_buffer_add(gpr_slice_buffer* sb, gpr_slice slice) override;
+  void gpr_slice_buffer_pop(gpr_slice_buffer* sb) override;
+
   void grpc_metadata_array_init(grpc_metadata_array* array) override;
   void grpc_metadata_array_destroy(grpc_metadata_array* array) override;
 
   gpr_timespec gpr_inf_future(gpr_clock_type type) override;
 
+  virtual const Status& ok() override;
+  virtual const Status& cancelled() override;
+
   void assert_fail(const char* failed_assertion) override;
 };
 
diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index f3bb0d1cdc..1a6482df90 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -103,7 +103,9 @@ namespace Math {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class MathClient : ClientBase<MathClient>, IMathClient
+    #pragma warning restore 0618
     {
       public MathClient(Channel channel) : base(channel)
       {
@@ -167,7 +169,9 @@ namespace Math {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMath serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Div, serviceImpl.Div)
@@ -177,7 +181,9 @@ namespace Math {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(MathBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Div, serviceImpl.Div)
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index 72e11cca3a..e7f779753d 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -56,7 +56,9 @@ namespace Grpc.Health.V1 {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class HealthClient : ClientBase<HealthClient>, IHealthClient
+    #pragma warning restore 0618
     {
       public HealthClient(Channel channel) : base(channel)
       {
@@ -96,14 +98,18 @@ namespace Grpc.Health.V1 {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IHealth serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Check, serviceImpl.Check).Build();
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(HealthBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Check, serviceImpl.Check).Build();
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index cc01ae91a1..11c1572c19 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -72,7 +72,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class MetricsServiceClient : ClientBase<MetricsServiceClient>, IMetricsServiceClient
+    #pragma warning restore 0618
     {
       public MetricsServiceClient(Channel channel) : base(channel)
       {
@@ -120,7 +122,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMetricsService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
@@ -128,7 +132,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(MetricsServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_GetAllGauges, serviceImpl.GetAllGauges)
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index 46b16cf202..18cf0672e3 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -71,7 +71,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class BenchmarkServiceClient : ClientBase<BenchmarkServiceClient>, IBenchmarkServiceClient
+    #pragma warning restore 0618
     {
       public BenchmarkServiceClient(Channel channel) : base(channel)
       {
@@ -119,7 +121,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IBenchmarkService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
@@ -127,7 +131,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(BenchmarkServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnaryCall, serviceImpl.UnaryCall)
@@ -241,7 +247,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class WorkerServiceClient : ClientBase<WorkerServiceClient>, IWorkerServiceClient
+    #pragma warning restore 0618
     {
       public WorkerServiceClient(Channel channel) : base(channel)
       {
@@ -313,7 +321,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IWorkerService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_RunServer, serviceImpl.RunServer)
@@ -323,7 +333,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(WorkerServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_RunServer, serviceImpl.RunServer)
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index 31746cbe71..3b915f6df1 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -138,7 +138,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class TestServiceClient : ClientBase<TestServiceClient>, ITestServiceClient
+    #pragma warning restore 0618
     {
       public TestServiceClient(Channel channel) : base(channel)
       {
@@ -226,7 +228,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(ITestService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_EmptyCall, serviceImpl.EmptyCall)
@@ -238,7 +242,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(TestServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_EmptyCall, serviceImpl.EmptyCall)
@@ -303,7 +309,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class UnimplementedServiceClient : ClientBase<UnimplementedServiceClient>, IUnimplementedServiceClient
+    #pragma warning restore 0618
     {
       public UnimplementedServiceClient(Channel channel) : base(channel)
       {
@@ -343,14 +351,18 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IUnimplementedService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(UnimplementedServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
@@ -429,7 +441,9 @@ namespace Grpc.Testing {
     }
 
     // client stub
+    #pragma warning disable 0618
     public class ReconnectServiceClient : ClientBase<ReconnectServiceClient>, IReconnectServiceClient
+    #pragma warning restore 0618
     {
       public ReconnectServiceClient(Channel channel) : base(channel)
       {
@@ -485,7 +499,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IReconnectService serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Start, serviceImpl.Start)
@@ -493,7 +509,9 @@ namespace Grpc.Testing {
     }
 
     // creates service definition that can be registered with a server
+    #pragma warning disable 0618
     public static ServerServiceDefinition BindService(ReconnectServiceBase serviceImpl)
+    #pragma warning restore 0618
     {
       return ServerServiceDefinition.CreateBuilder(__ServiceName)
           .AddMethod(__Method_Start, serviceImpl.Start)
diff --git a/test/core/surface/public_headers_must_be_c89.c b/test/core/surface/public_headers_must_be_c89.c
index 0eede6c23b..3eeb55d033 100644
--- a/test/core/surface/public_headers_must_be_c89.c
+++ b/test/core/surface/public_headers_must_be_c89.c
@@ -41,6 +41,7 @@
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/atm.h>
 #include <grpc/impl/codegen/byte_buffer.h>
+#include <grpc/impl/codegen/byte_buffer_reader.h>
 #include <grpc/impl/codegen/compression_types.h>
 #include <grpc/impl/codegen/connectivity_state.h>
 #include <grpc/impl/codegen/grpc_types.h>
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 7dc0496047..664ca03d97 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -833,6 +833,7 @@ include/grpc++/impl/codegen/sync_no_cxx11.h \
 include/grpc++/impl/codegen/sync_stream.h \
 include/grpc++/impl/codegen/time.h \
 include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
 include/grpc/impl/codegen/compression_types.h \
 include/grpc/impl/codegen/connectivity_state.h \
 include/grpc/impl/codegen/grpc_types.h \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 312fd17cb2..5188ef1e8d 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -833,6 +833,7 @@ include/grpc++/impl/codegen/sync_no_cxx11.h \
 include/grpc++/impl/codegen/sync_stream.h \
 include/grpc++/impl/codegen/time.h \
 include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
 include/grpc/impl/codegen/compression_types.h \
 include/grpc/impl/codegen/connectivity_state.h \
 include/grpc/impl/codegen/grpc_types.h \
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 034d9c6e6f..42bdb2f043 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -766,6 +766,7 @@ include/grpc/compression.h \
 include/grpc/grpc.h \
 include/grpc/status.h \
 include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
 include/grpc/impl/codegen/compression_types.h \
 include/grpc/impl/codegen/connectivity_state.h \
 include/grpc/impl/codegen/grpc_types.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 3a774a70d6..7a99598e05 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -766,6 +766,7 @@ include/grpc/compression.h \
 include/grpc/grpc.h \
 include/grpc/status.h \
 include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/byte_buffer_reader.h \
 include/grpc/impl/codegen/compression_types.h \
 include/grpc/impl/codegen/connectivity_state.h \
 include/grpc/impl/codegen/grpc_types.h \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index e94387cb4d..cfe204840d 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -5883,6 +5883,7 @@
     ], 
     "headers": [
       "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/byte_buffer_reader.h", 
       "include/grpc/impl/codegen/compression_types.h", 
       "include/grpc/impl/codegen/connectivity_state.h", 
       "include/grpc/impl/codegen/grpc_types.h", 
@@ -5893,6 +5894,7 @@
     "name": "grpc_codegen", 
     "src": [
       "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/byte_buffer_reader.h", 
       "include/grpc/impl/codegen/compression_types.h", 
       "include/grpc/impl/codegen/connectivity_state.h", 
       "include/grpc/impl/codegen/grpc_types.h", 
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index 29cab37d52..0ec53acf65 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -331,6 +331,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index 15e2807fd4..491aeaeb67 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -315,6 +315,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index fcda361ef1..96bee4101c 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -331,6 +331,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 1dc95f985a..fe9eed781c 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -300,6 +300,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 4eec05a3b1..03f4eaa5be 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -273,6 +273,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 17c88c4805..4617e3de0d 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -516,6 +516,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 26050dcf74..0eb6535c6b 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -264,6 +264,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index a4acf513bc..f544fe6158 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -456,6 +456,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj
index cd0b40c873..34e939cf84 100644
--- a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj
+++ b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj
@@ -191,6 +191,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters
index 029b8ef774..d66236580c 100644
--- a/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters
+++ b/vsprojects/vcxproj/test/codegen_test_full/codegen_test_full.vcxproj.filters
@@ -120,6 +120,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj
index 6d138fae1c..890d77df22 100644
--- a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj
+++ b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj
@@ -191,6 +191,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\sync_stream.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\time.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
diff --git a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters
index dc3f0b2d04..4e0ba656fc 100644
--- a/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters
+++ b/vsprojects/vcxproj/test/codegen_test_minimal/codegen_test_minimal.vcxproj.filters
@@ -120,6 +120,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer_reader.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
-- 
GitLab


From 6da28b26bf7c96dbf714558bff46046c2efb0f91 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 27 Apr 2016 11:05:34 -0700
Subject: [PATCH 226/525] cleanup interop test scripts

---
 tools/dockerfile/grpc_interop_node/build_interop.sh | 2 --
 tools/dockerfile/grpc_interop_ruby/build_interop.sh | 2 --
 2 files changed, 4 deletions(-)

diff --git a/tools/dockerfile/grpc_interop_node/build_interop.sh b/tools/dockerfile/grpc_interop_node/build_interop.sh
index 4d4290d0b4..b99fd444ee 100755
--- a/tools/dockerfile/grpc_interop_node/build_interop.sh
+++ b/tools/dockerfile/grpc_interop_node/build_interop.sh
@@ -41,8 +41,6 @@ cd /var/local/git/grpc
 nvm use 0.12
 nvm alias default 0.12  # prevent the need to run 'nvm use' in every shell
 
-make install-certs
-
 # build Node interop client & server
 npm install -g node-gyp
 npm install --unsafe-perm --build-from-source
diff --git a/tools/dockerfile/grpc_interop_ruby/build_interop.sh b/tools/dockerfile/grpc_interop_ruby/build_interop.sh
index 685397bac2..97b3860f98 100755
--- a/tools/dockerfile/grpc_interop_ruby/build_interop.sh
+++ b/tools/dockerfile/grpc_interop_ruby/build_interop.sh
@@ -40,7 +40,5 @@ cp -r /var/local/jenkins/service_account $HOME || true
 cd /var/local/git/grpc
 rvm --default use ruby-2.1
 
-make install-certs
-
 # build Ruby interop client and server
 (cd src/ruby && gem update bundler && bundle && rake compile)
-- 
GitLab


From a6316693bcadadb87e4c189007e69dc4ad87c79c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 27 Apr 2016 11:08:06 -0700
Subject: [PATCH 227/525] get rid of the old homebrew/linuxbrew tests

---
 tools/dockerfile/grpc_linuxbrew/Dockerfile |  62 ---------
 tools/jenkins/run_distribution.sh          | 144 ---------------------
 2 files changed, 206 deletions(-)
 delete mode 100644 tools/dockerfile/grpc_linuxbrew/Dockerfile
 delete mode 100755 tools/jenkins/run_distribution.sh

diff --git a/tools/dockerfile/grpc_linuxbrew/Dockerfile b/tools/dockerfile/grpc_linuxbrew/Dockerfile
deleted file mode 100644
index 848489e091..0000000000
--- a/tools/dockerfile/grpc_linuxbrew/Dockerfile
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# A work-in-progress Dockerfile that allows running gRPC homebrew
-# installations inside docker containers
-FROM debian:jessie
-
-# Core dependencies
-RUN apt-get update && apt-get install -y \
-  bzip2 curl git ruby wget
-
-# Install linuxbrew
-ENV PATH /home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH
-RUN git clone https://github.com/Homebrew/linuxbrew.git /home/linuxbrew/.linuxbrew
-RUN brew doctor || true
-
-# Python dependency
-RUN apt-get update && apt-get install -y python-dev
-RUN curl https://bootstrap.pypa.io/get-pip.py | python
-
-# NodeJS dependency
-RUN touch .profile
-RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
-RUN /bin/bash -l -c "nvm install 0.12"
-
-# Ruby dependency
-RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
-RUN /bin/bash -l -c "\curl -sSL https://get.rvm.io | bash -s stable"
-RUN /bin/bash -l -c "rvm install ruby-2.1"
-
-# PHP dependency
-RUN apt-get update && apt-get install -y php5 php5-dev php-pear phpunit unzip
-
-RUN /bin/bash -l -c "echo 'export PATH=/home/linuxbrew/.linuxbrew/bin:\$PATH' >> ~/.bashrc"
-
-CMD ["bash"]
diff --git a/tools/jenkins/run_distribution.sh b/tools/jenkins/run_distribution.sh
deleted file mode 100755
index 306b85b045..0000000000
--- a/tools/jenkins/run_distribution.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/bin/bash
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# This script is invoked by Jenkins and triggers a test run of
-# linuxbrew installation of a selected language
-set -ex
-
-# Our homebrew installation script command, per language
-# Can be used in both linux and macos
-if [ "$language" == "core" ]; then
-  command="curl -fsSL https://goo.gl/getgrpc | bash -"
-elif [[ "python nodejs ruby php" =~ "$language" ]]; then
-  command="curl -fsSL https://goo.gl/getgrpc | bash -s $language"
-else
-  echo "unsupported language $language"
-  exit 1
-fi
-
-if [ "$platform" == "linux" ]; then
-
-  if [ "$dist_channel" == "homebrew" ]; then
-
-    sha1=$(sha1sum tools/dockerfile/grpc_linuxbrew/Dockerfile | cut -f1 -d\ )
-    DOCKER_IMAGE_NAME=grpc_linuxbrew_$sha1
-
-    # build docker image, contains all pre-requisites
-    docker build -t $DOCKER_IMAGE_NAME tools/dockerfile/grpc_linuxbrew
-
-    # run per-language homebrew installation script
-    docker run --rm=true $DOCKER_IMAGE_NAME bash -l \
-      -c "nvm use 0.12; \
-          npm set unsafe-perm true; \
-          rvm use ruby-2.1; \
-          $command"
-
-  else
-    echo "Unsupported $platform dist_channel $dist_channel"
-    exit 1
-  fi
-
-elif [ "$platform" == "macos" ]; then
-
-  if [ "$dist_channel" == "homebrew" ]; then
-
-    echo "Formulas installed by system-wide homebrew (before)"
-    brew list -l
-
-    # Save the original PATH so that we can run the system `brew` command
-    # again at the end of the script
-    export ORIGINAL_PATH=$PATH
-
-    # Set up temp directories for test installation of homebrew
-    brew_root=/tmp/homebrew-test-$language
-    rm -rf $brew_root
-    mkdir -p $brew_root
-    git clone https://github.com/Homebrew/homebrew.git $brew_root
-
-    # Make sure we are operating at the right copy of temp homebrew
-    # installation
-    export PATH=$brew_root/bin:$PATH
-
-    # Set up right environment for each language
-    case $language in
-      *python*)
-        rm -rf jenkins_python_venv
-        virtualenv jenkins_python_venv
-        source jenkins_python_venv/bin/activate
-        ;;
-      *nodejs*)
-        export PATH=$HOME/.nvm/versions/node/v0.12.7/bin:$PATH
-        ;;
-      *ruby*)
-        export PATH=/usr/local/rvm/rubies/ruby-2.2.1/bin:$PATH
-        ;;
-      *php*)
-        export CFLAGS="-Wno-parentheses-equality"
-        ;;
-    esac
-
-    # Run our homebrew installation script
-    bash -c "$command"
-
-    # Uninstall / clean up per-language modules/extensions after the test
-    case $language in
-      *python*)
-        deactivate
-        rm -rf jenkins_python_venv
-        ;;
-      *nodejs*)
-        npm list -g | grep grpc
-        npm uninstall -g grpc
-        ;;
-      *ruby*)
-        gem list | grep grpc
-        gem uninstall grpc
-        ;;
-      *php*)
-        rm grpc.so
-        ;;
-    esac
-
-    # Clean up
-    rm -rf $brew_root
-
-    echo "Formulas installed by system-wide homebrew (after, should be unaffected)"
-    export PATH=$ORIGINAL_PATH
-    brew list -l
-
-  else
-    echo "Unsupported $platform dist_channel $dist_channel"
-    exit 1
-  fi
-
-else
-  echo "unsupported platform $platform"
-  exit 1
-fi
-- 
GitLab


From 85a93831ddf98632d8156bcebee92069b634ef06 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 27 Apr 2016 11:11:41 -0700
Subject: [PATCH 228/525] run all implemented C# interop tests

---
 tools/run_tests/run_interop_tests.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 18d4c1072b..758be9304d 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -111,8 +111,7 @@ class CSharpLanguage:
     return {}
 
   def unimplemented_test_cases(self):
-    # TODO: status_code_and_message doesn't work against node_server
-    return _SKIP_COMPRESSION + ['status_code_and_message']
+    return _SKIP_COMPRESSION
 
   def unimplemented_test_cases_server(self):
     return _SKIP_COMPRESSION
-- 
GitLab


From 31bad328b335597e898583199d43f2016934fd1b Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 27 Apr 2016 11:15:04 -0700
Subject: [PATCH 229/525] get rid of the unused grpc_base Dockerfile

---
 tools/dockerfile/grpc_base/Dockerfile | 68 ---------------------------
 tools/dockerfile/grpc_base/README.md  | 11 -----
 2 files changed, 79 deletions(-)
 delete mode 100644 tools/dockerfile/grpc_base/Dockerfile
 delete mode 100644 tools/dockerfile/grpc_base/README.md

diff --git a/tools/dockerfile/grpc_base/Dockerfile b/tools/dockerfile/grpc_base/Dockerfile
deleted file mode 100644
index 91862773d5..0000000000
--- a/tools/dockerfile/grpc_base/Dockerfile
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Base Dockerfile for gRPC dev images
-FROM debian:latest
-
-# Install Git.
-RUN apt-get update && apt-get install -y \
-  autoconf \
-  autotools-dev \
-  build-essential \
-  bzip2 \
-  curl \
-  gcc \
-  git \
-  libc6 \
-  libc6-dbg \
-  libc6-dev \
-  libgtest-dev \
-  libtool \
-  make \
-  strace \
-  python-dev \
-  python-setuptools \
-  telnet \
-  unzip \
-  wget \
-  zip && apt-get clean
-
-# Install useful useful python modules
-RUN easy_install -U pip
-RUN pip install -U crcmod  # makes downloads from cloud storage faster
-
-# Install GCloud
-RUN wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.zip \
-  && unzip google-cloud-sdk.zip && rm google-cloud-sdk.zip
-ENV CLOUD_SDK /google-cloud-sdk
-RUN $CLOUD_SDK/install.sh --usage-reporting=true --path-update=true --bash-completion=true --rc-path=/.bashrc --disable-installation-options
-ENV PATH $CLOUD_SDK/bin:$PATH
-
-# Define the default command.
-CMD ["bash"]
diff --git a/tools/dockerfile/grpc_base/README.md b/tools/dockerfile/grpc_base/README.md
deleted file mode 100644
index 5c81b02425..0000000000
--- a/tools/dockerfile/grpc_base/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Base GRPC Dockerfile
-====================
-
-Dockerfile for creating the base gRPC development Docker instance.
-For now, this assumes that the development will be done on GCE instances,
-with source code on GitHub.
-
-As of 2015/02/02, it includes
-- git
-- some useful tools like curl, emacs, strace, telnet etc
-- a patched version of protoc, to allow protos with stream tags to work
-- 
GitLab


From c218d05029deb6b27a952c5d4ed7ea74320d680f Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 27 Apr 2016 11:24:42 -0700
Subject: [PATCH 230/525] move interop test docker files to a subdir

---
 tools/dockerfile/{ => interoptest}/grpc_interop_csharp/Dockerfile | 0
 .../{ => interoptest}/grpc_interop_csharp/build_interop.sh        | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_cxx/Dockerfile    | 0
 .../{ => interoptest}/grpc_interop_cxx/build_interop.sh           | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_go/Dockerfile     | 0
 .../dockerfile/{ => interoptest}/grpc_interop_go/build_interop.sh | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_http2/Dockerfile  | 0
 .../{ => interoptest}/grpc_interop_http2/build_interop.sh         | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_java/Dockerfile   | 0
 .../{ => interoptest}/grpc_interop_java/build_interop.sh          | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_node/Dockerfile   | 0
 .../{ => interoptest}/grpc_interop_node/build_interop.sh          | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_php/Dockerfile    | 0
 .../{ => interoptest}/grpc_interop_php/build_interop.sh           | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_python/Dockerfile | 0
 .../{ => interoptest}/grpc_interop_python/build_interop.sh        | 0
 tools/dockerfile/{ => interoptest}/grpc_interop_ruby/Dockerfile   | 0
 .../{ => interoptest}/grpc_interop_ruby/build_interop.sh          | 0
 18 files changed, 0 insertions(+), 0 deletions(-)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_csharp/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_csharp/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_cxx/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_cxx/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_go/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_go/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_http2/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_http2/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_java/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_java/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_node/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_node/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_php/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_php/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_python/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_python/build_interop.sh (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_ruby/Dockerfile (100%)
 rename tools/dockerfile/{ => interoptest}/grpc_interop_ruby/build_interop.sh (100%)

diff --git a/tools/dockerfile/grpc_interop_csharp/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_csharp/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_csharp/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_csharp/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_csharp/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_csharp/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_cxx/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_cxx/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_cxx/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_cxx/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_cxx/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_cxx/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_go/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_go/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_go/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_go/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_go/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_go/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_go/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_http2/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_http2/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_http2/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_http2/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_http2/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_http2/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_java/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_java/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_java/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_java/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_java/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_java/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_node/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_node/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_node/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_node/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_php/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_php/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_php/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_php/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_php/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_php/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_php/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_python/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_python/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_python/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_python/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_python/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_python/build_interop.sh
diff --git a/tools/dockerfile/grpc_interop_ruby/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
similarity index 100%
rename from tools/dockerfile/grpc_interop_ruby/Dockerfile
rename to tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
diff --git a/tools/dockerfile/grpc_interop_ruby/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh
similarity index 100%
rename from tools/dockerfile/grpc_interop_ruby/build_interop.sh
rename to tools/dockerfile/interoptest/grpc_interop_ruby/build_interop.sh
-- 
GitLab


From 24b68cd62f8b3220c89c30342d491b0d71638c74 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 27 Apr 2016 12:19:56 -0700
Subject: [PATCH 231/525] generate interop test Dockerfiles using templates

---
 .../grpc_interop_csharp/Dockerfile.template   | 39 +++++++++++
 .../grpc_interop_cxx/Dockerfile.template      | 39 +++++++++++
 .../grpc_interop_go/Dockerfile.template       | 37 +++++++++++
 .../grpc_interop_http2/Dockerfile.template    | 37 +++++++++++
 .../grpc_interop_java/Dockerfile.template     | 44 +++++++++++++
 .../grpc_interop_node/Dockerfile.template     | 39 +++++++++++
 .../grpc_interop_php/Dockerfile.template      | 64 +++++++++++++++++++
 .../grpc_interop_python/Dockerfile.template   | 39 +++++++++++
 .../grpc_interop_ruby/Dockerfile.template     | 39 +++++++++++
 .../grpc_interop_csharp/Dockerfile            | 35 ++++++----
 .../interoptest/grpc_interop_cxx/Dockerfile   | 25 ++++++--
 .../interoptest/grpc_interop_java/Dockerfile  | 12 ++--
 .../interoptest/grpc_interop_node/Dockerfile  | 32 ++++++----
 .../interoptest/grpc_interop_php/Dockerfile   | 43 +++++++++----
 .../grpc_interop_python/Dockerfile            | 41 ++++++++----
 .../interoptest/grpc_interop_ruby/Dockerfile  | 36 +++++++----
 tools/jenkins/build_interop_image.sh          |  6 +-
 17 files changed, 529 insertions(+), 78 deletions(-)
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template
 create mode 100644 templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template

diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template
new file mode 100644
index 0000000000..4cb8d3b088
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../csharp_deps.include"/>
+  <%include file="../../run_tests_addons.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template
new file mode 100644
index 0000000000..e39175a1ea
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../cxx_deps.include"/>
+  <%include file="../../run_tests_addons.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template
new file mode 100644
index 0000000000..542c81d614
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_go/Dockerfile.template
@@ -0,0 +1,37 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM golang:1.5
+  
+  <%include file="../../go_path.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
new file mode 100644
index 0000000000..542c81d614
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile.template
@@ -0,0 +1,37 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM golang:1.5
+  
+  <%include file="../../go_path.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template
new file mode 100644
index 0000000000..c286e80826
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile.template
@@ -0,0 +1,44 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../java_deps.include"/>
+  
+  # Trigger download of as many Gradle artifacts as possible.
+  RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git && ${'\\'}
+    cd grpc-java && ${'\\'}
+    ./gradlew :grpc-interop-testing:installDist -PskipCodegen=true && ${'\\'}
+    rm -r "$(pwd)"
+  
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template
new file mode 100644
index 0000000000..89bb9acc1a
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../node_deps.include"/>
+  <%include file="../../run_tests_addons.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template
new file mode 100644
index 0000000000..476f9d3d3e
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile.template
@@ -0,0 +1,64 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../ruby_deps.include"/>
+  <%include file="../../php_deps.include"/>
+  <%include file="../../run_tests_addons.include"/>
+  # ronn: a ruby tool used to convert markdown to man pages, used during the
+  # install of Protobuf extensions
+  #
+  # rake: a ruby version of make used to build the PHP Protobuf extension
+  RUN /bin/bash -l -c "rvm all do gem install ronn rake"
+  
+  # Install composer
+  RUN curl -sS https://getcomposer.org/installer | php
+  RUN mv composer.phar /usr/local/bin/composer
+  
+  # As an attempt to work around #4212, try to prefetch Protobuf-PHP dependency
+  # into composer cache to prevent "composer install" from cloning on each build.
+  RUN git clone --mirror https://github.com/stanley-cheung/Protobuf-PHP.git ${'\\'}
+    /root/.composer/cache/vcs/git-github.com-stanley-cheung-Protobuf-PHP.git/
+  
+  # Download the patched PHP protobuf so that PHP gRPC clients can be generated
+  # from proto3 schemas.
+  RUN git clone https://github.com/stanley-cheung/Protobuf-PHP.git /var/local/git/protobuf-php
+  
+  RUN /bin/bash -l -c "rvm use ruby-2.1 ${'\\'}
+    && cd /var/local/git/protobuf-php ${'\\'}
+    && rvm all do rake pear:package version=1.0 ${'\\'}
+    && pear install Protobuf-1.0.tgz"
+  
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template
new file mode 100644
index 0000000000..4e816ce5b6
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../python_deps.include"/>
+  <%include file="../../run_tests_addons.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template b/templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template
new file mode 100644
index 0000000000..c3625b91fc
--- /dev/null
+++ b/templates/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../ruby_deps.include"/>
+  <%include file="../../run_tests_addons.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
index 93cd25010e..baab2f5638 100644
--- a/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
@@ -27,12 +27,9 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
 FROM debian:jessie
 
-# Install Git.
+# Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
   autoconf \
   autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
   gcc \
   gcc-multilib \
   git \
+  golang \
   gyp \
+  lcov \
   libc6 \
   libc6-dbg \
   libc6-dev \
   libgtest-dev \
   libtool \
   make \
+  perl \
   strace \
   python-dev \
   python-setuptools \
@@ -59,15 +59,11 @@ RUN apt-get update && apt-get install -y \
   wget \
   zip && apt-get clean
 
-# Prepare ccache
-RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
-RUN ln -s /usr/bin/ccache /usr/local/bin/g++
-RUN ln -s /usr/bin/ccache /usr/local/bin/cc
-RUN ln -s /usr/bin/ccache /usr/local/bin/c++
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
 
-#################
+#================
 # C# dependencies
 
 # Update to a newer version of mono
@@ -84,5 +80,20 @@ RUN apt-get update && apt-get -y dist-upgrade && apt-get install -y \
     nuget \
     && apt-get clean
 
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
+
 # Define the default command.
 CMD ["bash"]
diff --git a/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
index 1fa1907533..2bbccca9e5 100644
--- a/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
@@ -27,12 +27,9 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
 FROM debian:jessie
 
-# Install Git.
+# Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
   autoconf \
   autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
   gcc \
   gcc-multilib \
   git \
+  golang \
   gyp \
+  lcov \
   libc6 \
   libc6-dbg \
   libc6-dev \
   libgtest-dev \
   libtool \
   make \
+  perl \
   strace \
   python-dev \
   python-setuptools \
@@ -59,6 +59,14 @@ RUN apt-get update && apt-get install -y \
   wget \
   zip && apt-get clean
 
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
 # Prepare ccache
 RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
 RUN ln -s /usr/bin/ccache /usr/local/bin/g++
@@ -67,9 +75,12 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/c++
 RUN ln -s /usr/bin/ccache /usr/local/bin/clang
 RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
 
-##################
-# C++ dependencies
-RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
 
 # Define the default command.
 CMD ["bash"]
diff --git a/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
index 370657b651..252c9bc928 100644
--- a/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
@@ -31,23 +31,23 @@ FROM debian:jessie
 
 # Install JDK 8 and Git
 #
-# TODO(temiola): simplify this if/when a simpler process is available.
-#
 RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
   echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list && \
   echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list && \
-  apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \
-  apt-get update && \
-  apt-get -y install \
+  apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
+
+RUN apt-get update && apt-get -y install \
       git \
       libapr1 \
       oracle-java8-installer \
       && \
-  apt-get clean && rm -r /var/cache/oracle-jdk8-installer/
+    apt-get clean && rm -r /var/cache/oracle-jdk8-installer/
 
 ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
 ENV PATH $PATH:$JAVA_HOME/bin
 
+
+
 # Trigger download of as many Gradle artifacts as possible.
 RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git && \
   cd grpc-java && \
diff --git a/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
index db5aff844d..64314f8864 100644
--- a/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
@@ -27,12 +27,9 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
 FROM debian:jessie
 
-# Install Git.
+# Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
   autoconf \
   autotools-dev \
@@ -43,14 +40,16 @@ RUN apt-get update && apt-get install -y \
   gcc \
   gcc-multilib \
   git \
+  golang \
   gyp \
+  lcov \
   libc6 \
   libc6-dbg \
   libc6-dev \
   libgtest-dev \
-  libssl-dev \
   libtool \
   make \
+  perl \
   strace \
   python-dev \
   python-setuptools \
@@ -60,6 +59,18 @@ RUN apt-get update && apt-get install -y \
   wget \
   zip && apt-get clean
 
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+#==================
+# Node dependencies
+
+# Install nvm
+RUN touch .profile
+RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
+
 # Prepare ccache
 RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
 RUN ln -s /usr/bin/ccache /usr/local/bin/g++
@@ -68,13 +79,12 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/c++
 RUN ln -s /usr/bin/ccache /usr/local/bin/clang
 RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
 
-##################
-# Node dependencies
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
 
-# Install nvm
-RUN touch .profile
-RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
-RUN /bin/bash -l -c "nvm install 0.12"
+RUN mkdir /var/local/jenkins
 
 # Define the default command.
 CMD ["bash"]
diff --git a/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile
index cf3e79176a..e27a6a2301 100644
--- a/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_php/Dockerfile
@@ -27,12 +27,9 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
 FROM debian:jessie
 
-# Install Git.
+# Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
   autoconf \
   autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
   gcc \
   gcc-multilib \
   git \
+  golang \
   gyp \
+  lcov \
   libc6 \
   libc6-dbg \
   libc6-dev \
   libgtest-dev \
   libtool \
   make \
+  perl \
   strace \
   python-dev \
   python-setuptools \
@@ -59,15 +59,11 @@ RUN apt-get update && apt-get install -y \
   wget \
   zip && apt-get clean
 
-# Prepare ccache
-RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
-RUN ln -s /usr/bin/ccache /usr/local/bin/g++
-RUN ln -s /usr/bin/ccache /usr/local/bin/cc
-RUN ln -s /usr/bin/ccache /usr/local/bin/c++
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
 
-##################
+#==================
 # Ruby dependencies
 
 # Install rvm
@@ -82,14 +78,35 @@ RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
 RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
 RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
 
-##################
+#=================
 # PHP dependencies
 
 # Install dependencies
 
+RUN /bin/bash -l -c "echo 'deb http://packages.dotdeb.org wheezy-php55 all' \
+    >> /etc/apt/sources.list.d/dotdeb.list"
+RUN /bin/bash -l -c "echo 'deb-src http://packages.dotdeb.org wheezy-php55 all' \
+    >> /etc/apt/sources.list.d/dotdeb.list"
+RUN wget http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add -
+
 RUN apt-get update && apt-get install -y \
     git php5 php5-dev phpunit unzip
 
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
+
 # ronn: a ruby tool used to convert markdown to man pages, used during the
 # install of Protobuf extensions
 #
diff --git a/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
index 047604b1b7..071fb2c93b 100644
--- a/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
@@ -27,12 +27,9 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
 FROM debian:jessie
 
-# Install Git.
+# Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
   autoconf \
   autotools-dev \
@@ -43,17 +40,18 @@ RUN apt-get update && apt-get install -y \
   gcc \
   gcc-multilib \
   git \
+  golang \
   gyp \
+  lcov \
   libc6 \
   libc6-dbg \
   libc6-dev \
   libgtest-dev \
-  libssl-dev \
   libtool \
   make \
+  perl \
   strace \
   python-dev \
-  python-pip \
   python-setuptools \
   python-yaml \
   telnet \
@@ -61,6 +59,25 @@ RUN apt-get update && apt-get install -y \
   wget \
   zip && apt-get clean
 
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+#====================
+# Python dependencies
+
+# Install dependencies
+
+RUN apt-get update && apt-get install -y \
+    python-all-dev \
+    python3-all-dev \
+    python-pip
+
+# Install Python packages from PyPI
+RUN pip install pip --upgrade
+RUN pip install virtualenv
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 tox
+
 # Prepare ccache
 RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
 RUN ln -s /usr/bin/ccache /usr/local/bin/g++
@@ -69,14 +86,12 @@ RUN ln -s /usr/bin/ccache /usr/local/bin/c++
 RUN ln -s /usr/bin/ccache /usr/local/bin/clang
 RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
 
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
 
-#####################
-# Python dependencies
-
-# Install Python requisites
-RUN /bin/bash -l -c "pip install --upgrade pip"
-RUN /bin/bash -l -c "pip install virtualenv"
-RUN /bin/bash -l -c "pip install tox"
+RUN mkdir /var/local/jenkins
 
 # Define the default command.
 CMD ["bash"]
diff --git a/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
index ff201fa291..df8eef5438 100644
--- a/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
@@ -27,12 +27,9 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# A work-in-progress Dockerfile that allows running gRPC test suites
-# inside a docker container.
-
 FROM debian:jessie
 
-# Install Git.
+# Install Git and basic packages.
 RUN apt-get update && apt-get install -y \
   autoconf \
   autotools-dev \
@@ -43,13 +40,16 @@ RUN apt-get update && apt-get install -y \
   gcc \
   gcc-multilib \
   git \
+  golang \
   gyp \
+  lcov \
   libc6 \
   libc6-dbg \
   libc6-dev \
   libgtest-dev \
   libtool \
   make \
+  perl \
   strace \
   python-dev \
   python-setuptools \
@@ -59,16 +59,11 @@ RUN apt-get update && apt-get install -y \
   wget \
   zip && apt-get clean
 
-# Prepare ccache
-RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
-RUN ln -s /usr/bin/ccache /usr/local/bin/g++
-RUN ln -s /usr/bin/ccache /usr/local/bin/cc
-RUN ln -s /usr/bin/ccache /usr/local/bin/c++
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang
-RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
-
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
 
-##################
+#==================
 # Ruby dependencies
 
 # Install rvm
@@ -83,5 +78,20 @@ RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
 RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
 RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
 
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
+
 # Define the default command.
 CMD ["bash"]
diff --git a/tools/jenkins/build_interop_image.sh b/tools/jenkins/build_interop_image.sh
index 26687a5a85..d2ba97c3de 100755
--- a/tools/jenkins/build_interop_image.sh
+++ b/tools/jenkins/build_interop_image.sh
@@ -71,10 +71,10 @@ then
 fi
 
 # Use image name based on Dockerfile checksum
-BASE_IMAGE=${BASE_NAME}_base:`sha1sum tools/dockerfile/$BASE_NAME/Dockerfile | cut -f1 -d\ `
+BASE_IMAGE=${BASE_NAME}_base:`sha1sum tools/dockerfile/interoptest/$BASE_NAME/Dockerfile | cut -f1 -d\ `
 
 # Make sure base docker image has been built. Should be instantaneous if so.
-docker build -t $BASE_IMAGE --force-rm=true tools/dockerfile/$BASE_NAME || exit $?
+docker build -t $BASE_IMAGE --force-rm=true tools/dockerfile/interoptest/$BASE_NAME || exit $?
 
 # Create a local branch so the child Docker script won't complain
 git branch -f jenkins-docker
@@ -92,7 +92,7 @@ CONTAINER_NAME="build_${BASE_NAME}_$(uuidgen)"
   -v /tmp/ccache:/tmp/ccache \
   --name=$CONTAINER_NAME \
   $BASE_IMAGE \
-  bash -l /var/local/jenkins/grpc/tools/dockerfile/$BASE_NAME/build_interop.sh \
+  bash -l /var/local/jenkins/grpc/tools/dockerfile/interoptest/$BASE_NAME/build_interop.sh \
   && docker commit $CONTAINER_NAME $INTEROP_IMAGE \
   && echo "Successfully built image $INTEROP_IMAGE")
 EXITCODE=$?
-- 
GitLab


From 6f6076659f4e35a903ffaf217db8e05175345977 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 27 Apr 2016 16:38:33 -0700
Subject: [PATCH 232/525] Load default roots.pem in Node via
 grpc_set_ssl_roots_override_callback

---
 src/node/ext/node_grpc.cc | 35 +++++++++++++++++++++++++++++++++++
 src/node/index.js         |  7 +++----
 2 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/src/node/ext/node_grpc.cc b/src/node/ext/node_grpc.cc
index b988f29878..6b6e42737b 100644
--- a/src/node/ext/node_grpc.cc
+++ b/src/node/ext/node_grpc.cc
@@ -35,6 +35,8 @@
 #include <nan.h>
 #include <v8.h>
 #include "grpc/grpc.h"
+#include "grpc/grpc_security.h"
+#include "grpc/support/alloc.h"
 
 #include "call.h"
 #include "call_credentials.h"
@@ -51,6 +53,8 @@ using v8::Object;
 using v8::Uint32;
 using v8::String;
 
+static char *pem_root_certs = NULL;
+
 void InitStatusConstants(Local<Object> exports) {
   Nan::HandleScope scope;
   Local<Object> status = Nan::New<Object>();
@@ -268,9 +272,36 @@ NAN_METHOD(MetadataKeyIsBinary) {
       grpc_is_binary_header(key_str, static_cast<size_t>(key->Length()))));
 }
 
+static grpc_ssl_roots_override_result get_ssl_roots_override(
+    char **pem_root_certs_ptr) {
+  *pem_root_certs_ptr = pem_root_certs;
+  if (pem_root_certs == NULL) {
+    return GRPC_SSL_ROOTS_OVERRIDE_FAIL;
+  } else {
+    return GRPC_SSL_ROOTS_OVERRIDE_OK;
+  }
+}
+
+/* This should only be called once, and only before creating any
+ *ServerCredentials */
+NAN_METHOD(SetDefaultRootsPem) {
+  if (!info[0]->IsString()) {
+    return Nan::ThrowTypeError(
+        "setDefaultRootsPem's argument must be a string");
+  }
+  Nan::Utf8String utf8_roots(info[0]);
+  size_t length = static_cast<size_t>(utf8_roots.length());
+  if (length > 0) {
+    const char *data = *utf8_roots;
+    pem_root_certs = (char *)gpr_malloc((length + 1) * sizeof(char));
+    memcpy(pem_root_certs, data, length + 1);
+  }
+}
+
 void init(Local<Object> exports) {
   Nan::HandleScope scope;
   grpc_init();
+  grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
   InitStatusConstants(exports);
   InitCallErrorConstants(exports);
   InitOpTypeConstants(exports);
@@ -298,6 +329,10 @@ void init(Local<Object> exports) {
            Nan::GetFunction(
                Nan::New<FunctionTemplate>(MetadataKeyIsBinary)
                             ).ToLocalChecked());
+  Nan::Set(exports, Nan::New("setDefaultRootsPem").ToLocalChecked(),
+           Nan::GetFunction(
+               Nan::New<FunctionTemplate>(SetDefaultRootsPem)
+                            ).ToLocalChecked());
 }
 
 NODE_MODULE(grpc_node, init)
diff --git a/src/node/index.js b/src/node/index.js
index d345a5142d..66664d94b5 100644
--- a/src/node/index.js
+++ b/src/node/index.js
@@ -34,13 +34,10 @@
 'use strict';
 
 var path = require('path');
+var fs = require('fs');
 
 var SSL_ROOTS_PATH = path.resolve(__dirname, '..', '..', 'etc', 'roots.pem');
 
-if (!process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH) {
-  process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH = SSL_ROOTS_PATH;
-}
-
 var _ = require('lodash');
 
 var ProtoBuf = require('protobufjs');
@@ -53,6 +50,8 @@ var Metadata = require('./src/metadata.js');
 
 var grpc = require('./src/grpc_extension');
 
+grpc.setDefaultRootsPem(fs.readFileSync(SSL_ROOTS_PATH, 'ascii'));
+
 /**
  * Load a gRPC object from an existing ProtoBuf.Reflect object.
  * @param {ProtoBuf.Reflect.Namespace} value The ProtoBuf object to load.
-- 
GitLab


From 1408920ab936104f539a020f7707a5aa6189231b Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 27 Apr 2016 17:55:27 -0700
Subject: [PATCH 233/525] get rid of local qpsworkers before starting the tests

---
 tools/run_tests/performance/kill_workers.sh   | 51 +++++++++++++++++++
 .../performance/remote_host_prepare.sh        |  7 ++-
 tools/run_tests/run_performance_tests.py      | 22 +++++---
 3 files changed, 70 insertions(+), 10 deletions(-)
 create mode 100755 tools/run_tests/performance/kill_workers.sh

diff --git a/tools/run_tests/performance/kill_workers.sh b/tools/run_tests/performance/kill_workers.sh
new file mode 100755
index 0000000000..3eae8c31cb
--- /dev/null
+++ b/tools/run_tests/performance/kill_workers.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+cd $(dirname $0)/../../..
+
+# Make sure there are no pre-existing QPS workers around before starting
+# the performance test suite
+
+# C++
+killall -9 qps_worker || true
+
+# C#
+ps -C mono -o pid=,cmd= | grep QpsWorker | awk '{print $1}' | xargs kill -9
+
+# Ruby
+ps -C ruby -o pid=,cmd= | grep 'qps/worker.rb' | awk '{print $1}' | xargs kill -9
+
+# Node
+ps -C node -o pid=,cmd= | grep 'performance/worker.js' | awk '{print $1}' | xargs kill -9
+
+# Java
+jps | grep LoadWorker | awk '{print $1}' | xargs kill -9
diff --git a/tools/run_tests/performance/remote_host_prepare.sh b/tools/run_tests/performance/remote_host_prepare.sh
index 17cfa1a599..d7f539a74e 100755
--- a/tools/run_tests/performance/remote_host_prepare.sh
+++ b/tools/run_tests/performance/remote_host_prepare.sh
@@ -41,10 +41,9 @@ ssh "${USER_AT_HOST}" "rm -rf ~/performance_workspace && mkdir -p ~/performance_
 # could also kill jenkins.
 ssh "${USER_AT_HOST}" "killall -9 qps_worker mono node ruby || true"
 
-# Kill all java LoadWorker processes. We can't just killall java
-# as one of the processes might be jenkins.
-ssh "${USER_AT_HOST}" 'kill -9 $(jps | grep LoadWorker | cut -f1 -d" ") || true'
-
 # push the current sources to the slave and unpack it.
 scp ../grpc.tar "${USER_AT_HOST}:~/performance_workspace"
 ssh "${USER_AT_HOST}" "tar -xf ~/performance_workspace/grpc.tar -C ~/performance_workspace"
+
+# For consistency with local run, invoke the kill_workers script remotely.
+ssh "${USER_AT_HOST}" "~/performance_workspace/grpc/tools/run_tests/performance/kill_workers.sh"
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index ada341abf5..fb3b0a1afd 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -157,8 +157,9 @@ def archive_repo(languages):
     sys.exit(1)
 
 
-def prepare_remote_hosts(hosts):
-  """Prepares remote hosts."""
+def prepare_remote_hosts(hosts, prepare_local=False):
+  """Prepares remote hosts (and maybe prepare localhost as well)."""
+  prepare_timeout = 5*60
   prepare_jobs = []
   for host in hosts:
     user_at_host = '%s@%s' % (_REMOTE_HOST_USERNAME, host)
@@ -167,13 +168,20 @@ def prepare_remote_hosts(hosts):
             cmdline=['tools/run_tests/performance/remote_host_prepare.sh'],
             shortname='remote_host_prepare.%s' % host,
             environ = {'USER_AT_HOST': user_at_host},
-            timeout_seconds=5*60))
-  jobset.message('START', 'Preparing remote hosts.', do_newline=True)
+            timeout_seconds=prepare_timeout))
+  if prepare_local:
+    # Prepare localhost as well
+    prepare_jobs.append(
+        jobset.JobSpec(
+            cmdline=['tools/run_tests/performance/kill_workers.sh'],
+            shortname='local_prepare',
+            timeout_seconds=prepare_timeout))
+  jobset.message('START', 'Preparing hosts.', do_newline=True)
   num_failures, _ = jobset.run(
       prepare_jobs, newline_on_success=True, maxjobs=10)
   if num_failures == 0:
     jobset.message('SUCCESS',
-                   'Remote hosts ready to start build.',
+                   'Prepare step completed successfully.',
                    do_newline=True)
   else:
     jobset.message('FAILED', 'Failed to prepare remote hosts.',
@@ -322,7 +330,9 @@ if args.remote_driver_host:
 
 if remote_hosts:
   archive_repo(languages=[str(l) for l in languages])
-  prepare_remote_hosts(remote_hosts)
+  prepare_remote_hosts(remote_hosts, prepare_local=True)
+else:
+  prepare_remote_hosts([], prepare_local=True)
 
 build_local = False
 if not args.remote_driver_host:
-- 
GitLab


From 832ae81b21025c415fc183b1aa18e063c44180a3 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Wed, 27 Apr 2016 18:38:54 -0700
Subject: [PATCH 234/525] Allow additive changes to protos w/o forcing user
 implementation

---
 src/compiler/python_generator.cc              | 10 ++---
 .../protoc_plugin/beta_python_plugin_test.py  | 41 +++++++++++++++++++
 2 files changed, 46 insertions(+), 5 deletions(-)

diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index 02c032800b..59137e1c92 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -190,7 +190,7 @@ bool PrintBetaServicer(const ServiceDescriptor* service,
         "Documentation", doc,
       });
   out->Print("\n");
-  out->Print(dict, "class Beta$Service$Servicer(six.with_metaclass(abc.ABCMeta, object)):\n");
+  out->Print(dict, "class Beta$Service$Servicer(object):\n");
   {
     IndentScope raii_class_indent(out);
     out->Print(dict, "\"\"\"$Documentation$\"\"\"\n");
@@ -198,12 +198,11 @@ bool PrintBetaServicer(const ServiceDescriptor* service,
       auto meth = service->method(i);
       grpc::string arg_name = meth->client_streaming() ?
           "request_iterator" : "request";
-      out->Print("@abc.abstractmethod\n");
       out->Print("def $Method$(self, $ArgName$, context):\n",
                  "Method", meth->name(), "ArgName", arg_name);
       {
         IndentScope raii_method_indent(out);
-        out->Print("raise NotImplementedError()\n");
+        out->Print("context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)\n");
       }
     }
   }
@@ -218,7 +217,7 @@ bool PrintBetaStub(const ServiceDescriptor* service,
         "Documentation", doc,
       });
   out->Print("\n");
-  out->Print(dict, "class Beta$Service$Stub(six.with_metaclass(abc.ABCMeta, object)):\n");
+  out->Print(dict, "class Beta$Service$Stub(object):\n");
   {
     IndentScope raii_class_indent(out);
     out->Print(dict, "\"\"\"$Documentation$\"\"\"\n");
@@ -227,7 +226,6 @@ bool PrintBetaStub(const ServiceDescriptor* service,
       grpc::string arg_name = meth->client_streaming() ?
           "request_iterator" : "request";
       auto methdict = ListToDict({"Method", meth->name(), "ArgName", arg_name});
-      out->Print("@abc.abstractmethod\n");
       out->Print(methdict, "def $Method$(self, $ArgName$, timeout):\n");
       {
         IndentScope raii_method_indent(out);
@@ -450,6 +448,8 @@ bool PrintPreamble(const FileDescriptor* file,
   out->Print("import six\n");
   out->Print("from $Package$ import implementations as beta_implementations\n",
              "Package", config.beta_package_root);
+  out->Print("from $Package$ import interfaces as beta_interfaces\n",
+             "Package", config.beta_package_root);
   out->Print("from grpc.framework.common import cardinality\n");
   out->Print("from grpc.framework.interfaces.face import utilities as face_utilities\n");
   return true;
diff --git a/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py b/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
index 6fba3d4271..3dc3042e38 100644
--- a/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
+++ b/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
@@ -45,6 +45,7 @@ import unittest
 from six import moves
 
 from grpc.beta import implementations
+from grpc.beta import interfaces
 from grpc.framework.foundation import future
 from grpc.framework.interfaces.face import face
 from tests.unit.framework.common import test_constants
@@ -178,6 +179,36 @@ def _CreateService(test_pb2):
   server.stop(0)
 
 
+@contextlib.contextmanager
+def _CreateIncompleteService(test_pb2):
+  """Provides a servicer backend that fails to implement methods and its stub.
+
+  The servicer is just the implementation of the actual servicer passed to the
+  face player of the python RPC implementation; the two are detached.
+
+  Args:
+    test_pb2: The test_pb2 module generated by this test.
+
+  Yields:
+    A (servicer_methods, stub) pair where servicer_methods is the back-end of
+      the service bound to the stub and and stub is the stub on which to invoke
+      RPCs.
+  """
+  servicer_methods = _ServicerMethods(test_pb2)
+
+  class Servicer(getattr(test_pb2, SERVICER_IDENTIFIER)):
+    pass
+
+  servicer = Servicer()
+  server = getattr(test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer)
+  port = server.add_insecure_port('[::]:0')
+  server.start()
+  channel = implementations.insecure_channel('localhost', port)
+  stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)(channel)
+  yield servicer_methods, stub
+  server.stop(0)
+
+
 def _streaming_input_request_iterator(test_pb2):
   for _ in range(3):
     request = test_pb2.StreamingInputCallRequest()
@@ -264,6 +295,16 @@ class PythonPluginTest(unittest.TestCase):
     with _CreateService(test_pb2) as (servicer, stub):
       request = test_pb2.SimpleRequest(response_size=13)
 
+  def testIncompleteServicer(self):
+    import protoc_plugin_test_pb2 as test_pb2
+    moves.reload_module(test_pb2)
+    with _CreateIncompleteService(test_pb2) as (servicer, stub):
+      request = test_pb2.SimpleRequest(response_size=13)
+      try:
+        response = stub.UnaryCall(request, test_constants.LONG_TIMEOUT)
+      except face.AbortionError as error:
+        self.assertEqual(interfaces.StatusCode.UNIMPLEMENTED, error.code)
+
   def testUnaryCall(self):
     import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
     moves.reload_module(test_pb2)
-- 
GitLab


From cab9470ee82ae411558f279c64d296e364237ab8 Mon Sep 17 00:00:00 2001
From: Nathaniel Manista <nathaniel@google.com>
Date: Thu, 28 Apr 2016 01:59:36 +0000
Subject: [PATCH 235/525] Remove Python alpha/early_adopter implementation

This code has been unsupported for more than six months.
---
 src/python/grpcio/grpc/_adapter/fore.py       | 363 ----------
 src/python/grpcio/grpc/_adapter/rear.py       | 395 -----------
 .../grpcio/grpc/early_adopter/__init__.py     |  35 -
 .../grpc/early_adopter/implementations.py     | 262 --------
 .../grpcio/grpc/framework/alpha/__init__.py   |  35 -
 .../grpc/framework/alpha/_face_utilities.py   | 183 -----
 .../grpcio/grpc/framework/alpha/_reexport.py  | 205 ------
 .../grpcio/grpc/framework/alpha/exceptions.py |  47 --
 .../grpcio/grpc/framework/alpha/interfaces.py | 384 -----------
 .../grpcio/grpc/framework/alpha/utilities.py  | 269 --------
 .../grpcio/grpc/framework/base/__init__.py    |  35 -
 .../grpc/framework/base/_cancellation.py      |  64 --
 .../grpcio/grpc/framework/base/_constants.py  |  32 -
 .../grpcio/grpc/framework/base/_context.py    |  99 ---
 .../grpcio/grpc/framework/base/_emission.py   | 125 ----
 .../grpcio/grpc/framework/base/_ends.py       | 399 -----------
 .../grpcio/grpc/framework/base/_expiration.py | 158 -----
 .../grpcio/grpc/framework/base/_ingestion.py  | 443 ------------
 .../grpcio/grpc/framework/base/_interfaces.py | 266 --------
 .../grpcio/grpc/framework/base/_reception.py  | 400 -----------
 .../grpc/framework/base/_termination.py       | 204 ------
 .../grpc/framework/base/_transmission.py      | 429 ------------
 .../grpcio/grpc/framework/base/exceptions.py  |  34 -
 .../grpc/framework/base/implementations.py    |  77 ---
 .../grpcio/grpc/framework/base/in_memory.py   | 108 ---
 .../grpcio/grpc/framework/base/interfaces.py  | 353 ----------
 src/python/grpcio/grpc/framework/base/null.py |  56 --
 src/python/grpcio/grpc/framework/base/util.py |  94 ---
 .../grpcio/grpc/framework/face/__init__.py    |  35 -
 .../grpcio/grpc/framework/face/_calls.py      | 422 ------------
 .../grpcio/grpc/framework/face/_control.py    | 201 ------
 .../grpcio/grpc/framework/face/_service.py    | 187 ------
 .../grpc/framework/face/demonstration.py      | 118 ----
 .../grpcio/grpc/framework/face/exceptions.py  |  78 ---
 .../grpc/framework/face/implementations.py    | 320 ---------
 .../grpcio/grpc/framework/face/interfaces.py  | 634 ------------------
 .../grpcio/grpc/framework/face/utilities.py   | 177 -----
 .../tests/unit/framework/face/__init__.py     |  30 -
 .../unit/framework/face/testing/__init__.py   |  30 -
 .../unit/framework/face/testing/base_util.py  | 102 ---
 ...ing_invocation_inline_service_test_case.py | 224 -------
 .../unit/framework/face/testing/callback.py   |  94 ---
 .../unit/framework/face/testing/control.py    |  87 ---
 .../unit/framework/face/testing/coverage.py   | 121 ----
 .../unit/framework/face/testing/digest.py     | 452 -------------
 ...ion_synchronous_event_service_test_case.py | 378 -----------
 ...on_asynchronous_event_service_test_case.py | 384 -----------
 .../unit/framework/face/testing/interfaces.py | 118 ----
 .../unit/framework/face/testing/service.py    | 321 ---------
 .../framework/face/testing/stock_service.py   | 374 -----------
 .../unit/framework/face/testing/test_case.py  |  81 ---
 51 files changed, 10522 deletions(-)
 delete mode 100644 src/python/grpcio/grpc/_adapter/fore.py
 delete mode 100644 src/python/grpcio/grpc/_adapter/rear.py
 delete mode 100644 src/python/grpcio/grpc/early_adopter/__init__.py
 delete mode 100644 src/python/grpcio/grpc/early_adopter/implementations.py
 delete mode 100644 src/python/grpcio/grpc/framework/alpha/__init__.py
 delete mode 100644 src/python/grpcio/grpc/framework/alpha/_face_utilities.py
 delete mode 100644 src/python/grpcio/grpc/framework/alpha/_reexport.py
 delete mode 100644 src/python/grpcio/grpc/framework/alpha/exceptions.py
 delete mode 100644 src/python/grpcio/grpc/framework/alpha/interfaces.py
 delete mode 100644 src/python/grpcio/grpc/framework/alpha/utilities.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/__init__.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_cancellation.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_constants.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_context.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_emission.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_ends.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_expiration.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_ingestion.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_interfaces.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_reception.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_termination.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/_transmission.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/exceptions.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/implementations.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/in_memory.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/interfaces.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/null.py
 delete mode 100644 src/python/grpcio/grpc/framework/base/util.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/__init__.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/_calls.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/_control.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/_service.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/demonstration.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/exceptions.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/implementations.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/interfaces.py
 delete mode 100644 src/python/grpcio/grpc/framework/face/utilities.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/__init__.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/__init__.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/base_util.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/callback.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/control.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/coverage.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/digest.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/interfaces.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/service.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/stock_service.py
 delete mode 100644 src/python/grpcio/tests/unit/framework/face/testing/test_case.py

diff --git a/src/python/grpcio/grpc/_adapter/fore.py b/src/python/grpcio/grpc/_adapter/fore.py
deleted file mode 100644
index acdd69c420..0000000000
--- a/src/python/grpcio/grpc/_adapter/fore.py
+++ /dev/null
@@ -1,363 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""The RPC-service-side bridge between RPC Framework and GRPC-on-the-wire."""
-
-import enum
-import logging
-import threading
-import time
-
-from grpc._adapter import _common
-from grpc._adapter import _intermediary_low as _low
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base import null
-from grpc.framework.foundation import activated
-from grpc.framework.foundation import logging_pool
-
-_THREAD_POOL_SIZE = 10
-
-
-@enum.unique
-class _LowWrite(enum.Enum):
-  """The possible categories of low-level write state."""
-
-  OPEN = 'OPEN'
-  ACTIVE = 'ACTIVE'
-  CLOSED = 'CLOSED'
-
-
-def _write(call, rpc_state, payload):
-  serialized_payload = rpc_state.serializer(payload)
-  if rpc_state.write.low is _LowWrite.OPEN:
-    call.write(serialized_payload, call, 0)
-    rpc_state.write.low = _LowWrite.ACTIVE
-  else:
-    rpc_state.write.pending.append(serialized_payload)
-
-
-def _status(call, rpc_state):
-  call.status(_low.Status(_low.Code.OK, ''), call)
-  rpc_state.write.low = _LowWrite.CLOSED
-
-
-class ForeLink(base_interfaces.ForeLink, activated.Activated):
-  """A service-side bridge between RPC Framework and the C-ish _low code."""
-
-  def __init__(
-      self, pool, request_deserializers, response_serializers,
-      root_certificates, key_chain_pairs, port=None):
-    """Constructor.
-
-    Args:
-      pool: A thread pool.
-      request_deserializers: A dict from RPC method names to request object
-        deserializer behaviors.
-      response_serializers: A dict from RPC method names to response object
-        serializer behaviors.
-      root_certificates: The PEM-encoded client root certificates as a
-        bytestring or None.
-      key_chain_pairs: A sequence of PEM-encoded private key-certificate chain
-        pairs.
-      port: The port on which to serve, or None to have a port selected
-        automatically.
-    """
-    self._condition = threading.Condition()
-    self._pool = pool
-    self._request_deserializers = request_deserializers
-    self._response_serializers = response_serializers
-    self._root_certificates = root_certificates
-    self._key_chain_pairs = key_chain_pairs
-    self._requested_port = port
-
-    self._rear_link = null.NULL_REAR_LINK
-    self._completion_queue = None
-    self._server = None
-    self._rpc_states = {}
-    self._spinning = False
-    self._port = None
-
-  def _on_stop_event(self):
-    self._spinning = False
-    self._condition.notify_all()
-
-  def _on_service_acceptance_event(self, event, server):
-    """Handle a service invocation event."""
-    service_acceptance = event.service_acceptance
-    if service_acceptance is None:
-      return
-
-    call = service_acceptance.call
-    call.accept(self._completion_queue, call)
-    # TODO(nathaniel): Metadata support.
-    call.premetadata()
-    call.read(call)
-    method = service_acceptance.method
-
-    self._rpc_states[call] = _common.CommonRPCState(
-        _common.WriteState(_LowWrite.OPEN, _common.HighWrite.OPEN, []), 1,
-        self._request_deserializers[method],
-        self._response_serializers[method])
-
-    ticket = base_interfaces.FrontToBackTicket(
-        call, 0, base_interfaces.FrontToBackTicket.Kind.COMMENCEMENT, method,
-        base_interfaces.ServicedSubscription.Kind.FULL, None, None,
-        service_acceptance.deadline - time.time())
-    self._rear_link.accept_front_to_back_ticket(ticket)
-
-    server.service(None)
-
-  def _on_read_event(self, event):
-    """Handle data arriving during an RPC."""
-    call = event.tag
-    rpc_state = self._rpc_states.get(call, None)
-    if rpc_state is None:
-      return
-
-    sequence_number = rpc_state.sequence_number
-    rpc_state.sequence_number += 1
-    if event.bytes is None:
-      ticket = base_interfaces.FrontToBackTicket(
-          call, sequence_number,
-          base_interfaces.FrontToBackTicket.Kind.COMPLETION, None, None, None,
-          None, None)
-    else:
-      call.read(call)
-      ticket = base_interfaces.FrontToBackTicket(
-          call, sequence_number,
-          base_interfaces.FrontToBackTicket.Kind.CONTINUATION, None, None,
-          None, rpc_state.deserializer(event.bytes), None)
-
-    self._rear_link.accept_front_to_back_ticket(ticket)
-
-  def _on_write_event(self, event):
-    call = event.tag
-    rpc_state = self._rpc_states.get(call, None)
-    if rpc_state is None:
-      return
-
-    if rpc_state.write.pending:
-      serialized_payload = rpc_state.write.pending.pop(0)
-      call.write(serialized_payload, call, 0)
-    elif rpc_state.write.high is _common.HighWrite.CLOSED:
-      _status(call, rpc_state)
-    else:
-      rpc_state.write.low = _LowWrite.OPEN
-
-  def _on_complete_event(self, event):
-    if not event.complete_accepted:
-      logging.error('Complete not accepted! %s', (event,))
-      call = event.tag
-      rpc_state = self._rpc_states.pop(call, None)
-      if rpc_state is None:
-        return
-
-      sequence_number = rpc_state.sequence_number
-      rpc_state.sequence_number += 1
-      ticket = base_interfaces.FrontToBackTicket(
-          call, sequence_number,
-          base_interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE, None,
-          None, None, None, None)
-      self._rear_link.accept_front_to_back_ticket(ticket)
-
-  def _on_finish_event(self, event):
-    """Handle termination of an RPC."""
-    call = event.tag
-    rpc_state = self._rpc_states.pop(call, None)
-    if rpc_state is None:
-      return
-
-    code = event.status.code
-    if code is _low.Code.OK:
-      return
-
-    sequence_number = rpc_state.sequence_number
-    rpc_state.sequence_number += 1
-    if code is _low.Code.CANCELLED:
-      ticket = base_interfaces.FrontToBackTicket(
-          call, sequence_number,
-          base_interfaces.FrontToBackTicket.Kind.CANCELLATION, None, None,
-          None, None, None)
-    elif code is _low.Code.DEADLINE_EXCEEDED:
-      ticket = base_interfaces.FrontToBackTicket(
-          call, sequence_number,
-          base_interfaces.FrontToBackTicket.Kind.EXPIRATION, None, None, None,
-          None, None)
-    else:
-      # TODO(nathaniel): Better mapping of codes to ticket-categories
-      ticket = base_interfaces.FrontToBackTicket(
-          call, sequence_number,
-          base_interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE, None,
-          None, None, None, None)
-    self._rear_link.accept_front_to_back_ticket(ticket)
-
-  def _spin(self, completion_queue, server):
-    while True:
-      event = completion_queue.get(None)
-
-      with self._condition:
-        if event.kind is _low.Event.Kind.STOP:
-          self._on_stop_event()
-          return
-        elif self._server is None:
-          continue
-        elif event.kind is _low.Event.Kind.SERVICE_ACCEPTED:
-          self._on_service_acceptance_event(event, server)
-        elif event.kind is _low.Event.Kind.READ_ACCEPTED:
-          self._on_read_event(event)
-        elif event.kind is _low.Event.Kind.WRITE_ACCEPTED:
-          self._on_write_event(event)
-        elif event.kind is _low.Event.Kind.COMPLETE_ACCEPTED:
-          self._on_complete_event(event)
-        elif event.kind is _low.Event.Kind.FINISH:
-          self._on_finish_event(event)
-        else:
-          logging.error('Illegal event! %s', (event,))
-
-  def _continue(self, call, payload):
-    rpc_state = self._rpc_states.get(call, None)
-    if rpc_state is None:
-      return
-
-    _write(call, rpc_state, payload)
-
-  def _complete(self, call, payload):
-    """Handle completion of the writes of an RPC."""
-    rpc_state = self._rpc_states.get(call, None)
-    if rpc_state is None:
-      return
-
-    if rpc_state.write.low is _LowWrite.OPEN:
-      if payload is None:
-        _status(call, rpc_state)
-      else:
-        _write(call, rpc_state, payload)
-    elif rpc_state.write.low is _LowWrite.ACTIVE:
-      if payload is not None:
-        rpc_state.write.pending.append(rpc_state.serializer(payload))
-    else:
-      raise ValueError('Called to complete after having already completed!')
-    rpc_state.write.high = _common.HighWrite.CLOSED
-
-  def _cancel(self, call):
-    call.cancel()
-    self._rpc_states.pop(call, None)
-
-  def join_rear_link(self, rear_link):
-    """See base_interfaces.ForeLink.join_rear_link for specification."""
-    self._rear_link = null.NULL_REAR_LINK if rear_link is None else rear_link
-
-  def _start(self):
-    """Starts this ForeLink.
-
-    This method must be called before attempting to exchange tickets with this
-    object.
-    """
-    with self._condition:
-      address = '[::]:%d' % (
-          0 if self._requested_port is None else self._requested_port)
-      self._completion_queue = _low.CompletionQueue()
-      if self._root_certificates is None and not self._key_chain_pairs:
-        self._server = _low.Server(self._completion_queue)
-        self._port = self._server.add_http2_addr(address)
-      else:
-        server_credentials = _low.ServerCredentials(
-          self._root_certificates, self._key_chain_pairs, False)
-        self._server = _low.Server(self._completion_queue)
-        self._port = self._server.add_secure_http2_addr(
-            address, server_credentials)
-      self._server.start()
-
-      self._server.service(None)
-
-      self._pool.submit(self._spin, self._completion_queue, self._server)
-      self._spinning = True
-
-      return self
-
-  # TODO(nathaniel): Expose graceful-shutdown semantics in which this object
-  # enters a state in which it finishes ongoing RPCs but refuses new ones.
-  def _stop(self):
-    """Stops this ForeLink.
-
-    This method must be called for proper termination of this object, and no
-    attempts to exchange tickets with this object may be made after this method
-    has been called.
-    """
-    with self._condition:
-      self._server.stop()
-      # TODO(nathaniel): Yep, this is weird. Deleting a server shouldn't have a
-      # behaviorally significant side-effect.
-      self._server = None
-      self._completion_queue.stop()
-
-      while self._spinning:
-        self._condition.wait()
-
-      self._port = None
-
-  def __enter__(self):
-    """See activated.Activated.__enter__ for specification."""
-    return self._start()
-
-  def __exit__(self, exc_type, exc_val, exc_tb):
-    """See activated.Activated.__exit__ for specification."""
-    self._stop()
-    return False
-
-  def start(self):
-    """See activated.Activated.start for specification."""
-    return self._start()
-
-  def stop(self):
-    """See activated.Activated.stop for specification."""
-    self._stop()
-
-  def port(self):
-    """Identifies the port on which this ForeLink is servicing RPCs.
-
-    Returns:
-      The number of the port on which this ForeLink is servicing RPCs, or None
-        if this ForeLink is not currently activated and servicing RPCs.
-    """
-    with self._condition:
-      return self._port
-
-  def accept_back_to_front_ticket(self, ticket):
-    """See base_interfaces.ForeLink.accept_back_to_front_ticket for spec."""
-    with self._condition:
-      if self._server is None:
-        return
-
-      if ticket.kind is base_interfaces.BackToFrontTicket.Kind.CONTINUATION:
-        self._continue(ticket.operation_id, ticket.payload)
-      elif ticket.kind is base_interfaces.BackToFrontTicket.Kind.COMPLETION:
-        self._complete(ticket.operation_id, ticket.payload)
-      else:
-        self._cancel(ticket.operation_id)
diff --git a/src/python/grpcio/grpc/_adapter/rear.py b/src/python/grpcio/grpc/_adapter/rear.py
deleted file mode 100644
index 17fa47f746..0000000000
--- a/src/python/grpcio/grpc/_adapter/rear.py
+++ /dev/null
@@ -1,395 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""The RPC-invocation-side bridge between RPC Framework and GRPC-on-the-wire."""
-
-import enum
-import logging
-import threading
-import time
-
-from grpc._adapter import _common
-from grpc._adapter import _intermediary_low as _low
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base import null
-from grpc.framework.foundation import activated
-from grpc.framework.foundation import logging_pool
-
-_THREAD_POOL_SIZE = 10
-
-_INVOCATION_EVENT_KINDS = (
-    _low.Event.Kind.METADATA_ACCEPTED,
-    _low.Event.Kind.FINISH
-)
-
-
-@enum.unique
-class _LowWrite(enum.Enum):
-  """The possible categories of low-level write state."""
-
-  OPEN = 'OPEN'
-  ACTIVE = 'ACTIVE'
-  CLOSED = 'CLOSED'
-
-
-class _RPCState(object):
-  """The full state of any tracked RPC.
-
-  Attributes:
-    call: The _low.Call object for the RPC.
-    outstanding: The set of Event.Kind values describing expected future events
-      for the RPC.
-    active: A boolean indicating whether or not the RPC is active.
-    common: An _common.RPCState describing additional state for the RPC.
-  """
-
-  def __init__(self, call, outstanding, active, common):
-    self.call = call
-    self.outstanding = outstanding
-    self.active = active
-    self.common = common
-
-
-def _write(operation_id, call, outstanding, write_state, serialized_payload):
-  if write_state.low is _LowWrite.OPEN:
-    call.write(serialized_payload, operation_id, 0)
-    outstanding.add(_low.Event.Kind.WRITE_ACCEPTED)
-    write_state.low = _LowWrite.ACTIVE
-  elif write_state.low is _LowWrite.ACTIVE:
-    write_state.pending.append(serialized_payload)
-  else:
-    raise ValueError('Write attempted after writes completed!')
-
-
-class RearLink(base_interfaces.RearLink, activated.Activated):
-  """An invocation-side bridge between RPC Framework and the C-ish _low code."""
-
-  def __init__(
-      self, host, port, pool, request_serializers, response_deserializers,
-      secure, root_certificates, private_key, certificate_chain,
-      metadata_transformer=None, server_host_override=None):
-    """Constructor.
-
-    Args:
-      host: The host to which to connect for RPC service.
-      port: The port to which to connect for RPC service.
-      pool: A thread pool.
-      request_serializers: A dict from RPC method names to request object
-        serializer behaviors.
-      response_deserializers: A dict from RPC method names to response object
-        deserializer behaviors.
-      secure: A boolean indicating whether or not to use a secure connection.
-      root_certificates: The PEM-encoded root certificates or None to ask for
-        them to be retrieved from a default location.
-      private_key: The PEM-encoded private key to use or None if no private
-        key should be used.
-      certificate_chain: The PEM-encoded certificate chain to use or None if
-        no certificate chain should be used.
-      metadata_transformer: A function that given a metadata object produces
-        another metadata to be used in the underlying communication on the
-        wire.
-      server_host_override: (For testing only) the target name used for SSL
-        host name checking.
-    """
-    self._condition = threading.Condition()
-    self._host = host
-    self._port = port
-    self._pool = pool
-    self._request_serializers = request_serializers
-    self._response_deserializers = response_deserializers
-
-    self._fore_link = null.NULL_FORE_LINK
-    self._completion_queue = None
-    self._channel = None
-    self._rpc_states = {}
-    self._spinning = False
-    if secure:
-      self._client_credentials = _low.ClientCredentials(
-          root_certificates, private_key, certificate_chain)
-    else:
-      self._client_credentials = None
-    self._root_certificates = root_certificates
-    self._private_key = private_key
-    self._certificate_chain = certificate_chain
-    self._metadata_transformer = metadata_transformer
-    self._server_host_override = server_host_override
-
-  def _on_write_event(self, operation_id, event, rpc_state):
-    if event.write_accepted:
-      if rpc_state.common.write.pending:
-        rpc_state.call.write(
-            rpc_state.common.write.pending.pop(0), operation_id, 0)
-        rpc_state.outstanding.add(_low.Event.Kind.WRITE_ACCEPTED)
-      elif rpc_state.common.write.high is _common.HighWrite.CLOSED:
-        rpc_state.call.complete(operation_id)
-        rpc_state.outstanding.add(_low.Event.Kind.COMPLETE_ACCEPTED)
-        rpc_state.common.write.low = _LowWrite.CLOSED
-      else:
-        rpc_state.common.write.low = _LowWrite.OPEN
-    else:
-      logging.error('RPC write not accepted! Event: %s', (event,))
-      rpc_state.active = False
-      ticket = base_interfaces.BackToFrontTicket(
-          operation_id, rpc_state.common.sequence_number,
-          base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
-      rpc_state.common.sequence_number += 1
-      self._fore_link.accept_back_to_front_ticket(ticket)
-
-  def _on_read_event(self, operation_id, event, rpc_state):
-    if event.bytes is not None:
-      rpc_state.call.read(operation_id)
-      rpc_state.outstanding.add(_low.Event.Kind.READ_ACCEPTED)
-
-      ticket = base_interfaces.BackToFrontTicket(
-          operation_id, rpc_state.common.sequence_number,
-          base_interfaces.BackToFrontTicket.Kind.CONTINUATION,
-          rpc_state.common.deserializer(event.bytes))
-      rpc_state.common.sequence_number += 1
-      self._fore_link.accept_back_to_front_ticket(ticket)
-
-  def _on_complete_event(self, operation_id, event, rpc_state):
-    if not event.complete_accepted:
-      logging.error('RPC complete not accepted! Event: %s', (event,))
-      rpc_state.active = False
-      ticket = base_interfaces.BackToFrontTicket(
-          operation_id, rpc_state.common.sequence_number,
-          base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE, None)
-      rpc_state.common.sequence_number += 1
-      self._fore_link.accept_back_to_front_ticket(ticket)
-
-  # TODO(nathaniel): Metadata support.
-  def _on_metadata_event(self, operation_id, event, rpc_state):  # pylint: disable=unused-argument
-    rpc_state.call.read(operation_id)
-    rpc_state.outstanding.add(_low.Event.Kind.READ_ACCEPTED)
-
-  def _on_finish_event(self, operation_id, event, rpc_state):
-    """Handle termination of an RPC."""
-    # TODO(nathaniel): Cover all statuses.
-    if event.status.code is _low.Code.OK:
-      kind = base_interfaces.BackToFrontTicket.Kind.COMPLETION
-    elif event.status.code is _low.Code.CANCELLED:
-      kind = base_interfaces.BackToFrontTicket.Kind.CANCELLATION
-    elif event.status.code is _low.Code.DEADLINE_EXCEEDED:
-      kind = base_interfaces.BackToFrontTicket.Kind.EXPIRATION
-    else:
-      kind = base_interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE
-    ticket = base_interfaces.BackToFrontTicket(
-        operation_id, rpc_state.common.sequence_number, kind, None)
-    rpc_state.common.sequence_number += 1
-    self._fore_link.accept_back_to_front_ticket(ticket)
-
-  def _spin(self, completion_queue):
-    while True:
-      event = completion_queue.get(None)
-      operation_id = event.tag
-
-      with self._condition:
-        rpc_state = self._rpc_states[operation_id]
-        rpc_state.outstanding.remove(event.kind)
-        if rpc_state.active and self._completion_queue is not None:
-          if event.kind is _low.Event.Kind.WRITE_ACCEPTED:
-            self._on_write_event(operation_id, event, rpc_state)
-          elif event.kind is _low.Event.Kind.METADATA_ACCEPTED:
-            self._on_metadata_event(operation_id, event, rpc_state)
-          elif event.kind is _low.Event.Kind.READ_ACCEPTED:
-            self._on_read_event(operation_id, event, rpc_state)
-          elif event.kind is _low.Event.Kind.COMPLETE_ACCEPTED:
-            self._on_complete_event(operation_id, event, rpc_state)
-          elif event.kind is _low.Event.Kind.FINISH:
-            self._on_finish_event(operation_id, event, rpc_state)
-          else:
-            logging.error('Illegal RPC event! %s', (event,))
-
-        if not rpc_state.outstanding:
-          self._rpc_states.pop(operation_id)
-        if not self._rpc_states:
-          self._spinning = False
-          self._condition.notify_all()
-          return
-
-  def _invoke(self, operation_id, name, high_state, payload, timeout):
-    """Invoke an RPC.
-
-    Args:
-      operation_id: Any object to be used as an operation ID for the RPC.
-      name: The RPC method name.
-      high_state: A _common.HighWrite value representing the "high write state"
-        of the RPC.
-      payload: A payload object for the RPC or None if no payload was given at
-        invocation-time.
-      timeout: A duration of time in seconds to allow for the RPC.
-    """
-    request_serializer = self._request_serializers[name]
-    call = _low.Call(self._channel, self._completion_queue, name, self._host, time.time() + timeout)
-    if self._metadata_transformer is not None:
-      metadata = self._metadata_transformer([])
-      for metadata_key, metadata_value in metadata:
-        call.add_metadata(metadata_key, metadata_value)
-    call.invoke(self._completion_queue, operation_id, operation_id)
-    outstanding = set(_INVOCATION_EVENT_KINDS)
-
-    if payload is None:
-      if high_state is _common.HighWrite.CLOSED:
-        call.complete(operation_id)
-        low_state = _LowWrite.CLOSED
-        outstanding.add(_low.Event.Kind.COMPLETE_ACCEPTED)
-      else:
-        low_state = _LowWrite.OPEN
-    else:
-      serialized_payload = request_serializer(payload)
-      call.write(serialized_payload, operation_id, 0)
-      outstanding.add(_low.Event.Kind.WRITE_ACCEPTED)
-      low_state = _LowWrite.ACTIVE
-
-    write_state = _common.WriteState(low_state, high_state, [])
-    common_state = _common.CommonRPCState(
-        write_state, 0, self._response_deserializers[name], request_serializer)
-    self._rpc_states[operation_id] = _RPCState(
-        call, outstanding, True, common_state)
-
-    if not self._spinning:
-      self._pool.submit(self._spin, self._completion_queue)
-      self._spinning = True
-
-  def _commence(self, operation_id, name, payload, timeout):
-    self._invoke(operation_id, name, _common.HighWrite.OPEN, payload, timeout)
-
-  def _continue(self, operation_id, payload):
-    rpc_state = self._rpc_states.get(operation_id, None)
-    if rpc_state is None or not rpc_state.active:
-      return
-
-    _write(
-        operation_id, rpc_state.call, rpc_state.outstanding,
-        rpc_state.common.write, rpc_state.common.serializer(payload))
-
-  def _complete(self, operation_id, payload):
-    """Close writes associated with an ongoing RPC.
-
-    Args:
-      operation_id: Any object being use as an operation ID for the RPC.
-      payload: A payload object for the RPC (and thus the last payload object
-        for the RPC) or None if no payload was given along with the instruction
-        to indicate the end of writes for the RPC.
-    """
-    rpc_state = self._rpc_states.get(operation_id, None)
-    if rpc_state is None or not rpc_state.active:
-      return
-
-    write_state = rpc_state.common.write
-    if payload is None:
-      if write_state.low is _LowWrite.OPEN:
-        rpc_state.call.complete(operation_id)
-        rpc_state.outstanding.add(_low.Event.Kind.COMPLETE_ACCEPTED)
-        write_state.low = _LowWrite.CLOSED
-    else:
-      _write(
-          operation_id, rpc_state.call, rpc_state.outstanding, write_state,
-          rpc_state.common.serializer(payload))
-    write_state.high = _common.HighWrite.CLOSED
-
-  def _entire(self, operation_id, name, payload, timeout):
-    self._invoke(operation_id, name, _common.HighWrite.CLOSED, payload, timeout)
-
-  def _cancel(self, operation_id):
-    rpc_state = self._rpc_states.get(operation_id, None)
-    if rpc_state is not None and rpc_state.active:
-      rpc_state.call.cancel()
-      rpc_state.active = False
-
-  def join_fore_link(self, fore_link):
-    """See base_interfaces.RearLink.join_fore_link for specification."""
-    with self._condition:
-      self._fore_link = null.NULL_FORE_LINK if fore_link is None else fore_link
-
-  def _start(self):
-    """Starts this RearLink.
-
-    This method must be called before attempting to exchange tickets with this
-    object.
-    """
-    with self._condition:
-      self._completion_queue = _low.CompletionQueue()
-      self._channel = _low.Channel(
-          '%s:%d' % (self._host, self._port), self._client_credentials,
-          server_host_override=self._server_host_override)
-    return self
-
-  def _stop(self):
-    """Stops this RearLink.
-
-    This method must be called for proper termination of this object, and no
-    attempts to exchange tickets with this object may be made after this method
-    has been called.
-    """
-    with self._condition:
-      self._completion_queue.stop()
-      self._completion_queue = None
-
-      while self._spinning:
-        self._condition.wait()
-
-  def __enter__(self):
-    """See activated.Activated.__enter__ for specification."""
-    return self._start()
-
-  def __exit__(self, exc_type, exc_val, exc_tb):
-    """See activated.Activated.__exit__ for specification."""
-    self._stop()
-    return False
-
-  def start(self):
-    """See activated.Activated.start for specification."""
-    return self._start()
-
-  def stop(self):
-    """See activated.Activated.stop for specification."""
-    self._stop()
-
-  def accept_front_to_back_ticket(self, ticket):
-    """See base_interfaces.RearLink.accept_front_to_back_ticket for spec."""
-    with self._condition:
-      if self._completion_queue is None:
-        return
-
-      if ticket.kind is base_interfaces.FrontToBackTicket.Kind.COMMENCEMENT:
-        self._commence(
-            ticket.operation_id, ticket.name, ticket.payload, ticket.timeout)
-      elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.CONTINUATION:
-        self._continue(ticket.operation_id, ticket.payload)
-      elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.COMPLETION:
-        self._complete(ticket.operation_id, ticket.payload)
-      elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.ENTIRE:
-        self._entire(
-            ticket.operation_id, ticket.name, ticket.payload, ticket.timeout)
-      elif ticket.kind is base_interfaces.FrontToBackTicket.Kind.CANCELLATION:
-        self._cancel(ticket.operation_id)
-      else:
-        # NOTE(nathaniel): All other categories are treated as cancellation.
-        self._cancel(ticket.operation_id)
diff --git a/src/python/grpcio/grpc/early_adopter/__init__.py b/src/python/grpcio/grpc/early_adopter/__init__.py
deleted file mode 100644
index bff74be2c7..0000000000
--- a/src/python/grpcio/grpc/early_adopter/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import warnings
-
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
-              'unmaintained, and no longer tested. Please migrate to the beta '
-              'API.', DeprecationWarning, stacklevel=2)
diff --git a/src/python/grpcio/grpc/early_adopter/implementations.py b/src/python/grpcio/grpc/early_adopter/implementations.py
deleted file mode 100644
index 9c396aa7ad..0000000000
--- a/src/python/grpcio/grpc/early_adopter/implementations.py
+++ /dev/null
@@ -1,262 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Entry points into GRPC."""
-
-import threading
-
-from grpc._adapter import fore as _fore
-from grpc._adapter import rear as _rear
-from grpc.framework.alpha import _face_utilities
-from grpc.framework.alpha import _reexport
-from grpc.framework.alpha import interfaces
-from grpc.framework.base import implementations as _base_implementations
-from grpc.framework.base import util as _base_utilities
-from grpc.framework.face import implementations as _face_implementations
-from grpc.framework.foundation import logging_pool
-
-_DEFAULT_THREAD_POOL_SIZE = 8
-_ONE_DAY_IN_SECONDS = 24 * 60 * 60
-
-
-class _Server(interfaces.Server):
-
-  def __init__(
-        self, breakdown, port, private_key, certificate_chain,
-        thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
-    self._lock = threading.Lock()
-    self._breakdown = breakdown
-    self._port = port
-    if private_key is None or certificate_chain is None:
-      self._key_chain_pairs = ()
-    else:
-      self._key_chain_pairs = ((private_key, certificate_chain),)
-
-    self._pool_size = thread_pool_size
-    self._pool = None
-    self._back = None
-    self._fore_link = None
-
-  def _start(self):
-    with self._lock:
-      if self._pool is None:
-        self._pool = logging_pool.pool(self._pool_size)
-        servicer = _face_implementations.servicer(
-            self._pool, self._breakdown.implementations, None)
-        self._back = _base_implementations.back_link(
-            servicer, self._pool, self._pool, self._pool, _ONE_DAY_IN_SECONDS,
-            _ONE_DAY_IN_SECONDS)
-        self._fore_link = _fore.ForeLink(
-            self._pool, self._breakdown.request_deserializers,
-            self._breakdown.response_serializers, None, self._key_chain_pairs,
-            port=self._port)
-        self._back.join_fore_link(self._fore_link)
-        self._fore_link.join_rear_link(self._back)
-        self._fore_link.start()
-      else:
-        raise ValueError('Server currently running!')
-
-  def _stop(self):
-    with self._lock:
-      if self._pool is None:
-        raise ValueError('Server not running!')
-      else:
-        self._fore_link.stop()
-        _base_utilities.wait_for_idle(self._back)
-        self._pool.shutdown(wait=True)
-        self._fore_link = None
-        self._back = None
-        self._pool = None
-
-  def __enter__(self):
-    self._start()
-    return self
-
-  def __exit__(self, exc_type, exc_val, exc_tb):
-    self._stop()
-    return False
-
-  def start(self):
-    self._start()
-
-  def stop(self):
-    self._stop()
-
-  def port(self):
-    with self._lock:
-      return self._fore_link.port()
-
-
-class _Stub(interfaces.Stub):
-
-  def __init__(
-      self, breakdown, host, port, secure, root_certificates, private_key,
-      certificate_chain, metadata_transformer=None, server_host_override=None,
-      thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
-    self._lock = threading.Lock()
-    self._breakdown = breakdown
-    self._host = host
-    self._port = port
-    self._secure = secure
-    self._root_certificates = root_certificates
-    self._private_key = private_key
-    self._certificate_chain = certificate_chain
-    self._metadata_transformer = metadata_transformer
-    self._server_host_override = server_host_override
-
-    self._pool_size = thread_pool_size
-    self._pool = None
-    self._front = None
-    self._rear_link = None
-    self._understub = None
-
-  def __enter__(self):
-    with self._lock:
-      if self._pool is None:
-        self._pool = logging_pool.pool(self._pool_size)
-        self._front = _base_implementations.front_link(
-            self._pool, self._pool, self._pool)
-        self._rear_link = _rear.RearLink(
-            self._host, self._port, self._pool,
-            self._breakdown.request_serializers,
-            self._breakdown.response_deserializers, self._secure,
-            self._root_certificates, self._private_key, self._certificate_chain,
-            metadata_transformer=self._metadata_transformer,
-            server_host_override=self._server_host_override)
-        self._front.join_rear_link(self._rear_link)
-        self._rear_link.join_fore_link(self._front)
-        self._rear_link.start()
-        self._understub = _face_implementations.dynamic_stub(
-            self._breakdown.face_cardinalities, self._front, self._pool, '')
-      else:
-        raise ValueError('Tried to __enter__ already-__enter__ed Stub!')
-    return self
-
-  def __exit__(self, exc_type, exc_val, exc_tb):
-    with self._lock:
-      if self._pool is None:
-        raise ValueError('Tried to __exit__ non-__enter__ed Stub!')
-      else:
-        self._rear_link.stop()
-        _base_utilities.wait_for_idle(self._front)
-        self._pool.shutdown(wait=True)
-        self._rear_link = None
-        self._front = None
-        self._pool = None
-        self._understub = None
-    return False
-
-  def __getattr__(self, attr):
-    with self._lock:
-      if self._pool is None:
-        raise ValueError('Tried to __getattr__ non-__enter__ed Stub!')
-      else:
-        method_cardinality = self._breakdown.cardinalities.get(attr)
-        underlying_attr = getattr(
-            self._understub, self._breakdown.qualified_names.get(attr), None)
-        if method_cardinality is interfaces.Cardinality.UNARY_UNARY:
-          return _reexport.unary_unary_sync_async(underlying_attr)
-        elif method_cardinality is interfaces.Cardinality.UNARY_STREAM:
-          return lambda request, timeout: _reexport.cancellable_iterator(
-              underlying_attr(request, timeout))
-        elif method_cardinality is interfaces.Cardinality.STREAM_UNARY:
-          return _reexport.stream_unary_sync_async(underlying_attr)
-        elif method_cardinality is interfaces.Cardinality.STREAM_STREAM:
-          return lambda request_iterator, timeout: (
-              _reexport.cancellable_iterator(underlying_attr(
-                  request_iterator, timeout)))
-        else:
-          raise AttributeError(attr)
-
-
-def stub(
-    service_name, methods, host, port, metadata_transformer=None, secure=False,
-    root_certificates=None, private_key=None, certificate_chain=None,
-    server_host_override=None, thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
-  """Constructs an interfaces.Stub.
-
-  Args:
-    service_name: The package-qualified full name of the service.
-    methods: A dictionary from RPC method name to
-      interfaces.RpcMethodInvocationDescription describing the RPCs to be
-      supported by the created stub. The RPC method names in the dictionary are
-      not qualified by the service name or decorated in any other way.
-    host: The host to which to connect for RPC service.
-    port: The port to which to connect for RPC service.
-    metadata_transformer: A callable that given a metadata object produces
-      another metadata object to be used in the underlying communication on the
-      wire.
-    secure: Whether or not to construct the stub with a secure connection.
-    root_certificates: The PEM-encoded root certificates or None to ask for
-      them to be retrieved from a default location.
-    private_key: The PEM-encoded private key to use or None if no private key
-      should be used.
-    certificate_chain: The PEM-encoded certificate chain to use or None if no
-      certificate chain should be used.
-    server_host_override: (For testing only) the target name used for SSL
-      host name checking.
-    thread_pool_size: The maximum number of threads to allow in the backing
-      thread pool.
-
-  Returns:
-    An interfaces.Stub affording RPC invocation.
-  """
-  breakdown = _face_utilities.break_down_invocation(service_name, methods)
-  return _Stub(
-      breakdown, host, port, secure, root_certificates, private_key,
-      certificate_chain, server_host_override=server_host_override,
-      metadata_transformer=metadata_transformer,
-      thread_pool_size=thread_pool_size)
-
-
-def server(
-    service_name, methods, port, private_key=None, certificate_chain=None,
-    thread_pool_size=_DEFAULT_THREAD_POOL_SIZE):
-  """Constructs an interfaces.Server.
-
-  Args:
-    service_name: The package-qualified full name of the service.
-    methods: A dictionary from RPC method name to
-      interfaces.RpcMethodServiceDescription describing the RPCs to
-      be serviced by the created server. The RPC method names in the dictionary
-      are not qualified by the service name or decorated in any other way.
-    port: The port on which to serve or zero to ask for a port to be
-      automatically selected.
-    private_key: A pem-encoded private key, or None for an insecure server.
-    certificate_chain: A pem-encoded certificate chain, or None for an insecure
-      server.
-    thread_pool_size: The maximum number of threads to allow in the backing
-      thread pool.
-
-  Returns:
-    An interfaces.Server that will serve secure traffic.
-  """
-  breakdown = _face_utilities.break_down_service(service_name, methods)
-  return _Server(breakdown, port, private_key, certificate_chain,
-      thread_pool_size=thread_pool_size)
diff --git a/src/python/grpcio/grpc/framework/alpha/__init__.py b/src/python/grpcio/grpc/framework/alpha/__init__.py
deleted file mode 100644
index bff74be2c7..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import warnings
-
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
-              'unmaintained, and no longer tested. Please migrate to the beta '
-              'API.', DeprecationWarning, stacklevel=2)
diff --git a/src/python/grpcio/grpc/framework/alpha/_face_utilities.py b/src/python/grpcio/grpc/framework/alpha/_face_utilities.py
deleted file mode 100644
index 15c47d5c92..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/_face_utilities.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import abc
-import collections
-
-import six
-
-# face_interfaces is referenced from specification in this module.
-from grpc.framework.common import cardinality
-from grpc.framework.face import interfaces as face_interfaces  # pylint: disable=unused-import
-from grpc.framework.face import utilities as face_utilities
-from grpc.framework.alpha import _reexport
-from grpc.framework.alpha import interfaces
-
-
-def _qualified_name(service_name, method_name):
-  return '/%s/%s' % (service_name, method_name)
-
-
-# TODO(nathaniel): This structure is getting bloated; it could be shrunk if
-# implementations._Stub used a generic rather than a dynamic underlying
-# face-layer stub.
-class InvocationBreakdown(six.with_metaclass(abc.ABCMeta)):
-  """An intermediate representation of invocation-side views of RPC methods.
-
-  Attributes:
-    cardinalities: A dictionary from RPC method name to interfaces.Cardinality
-      value.
-    qualified_names: A dictionary from unqualified RPC method name to
-      service-qualified RPC method name.
-    face_cardinalities: A dictionary from service-qualified RPC method name to
-      to cardinality.Cardinality value.
-    request_serializers: A dictionary from service-qualified RPC method name to
-      callable behavior to be used serializing request values for the RPC.
-    response_deserializers: A dictionary from service-qualified RPC method name
-      to callable behavior to be used deserializing response values for the
-      RPC.
-  """
-
-
-class _EasyInvocationBreakdown(
-    InvocationBreakdown,
-    collections.namedtuple(
-        '_EasyInvocationBreakdown',
-        ('cardinalities', 'qualified_names', 'face_cardinalities',
-         'request_serializers', 'response_deserializers'))):
-  pass
-
-
-class ServiceBreakdown(six.with_metaclass(abc.ABCMeta)):
-  """An intermediate representation of service-side views of RPC methods.
-
-  Attributes:
-    implementations: A dictionary from service-qualified RPC method name to
-      face_interfaces.MethodImplementation implementing the RPC method.
-    request_deserializers: A dictionary from service-qualified RPC method name
-      to callable behavior to be used deserializing request values for the RPC.
-    response_serializers: A dictionary from service-qualified RPC method name
-      to callable behavior to be used serializing response values for the RPC.
-  """
-
-
-class _EasyServiceBreakdown(
-    ServiceBreakdown,
-    collections.namedtuple(
-        '_EasyServiceBreakdown',
-        ('implementations', 'request_deserializers', 'response_serializers'))):
-  pass
-
-
-def break_down_invocation(service_name, method_descriptions):
-  """Derives an InvocationBreakdown from several RPC method descriptions.
-
-  Args:
-    service_name: The package-qualified full name of the service.
-    method_descriptions: A dictionary from RPC method name to
-      interfaces.RpcMethodInvocationDescription describing the RPCs.
-
-  Returns:
-    An InvocationBreakdown corresponding to the given method descriptions.
-  """
-  cardinalities = {}
-  qualified_names = {}
-  face_cardinalities = {}
-  request_serializers = {}
-  response_deserializers = {}
-  for name, method_description in six.iteritems(method_descriptions):
-    qualified_name = _qualified_name(service_name, name)
-    method_cardinality = method_description.cardinality()
-    cardinalities[name] = method_description.cardinality()
-    qualified_names[name] = qualified_name
-    face_cardinalities[qualified_name] = _reexport.common_cardinality(
-        method_cardinality)
-    request_serializers[qualified_name] = method_description.serialize_request
-    response_deserializers[qualified_name] = (
-        method_description.deserialize_response)
-  return _EasyInvocationBreakdown(
-      cardinalities, qualified_names, face_cardinalities, request_serializers,
-      response_deserializers)
-
-
-def break_down_service(service_name, method_descriptions):
-  """Derives a ServiceBreakdown from several RPC method descriptions.
-
-  Args:
-    method_descriptions: A dictionary from RPC method name to
-      interfaces.RpcMethodServiceDescription describing the RPCs.
-
-  Returns:
-    A ServiceBreakdown corresponding to the given method descriptions.
-  """
-  implementations = {}
-  request_deserializers = {}
-  response_serializers = {}
-  for name, method_description in six.iteritems(method_descriptions):
-    qualified_name = _qualified_name(service_name, name)
-    method_cardinality = method_description.cardinality()
-    if method_cardinality is interfaces.Cardinality.UNARY_UNARY:
-      def service(
-          request, face_rpc_context,
-          service_behavior=method_description.service_unary_unary):
-        return service_behavior(
-            request, _reexport.rpc_context(face_rpc_context))
-      implementations[qualified_name] = face_utilities.unary_unary_inline(
-          service)
-    elif method_cardinality is interfaces.Cardinality.UNARY_STREAM:
-      def service(
-          request, face_rpc_context,
-          service_behavior=method_description.service_unary_stream):
-        return service_behavior(
-            request, _reexport.rpc_context(face_rpc_context))
-      implementations[qualified_name] = face_utilities.unary_stream_inline(
-          service)
-    elif method_cardinality is interfaces.Cardinality.STREAM_UNARY:
-      def service(
-          request_iterator, face_rpc_context,
-          service_behavior=method_description.service_stream_unary):
-        return service_behavior(
-            request_iterator, _reexport.rpc_context(face_rpc_context))
-      implementations[qualified_name] = face_utilities.stream_unary_inline(
-          service)
-    elif method_cardinality is interfaces.Cardinality.STREAM_STREAM:
-      def service(
-          request_iterator, face_rpc_context,
-          service_behavior=method_description.service_stream_stream):
-        return service_behavior(
-            request_iterator, _reexport.rpc_context(face_rpc_context))
-      implementations[qualified_name] = face_utilities.stream_stream_inline(
-          service)
-    request_deserializers[qualified_name] = (
-        method_description.deserialize_request)
-    response_serializers[qualified_name] = (
-        method_description.serialize_response)
-
-  return _EasyServiceBreakdown(
-      implementations, request_deserializers, response_serializers)
diff --git a/src/python/grpcio/grpc/framework/alpha/_reexport.py b/src/python/grpcio/grpc/framework/alpha/_reexport.py
deleted file mode 100644
index e027077a77..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/_reexport.py
+++ /dev/null
@@ -1,205 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import six
-
-from grpc.framework.common import cardinality
-from grpc.framework.face import exceptions as face_exceptions
-from grpc.framework.face import interfaces as face_interfaces
-from grpc.framework.foundation import future
-from grpc.framework.alpha import exceptions
-from grpc.framework.alpha import interfaces
-
-_EARLY_ADOPTER_CARDINALITY_TO_COMMON_CARDINALITY = {
-    interfaces.Cardinality.UNARY_UNARY: cardinality.Cardinality.UNARY_UNARY,
-    interfaces.Cardinality.UNARY_STREAM: cardinality.Cardinality.UNARY_STREAM,
-    interfaces.Cardinality.STREAM_UNARY: cardinality.Cardinality.STREAM_UNARY,
-    interfaces.Cardinality.STREAM_STREAM: cardinality.Cardinality.STREAM_STREAM,
-}
-
-_ABORTION_REEXPORT = {
-    face_interfaces.Abortion.CANCELLED: interfaces.Abortion.CANCELLED,
-    face_interfaces.Abortion.EXPIRED: interfaces.Abortion.EXPIRED,
-    face_interfaces.Abortion.NETWORK_FAILURE:
-        interfaces.Abortion.NETWORK_FAILURE,
-    face_interfaces.Abortion.SERVICED_FAILURE:
-        interfaces.Abortion.SERVICED_FAILURE,
-    face_interfaces.Abortion.SERVICER_FAILURE:
-        interfaces.Abortion.SERVICER_FAILURE,
-}
-
-
-class _RpcError(exceptions.RpcError):
-  pass
-
-
-def _reexport_error(face_rpc_error):
-  if isinstance(face_rpc_error, face_exceptions.CancellationError):
-    return exceptions.CancellationError()
-  elif isinstance(face_rpc_error, face_exceptions.ExpirationError):
-    return exceptions.ExpirationError()
-  else:
-    return _RpcError()
-
-
-def _as_face_abortion_callback(abortion_callback):
-  def face_abortion_callback(face_abortion):
-    abortion_callback(_ABORTION_REEXPORT[face_abortion])
-  return face_abortion_callback
-
-
-class _ReexportedFuture(future.Future):
-
-  def __init__(self, face_future):
-    self._face_future = face_future
-
-  def cancel(self):
-    return self._face_future.cancel()
-
-  def cancelled(self):
-    return self._face_future.cancelled()
-
-  def running(self):
-    return self._face_future.running()
-
-  def done(self):
-    return self._face_future.done()
-
-  def result(self, timeout=None):
-    try:
-      return self._face_future.result(timeout=timeout)
-    except face_exceptions.RpcError as e:
-      raise _reexport_error(e)
-
-  def exception(self, timeout=None):
-    face_error = self._face_future.exception(timeout=timeout)
-    return None if face_error is None else _reexport_error(face_error)
-
-  def traceback(self, timeout=None):
-    return self._face_future.traceback(timeout=timeout)
-
-  def add_done_callback(self, fn):
-    self._face_future.add_done_callback(lambda unused_face_future: fn(self))
-
-
-def _call_reexporting_errors(behavior, *args, **kwargs):
-  try:
-    return behavior(*args, **kwargs)
-  except face_exceptions.RpcError as e:
-    raise _reexport_error(e)
-
-
-def _reexported_future(face_future):
-  return _ReexportedFuture(face_future)
-
-
-class _CancellableIterator(interfaces.CancellableIterator):
-
-  def __init__(self, face_cancellable_iterator):
-    self._face_cancellable_iterator = face_cancellable_iterator
-
-  def __iter__(self):
-    return self
-
-  def next(self):
-    return _call_reexporting_errors(self._face_cancellable_iterator.next)
-
-  def cancel(self):
-    self._face_cancellable_iterator.cancel()
-
-
-class _RpcContext(interfaces.RpcContext):
-
-  def __init__(self, face_rpc_context):
-    self._face_rpc_context = face_rpc_context
-
-  def is_active(self):
-    return self._face_rpc_context.is_active()
-
-  def time_remaining(self):
-    return self._face_rpc_context.time_remaining()
-
-  def add_abortion_callback(self, abortion_callback):
-    self._face_rpc_context.add_abortion_callback(
-        _as_face_abortion_callback(abortion_callback))
-
-
-class _UnaryUnarySyncAsync(interfaces.UnaryUnarySyncAsync):
-
-  def __init__(self, face_unary_unary_multi_callable):
-    self._underlying = face_unary_unary_multi_callable
-
-  def __call__(self, request, timeout):
-    return _call_reexporting_errors(
-        self._underlying, request, timeout)
-
-  def async(self, request, timeout):
-    return _ReexportedFuture(self._underlying.future(request, timeout))
-
-
-class _StreamUnarySyncAsync(interfaces.StreamUnarySyncAsync):
-
-  def __init__(self, face_stream_unary_multi_callable):
-    self._underlying = face_stream_unary_multi_callable
-
-  def __call__(self, request_iterator, timeout):
-    return _call_reexporting_errors(
-        self._underlying, request_iterator, timeout)
-
-  def async(self, request_iterator, timeout):
-    return _ReexportedFuture(self._underlying.future(request_iterator, timeout))
-
-
-def common_cardinality(early_adopter_cardinality):
-  return _EARLY_ADOPTER_CARDINALITY_TO_COMMON_CARDINALITY[
-      early_adopter_cardinality]
-
-
-def common_cardinalities(early_adopter_cardinalities):
-  common_cardinalities = {}
-  for name, early_adopter_cardinality in six.iteritems(early_adopter_cardinalities):
-    common_cardinalities[name] = _EARLY_ADOPTER_CARDINALITY_TO_COMMON_CARDINALITY[
-        early_adopter_cardinality]
-  return common_cardinalities
-
-
-def rpc_context(face_rpc_context):
-  return _RpcContext(face_rpc_context)
-
-
-def cancellable_iterator(face_cancellable_iterator):
-  return _CancellableIterator(face_cancellable_iterator)
-
-
-def unary_unary_sync_async(face_unary_unary_multi_callable):
-  return _UnaryUnarySyncAsync(face_unary_unary_multi_callable)
-
-
-def stream_unary_sync_async(face_stream_unary_multi_callable):
-  return _StreamUnarySyncAsync(face_stream_unary_multi_callable)
diff --git a/src/python/grpcio/grpc/framework/alpha/exceptions.py b/src/python/grpcio/grpc/framework/alpha/exceptions.py
deleted file mode 100644
index 09359c5e94..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/exceptions.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Exceptions raised by GRPC.
-
-Only GRPC should instantiate and raise these exceptions.
-"""
-import abc
-
-import six
-
-class RpcError(six.with_metaclass(abc.ABCMeta, Exception)):
-  """Common super type for all exceptions raised by GRPC."""
-
-
-class CancellationError(RpcError):
-  """Indicates that an RPC has been cancelled."""
-
-
-class ExpirationError(RpcError):
-  """Indicates that an RPC has expired ("timed out")."""
diff --git a/src/python/grpcio/grpc/framework/alpha/interfaces.py b/src/python/grpcio/grpc/framework/alpha/interfaces.py
deleted file mode 100644
index 48f144f614..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/interfaces.py
+++ /dev/null
@@ -1,384 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces of GRPC."""
-
-import abc
-import enum
-
-import six
-
-# exceptions is referenced from specification in this module.
-from grpc.framework.alpha import exceptions  # pylint: disable=unused-import
-from grpc.framework.foundation import activated
-from grpc.framework.foundation import future
-
-
-@enum.unique
-class Cardinality(enum.Enum):
-  """Constants for the four cardinalities of RPC."""
-
-  UNARY_UNARY = 'request-unary/response-unary'
-  UNARY_STREAM = 'request-unary/response-streaming'
-  STREAM_UNARY = 'request-streaming/response-unary'
-  STREAM_STREAM = 'request-streaming/response-streaming'
-
-
-@enum.unique
-class Abortion(enum.Enum):
-  """Categories of RPC abortion."""
-
-  CANCELLED = 'cancelled'
-  EXPIRED = 'expired'
-  NETWORK_FAILURE = 'network failure'
-  SERVICED_FAILURE = 'serviced failure'
-  SERVICER_FAILURE = 'servicer failure'
-
-
-class CancellableIterator(six.with_metaclass(abc.ABCMeta)):
-  """Implements the Iterator protocol and affords a cancel method."""
-
-  @abc.abstractmethod
-  def __iter__(self):
-    """Returns the self object in accordance with the Iterator protocol."""
-    raise NotImplementedError()
-
-  def __next__(self):
-    return self.next()
-
-  @abc.abstractmethod
-  def next(self):
-    """Returns a value or raises StopIteration per the Iterator protocol."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def cancel(self):
-    """Requests cancellation of whatever computation underlies this iterator."""
-    raise NotImplementedError()
-
-
-class RpcContext(six.with_metaclass(abc.ABCMeta)):
-  """Provides RPC-related information and action."""
-
-  @abc.abstractmethod
-  def is_active(self):
-    """Describes whether the RPC is active or has terminated."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def time_remaining(self):
-    """Describes the length of allowed time remaining for the RPC.
-    Returns:
-      A nonnegative float indicating the length of allowed time in seconds
-      remaining for the RPC to complete before it is considered to have timed
-      out.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def add_abortion_callback(self, abortion_callback):
-    """Registers a callback to be called if the RPC is aborted.
-    Args:
-      abortion_callback: A callable to be called and passed an Abortion value
-        in the event of RPC abortion.
-    """
-    raise NotImplementedError()
-
-
-class UnaryUnarySyncAsync(six.with_metaclass(abc.ABCMeta)):
-  """Affords invoking a unary-unary RPC synchronously or asynchronously.
-  Values implementing this interface are directly callable and present an
-  "async" method. Both calls take a request value and a numeric timeout.
-  Direct invocation of a value of this type invokes its associated RPC and
-  blocks until the RPC's response is available. Calling the "async" method
-  of a value of this type invokes its associated RPC and immediately returns a
-  future.Future bound to the asynchronous execution of the RPC.
-  """
-
-  @abc.abstractmethod
-  def __call__(self, request, timeout):
-    """Synchronously invokes the underlying RPC.
-    Args:
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-    Returns:
-      The response value for the RPC.
-    Raises:
-      exceptions.RpcError: Indicating that the RPC was aborted.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def async(self, request, timeout):
-    """Asynchronously invokes the underlying RPC.
-    Args:
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-    Returns:
-      A future.Future representing the RPC. In the event of RPC completion, the
-        returned Future's result value will be the response value of the RPC.
-        In the event of RPC abortion, the returned Future's exception value
-        will be an exceptions.RpcError.
-    """
-    raise NotImplementedError()
-
-
-class StreamUnarySyncAsync(six.with_metaclass(abc.ABCMeta)):
-  """Affords invoking a stream-unary RPC synchronously or asynchronously.
-  Values implementing this interface are directly callable and present an
-  "async" method. Both calls take an iterator of request values and a numeric
-  timeout. Direct invocation of a value of this type invokes its associated RPC
-  and blocks until the RPC's response is available. Calling the "async" method
-  of a value of this type invokes its associated RPC and immediately returns a
-  future.Future bound to the asynchronous execution of the RPC.
-  """
-
-  @abc.abstractmethod
-  def __call__(self, request_iterator, timeout):
-    """Synchronously invokes the underlying RPC.
-
-    Args:
-      request_iterator: An iterator that yields request values for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      The response value for the RPC.
-
-    Raises:
-      exceptions.RpcError: Indicating that the RPC was aborted.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def async(self, request_iterator, timeout):
-    """Asynchronously invokes the underlying RPC.
-
-    Args:
-      request_iterator: An iterator that yields request values for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A future.Future representing the RPC. In the event of RPC completion, the
-        returned Future's result value will be the response value of the RPC.
-        In the event of RPC abortion, the returned Future's exception value
-        will be an exceptions.RpcError.
-    """
-    raise NotImplementedError()
-
-
-class RpcMethodDescription(six.with_metaclass(abc.ABCMeta)):
-  """A type for the common aspects of RPC method descriptions."""
-
-  @abc.abstractmethod
-  def cardinality(self):
-    """Identifies the cardinality of this RpcMethodDescription.
-
-    Returns:
-      A Cardinality value identifying whether or not this
-        RpcMethodDescription is request-unary or request-streaming and
-        whether or not it is response-unary or response-streaming.
-    """
-    raise NotImplementedError()
-
-
-class RpcMethodInvocationDescription(six.with_metaclass(abc.ABCMeta, RpcMethodDescription)):
-  """Invocation-side description of an RPC method."""
-
-  @abc.abstractmethod
-  def serialize_request(self, request):
-    """Serializes a request value.
-
-    Args:
-      request: A request value appropriate for the RPC method described by this
-        RpcMethodInvocationDescription.
-
-    Returns:
-      The serialization of the given request value as a
-        bytestring.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def deserialize_response(self, serialized_response):
-    """Deserializes a response value.
-
-    Args:
-      serialized_response: A bytestring that is the serialization of a response
-        value appropriate for the RPC method described by this
-        RpcMethodInvocationDescription.
-
-    Returns:
-      A response value corresponding to the given bytestring.
-    """
-    raise NotImplementedError()
-
-
-class RpcMethodServiceDescription(six.with_metaclass(abc.ABCMeta, RpcMethodDescription)):
-  """Service-side description of an RPC method."""
-
-  @abc.abstractmethod
-  def deserialize_request(self, serialized_request):
-    """Deserializes a request value.
-
-    Args:
-      serialized_request: A bytestring that is the serialization of a request
-        value appropriate for the RPC method described by this
-        RpcMethodServiceDescription.
-
-    Returns:
-      A request value corresponding to the given bytestring.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def serialize_response(self, response):
-    """Serializes a response value.
-
-    Args:
-      response: A response value appropriate for the RPC method described by
-        this RpcMethodServiceDescription.
-
-    Returns:
-      The serialization of the given response value as a
-        bytestring.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def service_unary_unary(self, request, context):
-    """Carries out this RPC.
-
-    This method may only be called if the cardinality of this
-    RpcMethodServiceDescription is Cardinality.UNARY_UNARY.
-
-    Args:
-      request: A request value appropriate for the RPC method described by this
-        RpcMethodServiceDescription.
-      context: An RpcContext object for the RPC.
-
-    Returns:
-      A response value appropriate for the RPC method described by this
-        RpcMethodServiceDescription.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def service_unary_stream(self, request, context):
-    """Carries out this RPC.
-
-    This method may only be called if the cardinality of this
-    RpcMethodServiceDescription is Cardinality.UNARY_STREAM.
-
-    Args:
-      request: A request value appropriate for the RPC method described by this
-        RpcMethodServiceDescription.
-      context: An RpcContext object for the RPC.
-
-    Yields:
-      Zero or more response values appropriate for the RPC method described by
-        this RpcMethodServiceDescription.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def service_stream_unary(self, request_iterator, context):
-    """Carries out this RPC.
-
-    This method may only be called if the cardinality of this
-    RpcMethodServiceDescription is Cardinality.STREAM_UNARY.
-
-    Args:
-      request_iterator: An iterator of request values appropriate for the RPC
-        method described by this RpcMethodServiceDescription.
-      context: An RpcContext object for the RPC.
-
-    Returns:
-      A response value appropriate for the RPC method described by this
-        RpcMethodServiceDescription.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def service_stream_stream(self, request_iterator, context):
-    """Carries out this RPC.
-
-    This method may only be called if the cardinality of this
-    RpcMethodServiceDescription is Cardinality.STREAM_STREAM.
-
-    Args:
-      request_iterator: An iterator of request values appropriate for the RPC
-        method described by this RpcMethodServiceDescription.
-      context: An RpcContext object for the RPC.
-
-    Yields:
-      Zero or more response values appropriate for the RPC method described by
-        this RpcMethodServiceDescription.
-    """
-    raise NotImplementedError()
-
-
-class Stub(six.with_metaclass(abc.ABCMeta)):
-  """A stub with callable RPC method names for attributes.
-
-  Instances of this type are context managers and only afford RPC invocation
-  when used in context.
-
-  Instances of this type, when used in context, respond to attribute access
-  as follows: if the requested attribute is the name of a unary-unary RPC
-  method, the value of the attribute will be a UnaryUnarySyncAsync with which
-  to invoke the RPC method. If the requested attribute is the name of a
-  unary-stream RPC method, the value of the attribute will be a callable taking
-  a request object and a timeout parameter and returning a CancellableIterator
-  that yields the response values of the RPC. If the requested attribute is the
-  name of a stream-unary RPC method, the value of the attribute will be a
-  StreamUnarySyncAsync with which to invoke the RPC method. If the requested
-  attribute is the name of a stream-stream RPC method, the value of the
-  attribute will be a callable taking an iterator of request objects and a
-  timeout and returning a CancellableIterator that yields the response values
-  of the RPC.
-
-  In all cases indication of abortion is indicated by raising of
-  exceptions.RpcError, exceptions.CancellationError,
-  and exceptions.ExpirationError.
-  """
-
-
-class Server(six.with_metaclass(abc.ABCMeta, activated.Activated)):
-  """A GRPC Server."""
-
-  @abc.abstractmethod
-  def port(self):
-    """Reports the port on which the server is serving.
-
-    This method may only be called while the server is activated.
-
-    Returns:
-      The port on which the server is serving.
-    """
-    raise NotImplementedError()
diff --git a/src/python/grpcio/grpc/framework/alpha/utilities.py b/src/python/grpcio/grpc/framework/alpha/utilities.py
deleted file mode 100644
index 7d7f78f5e4..0000000000
--- a/src/python/grpcio/grpc/framework/alpha/utilities.py
+++ /dev/null
@@ -1,269 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities for use with GRPC."""
-
-from grpc.framework.alpha import interfaces
-
-
-class _RpcMethodDescription(
-    interfaces.RpcMethodInvocationDescription,
-    interfaces.RpcMethodServiceDescription):
-
-  def __init__(
-      self, cardinality, unary_unary, unary_stream, stream_unary,
-      stream_stream, request_serializer, request_deserializer,
-      response_serializer, response_deserializer):
-    self._cardinality = cardinality
-    self._unary_unary = unary_unary
-    self._unary_stream = unary_stream
-    self._stream_unary = stream_unary
-    self._stream_stream = stream_stream
-    self._request_serializer = request_serializer
-    self._request_deserializer = request_deserializer
-    self._response_serializer = response_serializer
-    self._response_deserializer = response_deserializer
-
-  def cardinality(self):
-    """See interfaces.RpcMethodDescription.cardinality for specification."""
-    return self._cardinality
-
-  def serialize_request(self, request):
-    """See interfaces.RpcMethodInvocationDescription.serialize_request."""
-    return self._request_serializer(request)
-
-  def deserialize_request(self, serialized_request):
-    """See interfaces.RpcMethodServiceDescription.deserialize_request."""
-    return self._request_deserializer(serialized_request)
-
-  def serialize_response(self, response):
-    """See interfaces.RpcMethodServiceDescription.serialize_response."""
-    return self._response_serializer(response)
-
-  def deserialize_response(self, serialized_response):
-    """See interfaces.RpcMethodInvocationDescription.deserialize_response."""
-    return self._response_deserializer(serialized_response)
-
-  def service_unary_unary(self, request, context):
-    """See interfaces.RpcMethodServiceDescription.service_unary_unary."""
-    return self._unary_unary(request, context)
-
-  def service_unary_stream(self, request, context):
-    """See interfaces.RpcMethodServiceDescription.service_unary_stream."""
-    return self._unary_stream(request, context)
-
-  def service_stream_unary(self, request_iterator, context):
-    """See interfaces.RpcMethodServiceDescription.service_stream_unary."""
-    return self._stream_unary(request_iterator, context)
-
-  def service_stream_stream(self, request_iterator, context):
-    """See interfaces.RpcMethodServiceDescription.service_stream_stream."""
-    return self._stream_stream(request_iterator, context)
-
-
-def unary_unary_invocation_description(
-    request_serializer, response_deserializer):
-  """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
-  Args:
-    request_serializer: A callable that when called on a request
-      value returns a bytestring corresponding to that value.
-    response_deserializer: A callable that when called on a
-      bytestring returns the response value corresponding to
-      that bytestring.
-
-  Returns:
-    An interfaces.RpcMethodInvocationDescription constructed from the given
-      arguments representing a unary-request/unary-response RPC method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.UNARY_UNARY, None, None, None, None,
-      request_serializer, None, None, response_deserializer)
-
-
-def unary_stream_invocation_description(
-    request_serializer, response_deserializer):
-  """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
-  Args:
-    request_serializer: A callable that when called on a request
-      value returns a bytestring corresponding to that value.
-    response_deserializer: A callable that when called on a
-      bytestring returns the response value corresponding to
-      that bytestring.
-
-  Returns:
-    An interfaces.RpcMethodInvocationDescription constructed from the given
-      arguments representing a unary-request/streaming-response RPC method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.UNARY_STREAM, None, None, None, None,
-      request_serializer, None, None, response_deserializer)
-
-
-def stream_unary_invocation_description(
-    request_serializer, response_deserializer):
-  """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
-  Args:
-    request_serializer: A callable that when called on a request
-      value returns a bytestring corresponding to that value.
-    response_deserializer: A callable that when called on a
-      bytestring returns the response value corresponding to
-      that bytestring.
-
-  Returns:
-    An interfaces.RpcMethodInvocationDescription constructed from the given
-      arguments representing a streaming-request/unary-response RPC method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.STREAM_UNARY, None, None, None, None,
-      request_serializer, None, None, response_deserializer)
-
-
-def stream_stream_invocation_description(
-    request_serializer, response_deserializer):
-  """Creates an interfaces.RpcMethodInvocationDescription for an RPC method.
-
-  Args:
-    request_serializer: A callable that when called on a request
-      value returns a bytestring corresponding to that value.
-    response_deserializer: A callable that when called on a
-      bytestring returns the response value corresponding to
-      that bytestring.
-
-  Returns:
-    An interfaces.RpcMethodInvocationDescription constructed from the given
-      arguments representing a  streaming-request/streaming-response RPC
-      method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.STREAM_STREAM, None, None, None, None,
-      request_serializer, None, None, response_deserializer)
-
-
-def unary_unary_service_description(
-    behavior, request_deserializer, response_serializer):
-  """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
-  Args:
-    behavior: A callable that implements a unary-unary RPC
-      method that accepts a single request and an interfaces.RpcContext and
-      returns a single response.
-    request_deserializer: A callable that when called on a
-      bytestring returns the request value corresponding to that
-      bytestring.
-    response_serializer: A callable that when called on a
-      response value returns the bytestring corresponding to
-      that value.
-
-  Returns:
-    An interfaces.RpcMethodServiceDescription constructed from the given
-      arguments representing a unary-request/unary-response RPC
-      method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.UNARY_UNARY, behavior, None, None, None,
-      None, request_deserializer, response_serializer, None)
-
-
-def unary_stream_service_description(
-    behavior, request_deserializer, response_serializer):
-  """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
-  Args:
-    behavior: A callable that implements a unary-stream RPC
-      method that accepts a single request and an interfaces.RpcContext
-      and returns an iterator of zero or more responses.
-    request_deserializer: A callable that when called on a
-      bytestring returns the request value corresponding to that
-      bytestring.
-    response_serializer: A callable that when called on a
-      response value returns the bytestring corresponding to
-      that value.
-
-  Returns:
-    An interfaces.RpcMethodServiceDescription constructed from the given
-      arguments representing a unary-request/streaming-response
-      RPC method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.UNARY_STREAM, None, behavior, None, None,
-      None, request_deserializer, response_serializer, None)
-
-
-def stream_unary_service_description(
-    behavior, request_deserializer, response_serializer):
-  """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
-  Args:
-    behavior: A callable that implements a stream-unary RPC
-      method that accepts an iterator of zero or more requests
-      and an interfaces.RpcContext and returns a single response.
-    request_deserializer: A callable that when called on a
-      bytestring returns the request value corresponding to that
-      bytestring.
-    response_serializer: A callable that when called on a
-      response value returns the bytestring corresponding to
-      that value.
-
-  Returns:
-    An interfaces.RpcMethodServiceDescription constructed from the given
-      arguments representing a streaming-request/unary-response
-      RPC method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.STREAM_UNARY, None, None, behavior, None,
-      None, request_deserializer, response_serializer, None)
-
-
-def stream_stream_service_description(
-    behavior, request_deserializer, response_serializer):
-  """Creates an interfaces.RpcMethodServiceDescription for the given behavior.
-
-  Args:
-    behavior: A callable that implements a stream-stream RPC
-      method that accepts an iterator of zero or more requests
-      and an interfaces.RpcContext and returns an iterator of
-      zero or more responses.
-    request_deserializer: A callable that when called on a
-      bytestring returns the request value corresponding to that
-      bytestring.
-    response_serializer: A callable that when called on a
-      response value returns the bytestring corresponding to
-      that value.
-
-  Returns:
-    An interfaces.RpcMethodServiceDescription constructed from the given
-      arguments representing a
-      streaming-request/streaming-response RPC method.
-  """
-  return _RpcMethodDescription(
-      interfaces.Cardinality.STREAM_STREAM, None, None, None, behavior,
-      None, request_deserializer, response_serializer, None)
diff --git a/src/python/grpcio/grpc/framework/base/__init__.py b/src/python/grpcio/grpc/framework/base/__init__.py
deleted file mode 100644
index bff74be2c7..0000000000
--- a/src/python/grpcio/grpc/framework/base/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import warnings
-
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
-              'unmaintained, and no longer tested. Please migrate to the beta '
-              'API.', DeprecationWarning, stacklevel=2)
diff --git a/src/python/grpcio/grpc/framework/base/_cancellation.py b/src/python/grpcio/grpc/framework/base/_cancellation.py
deleted file mode 100644
index ffbc90668f..0000000000
--- a/src/python/grpcio/grpc/framework/base/_cancellation.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for operation cancellation."""
-
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
-
-
-class CancellationManager(_interfaces.CancellationManager):
-  """An implementation of _interfaces.CancellationManager."""
-
-  def __init__(
-      self, lock, termination_manager, transmission_manager, ingestion_manager,
-      expiration_manager):
-    """Constructor.
-
-    Args:
-      lock: The operation-wide lock.
-      termination_manager: The _interfaces.TerminationManager for the operation.
-      transmission_manager: The _interfaces.TransmissionManager for the
-        operation.
-      ingestion_manager: The _interfaces.IngestionManager for the operation.
-      expiration_manager: The _interfaces.ExpirationManager for the operation.
-    """
-    self._lock = lock
-    self._termination_manager = termination_manager
-    self._transmission_manager = transmission_manager
-    self._ingestion_manager = ingestion_manager
-    self._expiration_manager = expiration_manager
-
-  def cancel(self):
-    """See _interfaces.CancellationManager.cancel for specification."""
-    with self._lock:
-      self._termination_manager.abort(interfaces.Outcome.CANCELLED)
-      self._transmission_manager.abort(interfaces.Outcome.CANCELLED)
-      self._ingestion_manager.abort()
-      self._expiration_manager.abort()
diff --git a/src/python/grpcio/grpc/framework/base/_constants.py b/src/python/grpcio/grpc/framework/base/_constants.py
deleted file mode 100644
index 8fbdc82782..0000000000
--- a/src/python/grpcio/grpc/framework/base/_constants.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Private constants for the package."""
-
-INTERNAL_ERROR_LOG_MESSAGE = ':-( RPC Framework (Base) internal error! :-('
diff --git a/src/python/grpcio/grpc/framework/base/_context.py b/src/python/grpcio/grpc/framework/base/_context.py
deleted file mode 100644
index d84871d639..0000000000
--- a/src/python/grpcio/grpc/framework/base/_context.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for operation context."""
-
-import time
-
-# _interfaces is referenced from specification in this module.
-from grpc.framework.base import interfaces
-from grpc.framework.base import _interfaces  # pylint: disable=unused-import
-
-
-class OperationContext(interfaces.OperationContext):
-  """An implementation of interfaces.OperationContext."""
-
-  def __init__(
-      self, lock, operation_id, local_failure, termination_manager,
-      transmission_manager):
-    """Constructor.
-
-    Args:
-      lock: The operation-wide lock.
-      operation_id: An object identifying the operation.
-      local_failure: Whichever one of interfaces.Outcome.SERVICED_FAILURE or
-        interfaces.Outcome.SERVICER_FAILURE describes local failure of
-        customer code.
-      termination_manager: The _interfaces.TerminationManager for the operation.
-      transmission_manager: The _interfaces.TransmissionManager for the
-        operation.
-    """
-    self._lock = lock
-    self._local_failure = local_failure
-    self._termination_manager = termination_manager
-    self._transmission_manager = transmission_manager
-    self._ingestion_manager = None
-    self._expiration_manager = None
-
-    self.operation_id = operation_id
-
-  def set_ingestion_and_expiration_managers(
-      self, ingestion_manager, expiration_manager):
-    """Sets managers with which this OperationContext cooperates.
-
-    Args:
-      ingestion_manager: The _interfaces.IngestionManager for the operation.
-      expiration_manager: The _interfaces.ExpirationManager for the operation.
-    """
-    self._ingestion_manager = ingestion_manager
-    self._expiration_manager = expiration_manager
-
-  def is_active(self):
-    """See interfaces.OperationContext.is_active for specification."""
-    with self._lock:
-      return self._termination_manager.is_active()
-
-  def add_termination_callback(self, callback):
-    """See interfaces.OperationContext.add_termination_callback."""
-    with self._lock:
-      self._termination_manager.add_callback(callback)
-
-  def time_remaining(self):
-    """See interfaces.OperationContext.time_remaining for specification."""
-    with self._lock:
-      deadline = self._expiration_manager.deadline()
-    return max(0.0, deadline - time.time())
-
-  def fail(self, exception):
-    """See interfaces.OperationContext.fail for specification."""
-    with self._lock:
-      self._termination_manager.abort(self._local_failure)
-      self._transmission_manager.abort(self._local_failure)
-      self._ingestion_manager.abort()
-      self._expiration_manager.abort()
diff --git a/src/python/grpcio/grpc/framework/base/_emission.py b/src/python/grpcio/grpc/framework/base/_emission.py
deleted file mode 100644
index 1829669a72..0000000000
--- a/src/python/grpcio/grpc/framework/base/_emission.py
+++ /dev/null
@@ -1,125 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for handling emitted values."""
-
-from grpc.framework.base import interfaces
-from grpc.framework.base import _interfaces
-
-
-class _EmissionManager(_interfaces.EmissionManager):
-  """An implementation of _interfaces.EmissionManager."""
-
-  def __init__(
-      self, lock, failure_outcome, termination_manager, transmission_manager):
-    """Constructor.
-
-    Args:
-      lock: The operation-wide lock.
-      failure_outcome: Whichever one of interfaces.Outcome.SERVICED_FAILURE or
-        interfaces.Outcome.SERVICER_FAILURE describes this object's methods
-        being called inappropriately by customer code.
-      termination_manager: The _interfaces.TerminationManager for the operation.
-      transmission_manager: The _interfaces.TransmissionManager for the
-        operation.
-    """
-    self._lock = lock
-    self._failure_outcome = failure_outcome
-    self._termination_manager = termination_manager
-    self._transmission_manager = transmission_manager
-    self._ingestion_manager = None
-    self._expiration_manager = None
-
-    self._emission_complete = False
-
-  def set_ingestion_manager_and_expiration_manager(
-      self, ingestion_manager, expiration_manager):
-    self._ingestion_manager = ingestion_manager
-    self._expiration_manager = expiration_manager
-
-  def _abort(self):
-    self._termination_manager.abort(self._failure_outcome)
-    self._transmission_manager.abort(self._failure_outcome)
-    self._ingestion_manager.abort()
-    self._expiration_manager.abort()
-
-  def consume(self, value):
-    with self._lock:
-      if self._emission_complete:
-        self._abort()
-      else:
-        self._transmission_manager.inmit(value, False)
-
-  def terminate(self):
-    with self._lock:
-      if not self._emission_complete:
-        self._termination_manager.emission_complete()
-        self._transmission_manager.inmit(None, True)
-        self._emission_complete = True
-
-  def consume_and_terminate(self, value):
-    with self._lock:
-      if self._emission_complete:
-        self._abort()
-      else:
-        self._termination_manager.emission_complete()
-        self._transmission_manager.inmit(value, True)
-        self._emission_complete = True
-
-
-def front_emission_manager(lock, termination_manager, transmission_manager):
-  """Creates an _interfaces.EmissionManager appropriate for front-side use.
-
-  Args:
-    lock: The operation-wide lock.
-    termination_manager: The _interfaces.TerminationManager for the operation.
-    transmission_manager: The _interfaces.TransmissionManager for the operation.
-
-  Returns:
-    An _interfaces.EmissionManager appropriate for front-side use.
-  """
-  return _EmissionManager(
-      lock, interfaces.Outcome.SERVICED_FAILURE, termination_manager,
-      transmission_manager)
-
-
-def back_emission_manager(lock, termination_manager, transmission_manager):
-  """Creates an _interfaces.EmissionManager appropriate for back-side use.
-
-  Args:
-    lock: The operation-wide lock.
-    termination_manager: The _interfaces.TerminationManager for the operation.
-    transmission_manager: The _interfaces.TransmissionManager for the operation.
-
-  Returns:
-    An _interfaces.EmissionManager appropriate for back-side use.
-  """
-  return _EmissionManager(
-      lock, interfaces.Outcome.SERVICER_FAILURE, termination_manager,
-      transmission_manager)
diff --git a/src/python/grpcio/grpc/framework/base/_ends.py b/src/python/grpcio/grpc/framework/base/_ends.py
deleted file mode 100644
index 176f3ac06e..0000000000
--- a/src/python/grpcio/grpc/framework/base/_ends.py
+++ /dev/null
@@ -1,399 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Implementations of FrontLinks and BackLinks."""
-
-import collections
-import threading
-import uuid
-
-# _interfaces is referenced from specification in this module.
-from grpc.framework.base import _cancellation
-from grpc.framework.base import _context
-from grpc.framework.base import _emission
-from grpc.framework.base import _expiration
-from grpc.framework.base import _ingestion
-from grpc.framework.base import _interfaces  # pylint: disable=unused-import
-from grpc.framework.base import _reception
-from grpc.framework.base import _termination
-from grpc.framework.base import _transmission
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-_IDLE_ACTION_EXCEPTION_LOG_MESSAGE = 'Exception calling idle action!'
-
-
-class _EasyOperation(interfaces.Operation):
-  """A trivial implementation of interfaces.Operation."""
-
-  def __init__(self, emission_manager, context, cancellation_manager):
-    """Constructor.
-
-    Args:
-      emission_manager: The _interfaces.EmissionManager for the operation that
-        will accept values emitted by customer code.
-      context: The interfaces.OperationContext for use by the customer
-        during the operation.
-      cancellation_manager: The _interfaces.CancellationManager for the
-        operation.
-    """
-    self.consumer = emission_manager
-    self.context = context
-    self._cancellation_manager = cancellation_manager
-
-  def cancel(self):
-    self._cancellation_manager.cancel()
-
-
-class _Endlette(object):
-  """Utility for stateful behavior common to Fronts and Backs."""
-
-  def __init__(self, pool):
-    """Constructor.
-
-    Args:
-      pool: A thread pool to use when calling registered idle actions.
-    """
-    self._lock = threading.Lock()
-    self._pool = pool
-    # Dictionary from operation IDs to ReceptionManager-or-None. A None value
-    # indicates an in-progress fire-and-forget operation for which the customer
-    # has chosen to ignore results.
-    self._operations = {}
-    self._stats = {outcome: 0 for outcome in interfaces.Outcome}
-    self._idle_actions = []
-
-  def terminal_action(self, operation_id):
-    """Constructs the termination action for a single operation.
-
-    Args:
-      operation_id: An operation ID.
-
-    Returns:
-      A callable that takes an operation outcome for an argument to be used as
-        the termination action for the operation associated with the given
-        operation ID.
-    """
-    def termination_action(outcome):
-      with self._lock:
-        self._stats[outcome] += 1
-        self._operations.pop(operation_id, None)
-        if not self._operations:
-          for action in self._idle_actions:
-            self._pool.submit(callable_util.with_exceptions_logged(
-                action, _IDLE_ACTION_EXCEPTION_LOG_MESSAGE))
-          self._idle_actions = []
-    return termination_action
-
-  def __enter__(self):
-    self._lock.acquire()
-
-  def __exit__(self, exc_type, exc_val, exc_tb):
-    self._lock.release()
-
-  def get_operation(self, operation_id):
-    return self._operations.get(operation_id, None)
-
-  def add_operation(self, operation_id, operation_reception_manager):
-    self._operations[operation_id] = operation_reception_manager
-
-  def operation_stats(self):
-    with self._lock:
-      return dict(self._stats)
-
-  def add_idle_action(self, action):
-    with self._lock:
-      if self._operations:
-        self._idle_actions.append(action)
-      else:
-        self._pool.submit(callable_util.with_exceptions_logged(
-            action, _IDLE_ACTION_EXCEPTION_LOG_MESSAGE))
-
-
-class _FrontManagement(
-    collections.namedtuple(
-        '_FrontManagement',
-        ('reception', 'emission', 'operation', 'cancellation'))):
-  """Just a trivial helper class to bundle four fellow-traveling objects."""
-
-
-def _front_operate(
-    callback, work_pool, transmission_pool, utility_pool,
-    termination_action, operation_id, name, payload, complete, timeout,
-    subscription, trace_id):
-  """Constructs objects necessary for front-side operation management.
-
-  Args:
-    callback: A callable that accepts interfaces.FrontToBackTickets and
-      delivers them to the other side of the operation. Execution of this
-      callable may take any arbitrary length of time.
-    work_pool: A thread pool in which to execute customer code.
-    transmission_pool: A thread pool to use for transmitting to the other side
-      of the operation.
-    utility_pool: A thread pool for utility tasks.
-    termination_action: A no-arg behavior to be called upon operation
-      completion.
-    operation_id: An object identifying the operation.
-    name: The name of the method being called during the operation.
-    payload: The first customer-significant value to be transmitted to the other
-      side. May be None if there is no such value or if the customer chose not
-      to pass it at operation invocation.
-    complete: A boolean indicating whether or not additional payloads will be
-      supplied by the customer.
-    timeout: A length of time in seconds to allow for the operation.
-    subscription: A interfaces.ServicedSubscription describing the
-      customer's interest in the results of the operation.
-    trace_id: A uuid.UUID identifying a set of related operations to which this
-      operation belongs. May be None.
-
-  Returns:
-    A _FrontManagement object bundling together the
-      _interfaces.ReceptionManager, _interfaces.EmissionManager,
-      _context.OperationContext, and _interfaces.CancellationManager for the
-      operation.
-  """
-  lock = threading.Lock()
-  with lock:
-    termination_manager = _termination.front_termination_manager(
-        work_pool, utility_pool, termination_action, subscription.kind)
-    transmission_manager = _transmission.front_transmission_manager(
-        lock, transmission_pool, callback, operation_id, name,
-        subscription.kind, trace_id, timeout, termination_manager)
-    operation_context = _context.OperationContext(
-        lock, operation_id, interfaces.Outcome.SERVICED_FAILURE,
-        termination_manager, transmission_manager)
-    emission_manager = _emission.front_emission_manager(
-        lock, termination_manager, transmission_manager)
-    ingestion_manager = _ingestion.front_ingestion_manager(
-        lock, work_pool, subscription, termination_manager,
-        transmission_manager, operation_context)
-    expiration_manager = _expiration.front_expiration_manager(
-        lock, termination_manager, transmission_manager, ingestion_manager,
-        timeout)
-    reception_manager = _reception.front_reception_manager(
-        lock, termination_manager, transmission_manager, ingestion_manager,
-        expiration_manager)
-    cancellation_manager = _cancellation.CancellationManager(
-        lock, termination_manager, transmission_manager, ingestion_manager,
-        expiration_manager)
-
-    termination_manager.set_expiration_manager(expiration_manager)
-    transmission_manager.set_ingestion_and_expiration_managers(
-        ingestion_manager, expiration_manager)
-    operation_context.set_ingestion_and_expiration_managers(
-        ingestion_manager, expiration_manager)
-    emission_manager.set_ingestion_manager_and_expiration_manager(
-        ingestion_manager, expiration_manager)
-    ingestion_manager.set_expiration_manager(expiration_manager)
-
-    transmission_manager.inmit(payload, complete)
-
-    if subscription.kind is interfaces.ServicedSubscription.Kind.NONE:
-      returned_reception_manager = None
-    else:
-      returned_reception_manager = reception_manager
-
-    return _FrontManagement(
-        returned_reception_manager, emission_manager, operation_context,
-        cancellation_manager)
-
-
-class FrontLink(interfaces.FrontLink):
-  """An implementation of interfaces.FrontLink."""
-
-  def __init__(self, work_pool, transmission_pool, utility_pool):
-    """Constructor.
-
-    Args:
-      work_pool: A thread pool to be used for executing customer code.
-      transmission_pool: A thread pool to be used for transmitting values to
-        the other side of the operation.
-      utility_pool: A thread pool to be used for utility tasks.
-    """
-    self._endlette = _Endlette(utility_pool)
-    self._work_pool = work_pool
-    self._transmission_pool = transmission_pool
-    self._utility_pool = utility_pool
-    self._callback = None
-
-    self._operations = {}
-
-  def join_rear_link(self, rear_link):
-    """See interfaces.ForeLink.join_rear_link for specification."""
-    with self._endlette:
-      self._callback = rear_link.accept_front_to_back_ticket
-
-  def operation_stats(self):
-    """See interfaces.End.operation_stats for specification."""
-    return self._endlette.operation_stats()
-
-  def add_idle_action(self, action):
-    """See interfaces.End.add_idle_action for specification."""
-    self._endlette.add_idle_action(action)
-
-  def operate(
-      self, name, payload, complete, timeout, subscription, trace_id):
-    """See interfaces.Front.operate for specification."""
-    operation_id = uuid.uuid4()
-    with self._endlette:
-      management = _front_operate(
-          self._callback, self._work_pool, self._transmission_pool,
-          self._utility_pool, self._endlette.terminal_action(operation_id),
-          operation_id, name, payload, complete, timeout, subscription,
-          trace_id)
-      self._endlette.add_operation(operation_id, management.reception)
-      return _EasyOperation(
-          management.emission, management.operation, management.cancellation)
-
-  def accept_back_to_front_ticket(self, ticket):
-    """See interfaces.End.act for specification."""
-    with self._endlette:
-      reception_manager = self._endlette.get_operation(ticket.operation_id)
-    if reception_manager:
-      reception_manager.receive_ticket(ticket)
-
-
-def _back_operate(
-    servicer, callback, work_pool, transmission_pool, utility_pool,
-    termination_action, ticket, default_timeout, maximum_timeout):
-  """Constructs objects necessary for back-side operation management.
-
-  Also begins back-side operation by feeding the first received ticket into the
-  constructed _interfaces.ReceptionManager.
-
-  Args:
-    servicer: An interfaces.Servicer for servicing operations.
-    callback: A callable that accepts interfaces.BackToFrontTickets and
-      delivers them to the other side of the operation. Execution of this
-      callable may take any arbitrary length of time.
-    work_pool: A thread pool in which to execute customer code.
-    transmission_pool: A thread pool to use for transmitting to the other side
-      of the operation.
-    utility_pool: A thread pool for utility tasks.
-    termination_action: A no-arg behavior to be called upon operation
-      completion.
-    ticket: The first interfaces.FrontToBackTicket received for the operation.
-    default_timeout: A length of time in seconds to be used as the default
-      time alloted for a single operation.
-    maximum_timeout: A length of time in seconds to be used as the maximum
-      time alloted for a single operation.
-
-  Returns:
-    The _interfaces.ReceptionManager to be used for the operation.
-  """
-  lock = threading.Lock()
-  with lock:
-    termination_manager = _termination.back_termination_manager(
-        work_pool, utility_pool, termination_action, ticket.subscription)
-    transmission_manager = _transmission.back_transmission_manager(
-        lock, transmission_pool, callback, ticket.operation_id,
-        termination_manager, ticket.subscription)
-    operation_context = _context.OperationContext(
-        lock, ticket.operation_id, interfaces.Outcome.SERVICER_FAILURE,
-        termination_manager, transmission_manager)
-    emission_manager = _emission.back_emission_manager(
-        lock, termination_manager, transmission_manager)
-    ingestion_manager = _ingestion.back_ingestion_manager(
-        lock, work_pool, servicer, termination_manager,
-        transmission_manager, operation_context, emission_manager)
-    expiration_manager = _expiration.back_expiration_manager(
-        lock, termination_manager, transmission_manager, ingestion_manager,
-        ticket.timeout, default_timeout, maximum_timeout)
-    reception_manager = _reception.back_reception_manager(
-        lock, termination_manager, transmission_manager, ingestion_manager,
-        expiration_manager)
-
-    termination_manager.set_expiration_manager(expiration_manager)
-    transmission_manager.set_ingestion_and_expiration_managers(
-        ingestion_manager, expiration_manager)
-    operation_context.set_ingestion_and_expiration_managers(
-        ingestion_manager, expiration_manager)
-    emission_manager.set_ingestion_manager_and_expiration_manager(
-        ingestion_manager, expiration_manager)
-    ingestion_manager.set_expiration_manager(expiration_manager)
-
-  reception_manager.receive_ticket(ticket)
-
-  return reception_manager
-
-
-class BackLink(interfaces.BackLink):
-  """An implementation of interfaces.BackLink."""
-
-  def __init__(
-      self, servicer, work_pool, transmission_pool, utility_pool,
-      default_timeout, maximum_timeout):
-    """Constructor.
-
-    Args:
-      servicer: An interfaces.Servicer for servicing operations.
-      work_pool: A thread pool in which to execute customer code.
-      transmission_pool: A thread pool to use for transmitting to the other side
-        of the operation.
-      utility_pool: A thread pool for utility tasks.
-      default_timeout: A length of time in seconds to be used as the default
-        time alloted for a single operation.
-      maximum_timeout: A length of time in seconds to be used as the maximum
-        time alloted for a single operation.
-    """
-    self._endlette = _Endlette(utility_pool)
-    self._servicer = servicer
-    self._work_pool = work_pool
-    self._transmission_pool = transmission_pool
-    self._utility_pool = utility_pool
-    self._default_timeout = default_timeout
-    self._maximum_timeout = maximum_timeout
-    self._callback = None
-
-  def join_fore_link(self, fore_link):
-    """See interfaces.RearLink.join_fore_link for specification."""
-    with self._endlette:
-      self._callback = fore_link.accept_back_to_front_ticket
-
-  def accept_front_to_back_ticket(self, ticket):
-    """See interfaces.RearLink.accept_front_to_back_ticket for specification."""
-    with self._endlette:
-      reception_manager = self._endlette.get_operation(ticket.operation_id)
-      if reception_manager is None:
-        reception_manager = _back_operate(
-            self._servicer, self._callback, self._work_pool,
-            self._transmission_pool, self._utility_pool,
-            self._endlette.terminal_action(ticket.operation_id), ticket,
-            self._default_timeout, self._maximum_timeout)
-        self._endlette.add_operation(ticket.operation_id, reception_manager)
-      else:
-        reception_manager.receive_ticket(ticket)
-
-  def operation_stats(self):
-    """See interfaces.End.operation_stats for specification."""
-    return self._endlette.operation_stats()
-
-  def add_idle_action(self, action):
-    """See interfaces.End.add_idle_action for specification."""
-    self._endlette.add_idle_action(action)
diff --git a/src/python/grpcio/grpc/framework/base/_expiration.py b/src/python/grpcio/grpc/framework/base/_expiration.py
deleted file mode 100644
index 17acbef4c1..0000000000
--- a/src/python/grpcio/grpc/framework/base/_expiration.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for operation expiration."""
-
-import time
-
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import later
-
-
-class _ExpirationManager(_interfaces.ExpirationManager):
-  """An implementation of _interfaces.ExpirationManager."""
-
-  def __init__(
-      self, lock, termination_manager, transmission_manager, ingestion_manager,
-      commencement, timeout, maximum_timeout):
-    """Constructor.
-
-    Args:
-      lock: The operation-wide lock.
-      termination_manager: The _interfaces.TerminationManager for the operation.
-      transmission_manager: The _interfaces.TransmissionManager for the
-        operation.
-      ingestion_manager: The _interfaces.IngestionManager for the operation.
-      commencement: The time in seconds since the epoch at which the operation
-        began.
-      timeout: A length of time in seconds to allow for the operation to run.
-      maximum_timeout: The maximum length of time in seconds to allow for the
-        operation to run despite what is requested via this object's
-        change_timout method.
-    """
-    self._lock = lock
-    self._termination_manager = termination_manager
-    self._transmission_manager = transmission_manager
-    self._ingestion_manager = ingestion_manager
-    self._commencement = commencement
-    self._maximum_timeout = maximum_timeout
-
-    self._timeout = timeout
-    self._deadline = commencement + timeout
-    self._index = None
-    self._future = None
-
-  def _expire(self, index):
-    with self._lock:
-      if self._future is not None and index == self._index:
-        self._future = None
-        self._termination_manager.abort(interfaces.Outcome.EXPIRED)
-        self._transmission_manager.abort(interfaces.Outcome.EXPIRED)
-        self._ingestion_manager.abort()
-
-  def start(self):
-    self._index = 0
-    self._future = later.later(self._timeout, lambda: self._expire(0))
-
-  def change_timeout(self, timeout):
-    if self._future is not None and timeout != self._timeout:
-      self._future.cancel()
-      new_timeout = min(timeout, self._maximum_timeout)
-      new_index = self._index + 1
-      self._timeout = new_timeout
-      self._deadline = self._commencement + new_timeout
-      self._index = new_index
-      delay = self._deadline - time.time()
-      self._future = later.later(
-          delay, lambda: self._expire(new_index))
-
-  def deadline(self):
-    return self._deadline
-
-  def abort(self):
-    if self._future:
-      self._future.cancel()
-      self._future = None
-    self._deadline_index = None
-
-
-def front_expiration_manager(
-    lock, termination_manager, transmission_manager, ingestion_manager,
-    timeout):
-  """Creates an _interfaces.ExpirationManager appropriate for front-side use.
-
-  Args:
-    lock: The operation-wide lock.
-    termination_manager: The _interfaces.TerminationManager for the operation.
-    transmission_manager: The _interfaces.TransmissionManager for the
-      operation.
-    ingestion_manager: The _interfaces.IngestionManager for the operation.
-    timeout: A length of time in seconds to allow for the operation to run.
-
-  Returns:
-    An _interfaces.ExpirationManager appropriate for front-side use.
-  """
-  commencement = time.time()
-  expiration_manager = _ExpirationManager(
-      lock, termination_manager, transmission_manager, ingestion_manager,
-      commencement, timeout, timeout)
-  expiration_manager.start()
-  return expiration_manager
-
-
-def back_expiration_manager(
-    lock, termination_manager, transmission_manager, ingestion_manager,
-    timeout, default_timeout, maximum_timeout):
-  """Creates an _interfaces.ExpirationManager appropriate for back-side use.
-
-  Args:
-    lock: The operation-wide lock.
-    termination_manager: The _interfaces.TerminationManager for the operation.
-    transmission_manager: The _interfaces.TransmissionManager for the
-      operation.
-    ingestion_manager: The _interfaces.IngestionManager for the operation.
-    timeout: A length of time in seconds to allow for the operation to run. May
-      be None in which case default_timeout will be used.
-    default_timeout: The default length of time in seconds to allow for the
-      operation to run if the front-side customer has not specified such a value
-      (or if the value they specified is not yet known).
-    maximum_timeout: The maximum length of time in seconds to allow for the
-      operation to run.
-
-  Returns:
-    An _interfaces.ExpirationManager appropriate for back-side use.
-  """
-  commencement = time.time()
-  expiration_manager = _ExpirationManager(
-      lock, termination_manager, transmission_manager, ingestion_manager,
-      commencement, default_timeout if timeout is None else timeout,
-      maximum_timeout)
-  expiration_manager.start()
-  return expiration_manager
diff --git a/src/python/grpcio/grpc/framework/base/_ingestion.py b/src/python/grpcio/grpc/framework/base/_ingestion.py
deleted file mode 100644
index c9b10acb77..0000000000
--- a/src/python/grpcio/grpc/framework/base/_ingestion.py
+++ /dev/null
@@ -1,443 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for ingestion during an operation."""
-
-import abc
-import collections
-
-import six
-
-from grpc.framework.base import _constants
-from grpc.framework.base import _interfaces
-from grpc.framework.base import exceptions
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import callable_util
-from grpc.framework.foundation import stream
-
-_CREATE_CONSUMER_EXCEPTION_LOG_MESSAGE = 'Exception initializing ingestion!'
-_CONSUME_EXCEPTION_LOG_MESSAGE = 'Exception during ingestion!'
-
-
-class _ConsumerCreation(collections.namedtuple(
-    '_ConsumerCreation', ('consumer', 'remote_error', 'abandoned'))):
-  """A sum type for the outcome of ingestion initialization.
-
-  Either consumer will be non-None, remote_error will be True, or abandoned will
-  be True.
-
-  Attributes:
-    consumer: A stream.Consumer for ingesting payloads.
-    remote_error: A boolean indicating that the consumer could not be created
-      due to an error on the remote side of the operation.
-    abandoned: A boolean indicating that the consumer creation was abandoned.
-  """
-
-
-class _EmptyConsumer(stream.Consumer):
-  """A no-operative stream.Consumer that ignores all inputs and calls."""
-
-  def consume(self, value):
-    """See stream.Consumer.consume for specification."""
-
-  def terminate(self):
-    """See stream.Consumer.terminate for specification."""
-
-  def consume_and_terminate(self, value):
-    """See stream.Consumer.consume_and_terminate for specification."""
-
-
-class _ConsumerCreator(six.with_metaclass(abc.ABCMeta)):
-  """Common specification of different consumer-creating behavior."""
-
-  @abc.abstractmethod
-  def create_consumer(self, requirement):
-    """Creates the stream.Consumer to which customer payloads will be delivered.
-
-    Any exceptions raised by this method should be attributed to and treated as
-    defects in the serviced or servicer code called by this method.
-
-    Args:
-      requirement: A value required by this _ConsumerCreator for consumer
-        creation.
-
-    Returns:
-      A _ConsumerCreation describing the result of consumer creation.
-    """
-    raise NotImplementedError()
-
-
-class _FrontConsumerCreator(_ConsumerCreator):
-  """A _ConsumerCreator appropriate for front-side use."""
-
-  def __init__(self, subscription, operation_context):
-    """Constructor.
-
-    Args:
-      subscription: The serviced's interfaces.ServicedSubscription for the
-        operation.
-      operation_context: The interfaces.OperationContext object for the
-        operation.
-    """
-    self._subscription = subscription
-    self._operation_context = operation_context
-
-  def create_consumer(self, requirement):
-    """See _ConsumerCreator.create_consumer for specification."""
-    if self._subscription.kind is interfaces.ServicedSubscription.Kind.FULL:
-      try:
-        return _ConsumerCreation(
-            self._subscription.ingestor.consumer(self._operation_context),
-            False, False)
-      except abandonment.Abandoned:
-        return _ConsumerCreation(None, False, True)
-    else:
-      return _ConsumerCreation(_EmptyConsumer(), False, False)
-
-
-class _BackConsumerCreator(_ConsumerCreator):
-  """A _ConsumerCreator appropriate for back-side use."""
-
-  def __init__(self, servicer, operation_context, emission_consumer):
-    """Constructor.
-
-    Args:
-      servicer: The interfaces.Servicer that will service the operation.
-      operation_context: The interfaces.OperationContext object for the
-        operation.
-      emission_consumer: The stream.Consumer object to which payloads emitted
-        from the operation will be passed.
-    """
-    self._servicer = servicer
-    self._operation_context = operation_context
-    self._emission_consumer = emission_consumer
-
-  def create_consumer(self, requirement):
-    """See _ConsumerCreator.create_consumer for full specification.
-
-    Args:
-      requirement: The name of the Servicer method to be called during this
-        operation.
-
-    Returns:
-      A _ConsumerCreation describing the result of consumer creation.
-    """
-    try:
-      return _ConsumerCreation(
-          self._servicer.service(
-              requirement, self._operation_context, self._emission_consumer),
-          False, False)
-    except exceptions.NoSuchMethodError:
-      return _ConsumerCreation(None, True, False)
-    except abandonment.Abandoned:
-      return _ConsumerCreation(None, False, True)
-
-
-class _WrappedConsumer(object):
-  """Wraps a consumer to catch the exceptions that it is allowed to throw."""
-
-  def __init__(self, consumer):
-    """Constructor.
-
-    Args:
-      consumer: A stream.Consumer that may raise abandonment.Abandoned from any
-        of its methods.
-    """
-    self._consumer = consumer
-
-  def moar(self, payload, complete):
-    """Makes progress with the wrapped consumer.
-
-    This method catches all exceptions allowed to be thrown by the wrapped
-    consumer. Any exceptions raised by this method should be blamed on the
-    customer-supplied consumer.
-
-    Args:
-      payload: A customer-significant payload object. May be None only if
-        complete is True.
-      complete: Whether or not the end of the payload sequence has been reached.
-        Must be True if payload is None.
-
-    Returns:
-      True if the wrapped consumer made progress or False if the wrapped
-        consumer raised abandonment.Abandoned to indicate its abandonment of
-        progress.
-    """
-    try:
-      if payload is None:
-        self._consumer.terminate()
-      elif complete:
-        self._consumer.consume_and_terminate(payload)
-      else:
-        self._consumer.consume(payload)
-      return True
-    except abandonment.Abandoned:
-      return False
-
-
-class _IngestionManager(_interfaces.IngestionManager):
-  """An implementation of _interfaces.IngestionManager."""
-
-  def __init__(
-      self, lock, pool, consumer_creator, failure_outcome, termination_manager,
-      transmission_manager):
-    """Constructor.
-
-    Args:
-      lock: The operation-wide lock.
-      pool: A thread pool in which to execute customer code.
-      consumer_creator: A _ConsumerCreator wrapping the portion of customer code
-        that when called returns the stream.Consumer with which the customer
-        code will ingest payload values.
-      failure_outcome: Whichever one of
-        interfaces.Outcome.SERVICED_FAILURE or
-        interfaces.Outcome.SERVICER_FAILURE describes local failure of
-        customer code.
-      termination_manager: The _interfaces.TerminationManager for the operation.
-      transmission_manager: The _interfaces.TransmissionManager for the
-        operation.
-    """
-    self._lock = lock
-    self._pool = pool
-    self._consumer_creator = consumer_creator
-    self._failure_outcome = failure_outcome
-    self._termination_manager = termination_manager
-    self._transmission_manager = transmission_manager
-    self._expiration_manager = None
-
-    self._wrapped_ingestion_consumer = None
-    self._pending_ingestion = []
-    self._ingestion_complete = False
-    self._processing = False
-
-  def set_expiration_manager(self, expiration_manager):
-    self._expiration_manager = expiration_manager
-
-  def _abort_internal_only(self):
-    self._wrapped_ingestion_consumer = None
-    self._pending_ingestion = None
-
-  def _abort_and_notify(self, outcome):
-    self._abort_internal_only()
-    self._termination_manager.abort(outcome)
-    self._transmission_manager.abort(outcome)
-    self._expiration_manager.abort()
-
-  def _next(self):
-    """Computes the next step for ingestion.
-
-    Returns:
-      A payload, complete, continue triplet indicating what payload (if any) is
-        available to feed into customer code, whether or not the sequence of
-        payloads has terminated, and whether or not there is anything
-        immediately actionable to call customer code to do.
-    """
-    if self._pending_ingestion is None:
-      return None, False, False
-    elif self._pending_ingestion:
-      payload = self._pending_ingestion.pop(0)
-      complete = self._ingestion_complete and not self._pending_ingestion
-      return payload, complete, True
-    elif self._ingestion_complete:
-      return None, True, True
-    else:
-      return None, False, False
-
-  def _process(self, wrapped_ingestion_consumer, payload, complete):
-    """A method to call to execute customer code.
-
-    This object's lock must *not* be held when calling this method.
-
-    Args:
-      wrapped_ingestion_consumer: The _WrappedConsumer with which to pass
-        payloads to customer code.
-      payload: A customer payload. May be None only if complete is True.
-      complete: Whether or not the sequence of payloads to pass to the customer
-        has concluded.
-    """
-    while True:
-      consumption_outcome = callable_util.call_logging_exceptions(
-          wrapped_ingestion_consumer.moar, _CONSUME_EXCEPTION_LOG_MESSAGE,
-          payload, complete)
-      if consumption_outcome.exception is None:
-        if consumption_outcome.return_value:
-          with self._lock:
-            if complete:
-              self._pending_ingestion = None
-              self._termination_manager.ingestion_complete()
-              return
-            else:
-              payload, complete, moar = self._next()
-              if not moar:
-                self._processing = False
-                return
-        else:
-          with self._lock:
-            if self._pending_ingestion is not None:
-              self._abort_and_notify(self._failure_outcome)
-            self._processing = False
-            return
-      else:
-        with self._lock:
-          self._abort_and_notify(self._failure_outcome)
-          self._processing = False
-          return
-
-  def start(self, requirement):
-    if self._pending_ingestion is not None:
-      def initialize():
-        consumer_creation_outcome = callable_util.call_logging_exceptions(
-            self._consumer_creator.create_consumer,
-            _CREATE_CONSUMER_EXCEPTION_LOG_MESSAGE, requirement)
-        if consumer_creation_outcome.return_value is None:
-          with self._lock:
-            self._abort_and_notify(self._failure_outcome)
-            self._processing = False
-        elif consumer_creation_outcome.return_value.remote_error:
-          with self._lock:
-            self._abort_and_notify(interfaces.Outcome.RECEPTION_FAILURE)
-            self._processing = False
-        elif consumer_creation_outcome.return_value.abandoned:
-          with self._lock:
-            if self._pending_ingestion is not None:
-              self._abort_and_notify(self._failure_outcome)
-            self._processing = False
-        else:
-          wrapped_ingestion_consumer = _WrappedConsumer(
-              consumer_creation_outcome.return_value.consumer)
-          with self._lock:
-            self._wrapped_ingestion_consumer = wrapped_ingestion_consumer
-            payload, complete, moar = self._next()
-            if not moar:
-              self._processing = False
-              return
-
-          self._process(wrapped_ingestion_consumer, payload, complete)
-
-      self._pool.submit(
-          callable_util.with_exceptions_logged(
-              initialize, _constants.INTERNAL_ERROR_LOG_MESSAGE))
-      self._processing = True
-
-  def consume(self, payload):
-    if self._ingestion_complete:
-      self._abort_and_notify(self._failure_outcome)
-    elif self._pending_ingestion is not None:
-      if self._processing:
-        self._pending_ingestion.append(payload)
-      else:
-        self._pool.submit(
-            callable_util.with_exceptions_logged(
-                self._process, _constants.INTERNAL_ERROR_LOG_MESSAGE),
-            self._wrapped_ingestion_consumer, payload, False)
-        self._processing = True
-
-  def terminate(self):
-    if self._ingestion_complete:
-      self._abort_and_notify(self._failure_outcome)
-    else:
-      self._ingestion_complete = True
-      if self._pending_ingestion is not None and not self._processing:
-        self._pool.submit(
-            callable_util.with_exceptions_logged(
-                self._process, _constants.INTERNAL_ERROR_LOG_MESSAGE),
-            self._wrapped_ingestion_consumer, None, True)
-        self._processing = True
-
-  def consume_and_terminate(self, payload):
-    if self._ingestion_complete:
-      self._abort_and_notify(self._failure_outcome)
-    else:
-      self._ingestion_complete = True
-      if self._pending_ingestion is not None:
-        if self._processing:
-          self._pending_ingestion.append(payload)
-        else:
-          self._pool.submit(
-              callable_util.with_exceptions_logged(
-                  self._process, _constants.INTERNAL_ERROR_LOG_MESSAGE),
-              self._wrapped_ingestion_consumer, payload, True)
-          self._processing = True
-
-  def abort(self):
-    """See _interfaces.IngestionManager.abort for specification."""
-    self._abort_internal_only()
-
-
-def front_ingestion_manager(
-    lock, pool, subscription, termination_manager, transmission_manager,
-    operation_context):
-  """Creates an IngestionManager appropriate for front-side use.
-
-  Args:
-    lock: The operation-wide lock.
-    pool: A thread pool in which to execute customer code.
-    subscription: A interfaces.ServicedSubscription indicating the
-      customer's interest in the results of the operation.
-    termination_manager: The _interfaces.TerminationManager for the operation.
-    transmission_manager: The _interfaces.TransmissionManager for the
-      operation.
-    operation_context: A interfaces.OperationContext for the operation.
-
-  Returns:
-    An IngestionManager appropriate for front-side use.
-  """
-  ingestion_manager = _IngestionManager(
-      lock, pool, _FrontConsumerCreator(subscription, operation_context),
-      interfaces.Outcome.SERVICED_FAILURE, termination_manager,
-      transmission_manager)
-  ingestion_manager.start(None)
-  return ingestion_manager
-
-
-def back_ingestion_manager(
-    lock, pool, servicer, termination_manager, transmission_manager,
-    operation_context, emission_consumer):
-  """Creates an IngestionManager appropriate for back-side use.
-
-  Args:
-    lock: The operation-wide lock.
-    pool: A thread pool in which to execute customer code.
-    servicer: A interfaces.Servicer for servicing the operation.
-    termination_manager: The _interfaces.TerminationManager for the operation.
-    transmission_manager: The _interfaces.TransmissionManager for the
-      operation.
-    operation_context: A interfaces.OperationContext for the operation.
-    emission_consumer: The _interfaces.EmissionConsumer for the operation.
-
-  Returns:
-    An IngestionManager appropriate for back-side use.
-  """
-  ingestion_manager = _IngestionManager(
-      lock, pool, _BackConsumerCreator(
-          servicer, operation_context, emission_consumer),
-      interfaces.Outcome.SERVICER_FAILURE, termination_manager,
-      transmission_manager)
-  return ingestion_manager
diff --git a/src/python/grpcio/grpc/framework/base/_interfaces.py b/src/python/grpcio/grpc/framework/base/_interfaces.py
deleted file mode 100644
index 6bb9837c4a..0000000000
--- a/src/python/grpcio/grpc/framework/base/_interfaces.py
+++ /dev/null
@@ -1,266 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Package-internal interfaces."""
-
-import abc
-
-import six
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.base import interfaces  # pylint: disable=unused-import
-from grpc.framework.foundation import stream
-
-
-class TerminationManager(six.with_metaclass(abc.ABCMeta)):
-  """An object responsible for handling the termination of an operation."""
-
-  @abc.abstractmethod
-  def set_expiration_manager(self, expiration_manager):
-    """Sets the ExpirationManager with which this object will cooperate."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def is_active(self):
-    """Reports whether or not the operation is active.
-
-    Returns:
-      True if the operation is active or False if the operation has terminated.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def add_callback(self, callback):
-    """Registers a callback to be called on operation termination.
-
-    If the operation has already terminated, the callback will be called
-    immediately.
-
-    Args:
-      callback: A callable that will be passed an interfaces.Outcome value.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def emission_complete(self):
-    """Indicates that emissions from customer code have completed."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def transmission_complete(self):
-    """Indicates that transmissions to the remote end are complete."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def ingestion_complete(self):
-    """Indicates that customer code ingestion of received values is complete."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def abort(self, outcome):
-    """Indicates that the operation must abort for the indicated reason.
-
-    Args:
-      outcome: An interfaces.Outcome indicating operation abortion.
-    """
-    raise NotImplementedError()
-
-
-class TransmissionManager(six.with_metaclass(abc.ABCMeta)):
-  """A manager responsible for transmitting to the other end of an operation."""
-
-  @abc.abstractmethod
-  def inmit(self, emission, complete):
-    """Accepts a value for transmission to the other end of the operation.
-
-    Args:
-      emission: A value of some significance to the customer to be transmitted
-        to the other end of the operation. May be None only if complete is True.
-      complete: A boolean that if True indicates that customer code has emitted
-        all values it intends to emit.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def abort(self, outcome):
-    """Indicates that the operation has aborted for the indicated reason.
-
-    Args:
-      outcome: An interfaces.Outcome indicating operation abortion.
-    """
-    raise NotImplementedError()
-
-
-class EmissionManager(six.with_metaclass(abc.ABCMeta, stream.Consumer)):
-  """A manager of values emitted by customer code."""
-
-  @abc.abstractmethod
-  def set_ingestion_manager_and_expiration_manager(
-      self, ingestion_manager, expiration_manager):
-    """Sets two other objects with which this EmissionManager will cooperate.
-
-    Args:
-      ingestion_manager: The IngestionManager for the operation.
-      expiration_manager: The ExpirationManager for the operation.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def consume(self, value):
-    """Accepts a value emitted by customer code.
-
-    This method should only be called by customer code.
-
-    Args:
-      value: Any value of significance to the customer.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def terminate(self):
-    """Indicates that no more values will be emitted by customer code.
-
-    This method should only be called by customer code.
-
-    Implementations of this method may be idempotent and forgive customer code
-    calling this method more than once.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def consume_and_terminate(self, value):
-    """Accepts the last value emitted by customer code.
-
-    This method should only be called by customer code.
-
-    Args:
-      value: Any value of significance to the customer.
-    """
-    raise NotImplementedError()
-
-
-class IngestionManager(six.with_metaclass(abc.ABCMeta, stream.Consumer)):
-  """A manager responsible for executing customer code."""
-
-  @abc.abstractmethod
-  def set_expiration_manager(self, expiration_manager):
-    """Sets the ExpirationManager with which this object will cooperate."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def start(self, requirement):
-    """Commences execution of customer code.
-
-    Args:
-      requirement: Some value unavailable at the time of this object's
-        construction that is required to begin executing customer code.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def consume(self, payload):
-    """Accepts a customer-significant value to be supplied to customer code.
-
-    Args:
-      payload: Some customer-significant value.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def terminate(self):
-    """Indicates the end of values to be supplied to customer code."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def consume_and_terminate(self, payload):
-    """Accepts the last value to be supplied to customer code.
-
-    Args:
-      payload: Some customer-significant value (and the last such value).
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def abort(self):
-    """Indicates to this manager that the operation has aborted."""
-    raise NotImplementedError()
-
-
-class ExpirationManager(six.with_metaclass(abc.ABCMeta)):
-  """A manager responsible for aborting the operation if it runs out of time."""
-
-  @abc.abstractmethod
-  def change_timeout(self, timeout):
-    """Changes the timeout allotted for the operation.
-
-    Operation duration is always measure from the beginning of the operation;
-    calling this method changes the operation's allotted time to timeout total
-    seconds, not timeout seconds from the time of this method call.
-
-    Args:
-      timeout: A length of time in seconds to allow for the operation.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def deadline(self):
-    """Returns the time until which the operation is allowed to run.
-
-    Returns:
-      The time (seconds since the epoch) at which the operation will expire.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def abort(self):
-    """Indicates to this manager that the operation has aborted."""
-    raise NotImplementedError()
-
-
-class ReceptionManager(six.with_metaclass(abc.ABCMeta)):
-  """A manager responsible for receiving tickets from the other end."""
-
-  @abc.abstractmethod
-  def receive_ticket(self, ticket):
-    """Handle a ticket from the other side of the operation.
-
-    Args:
-      ticket: An interfaces.BackToFrontTicket or interfaces.FrontToBackTicket
-        appropriate to this end of the operation and this object.
-    """
-    raise NotImplementedError()
-
-
-class CancellationManager(six.with_metaclass(abc.ABCMeta)):
-  """A manager of operation cancellation."""
-
-  @abc.abstractmethod
-  def cancel(self):
-    """Cancels the operation."""
-    raise NotImplementedError()
diff --git a/src/python/grpcio/grpc/framework/base/_reception.py b/src/python/grpcio/grpc/framework/base/_reception.py
deleted file mode 100644
index a59c5165f9..0000000000
--- a/src/python/grpcio/grpc/framework/base/_reception.py
+++ /dev/null
@@ -1,400 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for ticket reception."""
-
-import abc
-
-import six
-
-from grpc.framework.base import interfaces
-from grpc.framework.base import _interfaces
-
-_INITIAL_FRONT_TO_BACK_TICKET_KINDS = (
-    interfaces.FrontToBackTicket.Kind.COMMENCEMENT,
-    interfaces.FrontToBackTicket.Kind.ENTIRE,
-)
-
-
-class _Receiver(six.with_metaclass(abc.ABCMeta)):
-  """Common specification of different ticket-handling behavior."""
-
-  @abc.abstractmethod
-  def abort_if_abortive(self, ticket):
-    """Aborts the operation if the ticket is abortive.
-
-    Args:
-      ticket: A just-arrived ticket.
-
-    Returns:
-      A boolean indicating whether or not this Receiver aborted the operation
-        based on the ticket.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def receive(self, ticket):
-    """Handles a just-arrived ticket.
-
-    Args:
-      ticket: A just-arrived ticket.
-
-    Returns:
-      A boolean indicating whether or not the ticket was terminal (i.e. whether
-        or not non-abortive tickets are legal after this one).
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def reception_failure(self):
-    """Aborts the operation with an indication of reception failure."""
-    raise NotImplementedError()
-
-
-def _abort(
-    outcome, termination_manager, transmission_manager, ingestion_manager,
-    expiration_manager):
-  """Indicates abortion with the given outcome to the given managers."""
-  termination_manager.abort(outcome)
-  transmission_manager.abort(outcome)
-  ingestion_manager.abort()
-  expiration_manager.abort()
-
-
-def _abort_if_abortive(
-    ticket, abortive, termination_manager, transmission_manager,
-    ingestion_manager, expiration_manager):
-  """Determines a ticket's being abortive and if so aborts the operation.
-
-  Args:
-    ticket: A just-arrived ticket.
-    abortive: A callable that takes a ticket and returns an interfaces.Outcome
-      indicating that the operation should be aborted or None indicating that
-      the operation should not be aborted.
-    termination_manager: The operation's _interfaces.TerminationManager.
-    transmission_manager: The operation's _interfaces.TransmissionManager.
-    ingestion_manager: The operation's _interfaces.IngestionManager.
-    expiration_manager: The operation's _interfaces.ExpirationManager.
-
-  Returns:
-    True if the operation was aborted; False otherwise.
-  """
-  abortion_outcome = abortive(ticket)
-  if abortion_outcome is None:
-    return False
-  else:
-    _abort(
-        abortion_outcome, termination_manager, transmission_manager,
-        ingestion_manager, expiration_manager)
-    return True
-
-
-def _reception_failure(
-    termination_manager, transmission_manager, ingestion_manager,
-    expiration_manager):
-  """Aborts the operation with an indication of reception failure."""
-  _abort(
-      interfaces.Outcome.RECEPTION_FAILURE, termination_manager,
-      transmission_manager, ingestion_manager, expiration_manager)
-
-
-class _BackReceiver(_Receiver):
-  """Ticket-handling specific to the back side of an operation."""
-
-  def __init__(
-      self, termination_manager, transmission_manager, ingestion_manager,
-      expiration_manager):
-    """Constructor.
-
-    Args:
-      termination_manager: The operation's _interfaces.TerminationManager.
-      transmission_manager: The operation's _interfaces.TransmissionManager.
-      ingestion_manager: The operation's _interfaces.IngestionManager.
-      expiration_manager: The operation's _interfaces.ExpirationManager.
-    """
-    self._termination_manager = termination_manager
-    self._transmission_manager = transmission_manager
-    self._ingestion_manager = ingestion_manager
-    self._expiration_manager = expiration_manager
-
-    self._first_ticket_seen = False
-    self._last_ticket_seen = False
-
-  def _abortive(self, ticket):
-    """Determines whether or not (and if so, how) a ticket is abortive.
-
-    Args:
-      ticket: A just-arrived ticket.
-
-    Returns:
-      An interfaces.Outcome value describing operation abortion if the
-        ticket is abortive or None if the ticket is not abortive.
-    """
-    if ticket.kind is interfaces.FrontToBackTicket.Kind.CANCELLATION:
-      return interfaces.Outcome.CANCELLED
-    elif ticket.kind is interfaces.FrontToBackTicket.Kind.EXPIRATION:
-      return interfaces.Outcome.EXPIRED
-    elif ticket.kind is interfaces.FrontToBackTicket.Kind.SERVICED_FAILURE:
-      return interfaces.Outcome.SERVICED_FAILURE
-    elif ticket.kind is interfaces.FrontToBackTicket.Kind.RECEPTION_FAILURE:
-      return interfaces.Outcome.SERVICED_FAILURE
-    elif (ticket.kind in _INITIAL_FRONT_TO_BACK_TICKET_KINDS and
-          self._first_ticket_seen):
-      return interfaces.Outcome.RECEPTION_FAILURE
-    elif self._last_ticket_seen:
-      return interfaces.Outcome.RECEPTION_FAILURE
-    else:
-      return None
-
-  def abort_if_abortive(self, ticket):
-    """See _Receiver.abort_if_abortive for specification."""
-    return _abort_if_abortive(
-        ticket, self._abortive, self._termination_manager,
-        self._transmission_manager, self._ingestion_manager,
-        self._expiration_manager)
-
-  def receive(self, ticket):
-    """See _Receiver.receive for specification."""
-    if ticket.timeout is not None:
-      self._expiration_manager.change_timeout(ticket.timeout)
-
-    if ticket.kind is interfaces.FrontToBackTicket.Kind.COMMENCEMENT:
-      self._first_ticket_seen = True
-      self._ingestion_manager.start(ticket.name)
-      if ticket.payload is not None:
-        self._ingestion_manager.consume(ticket.payload)
-    elif ticket.kind is interfaces.FrontToBackTicket.Kind.CONTINUATION:
-      self._ingestion_manager.consume(ticket.payload)
-    elif ticket.kind is interfaces.FrontToBackTicket.Kind.COMPLETION:
-      self._last_ticket_seen = True
-      if ticket.payload is None:
-        self._ingestion_manager.terminate()
-      else:
-        self._ingestion_manager.consume_and_terminate(ticket.payload)
-    else:
-      self._first_ticket_seen = True
-      self._last_ticket_seen = True
-      self._ingestion_manager.start(ticket.name)
-      if ticket.payload is None:
-        self._ingestion_manager.terminate()
-      else:
-        self._ingestion_manager.consume_and_terminate(ticket.payload)
-
-  def reception_failure(self):
-    """See _Receiver.reception_failure for specification."""
-    _reception_failure(
-        self._termination_manager, self._transmission_manager,
-        self._ingestion_manager, self._expiration_manager)
-
-
-class _FrontReceiver(_Receiver):
-  """Ticket-handling specific to the front side of an operation."""
-
-  def __init__(
-      self, termination_manager, transmission_manager, ingestion_manager,
-      expiration_manager):
-    """Constructor.
-
-    Args:
-      termination_manager: The operation's _interfaces.TerminationManager.
-      transmission_manager: The operation's _interfaces.TransmissionManager.
-      ingestion_manager: The operation's _interfaces.IngestionManager.
-      expiration_manager: The operation's _interfaces.ExpirationManager.
-    """
-    self._termination_manager = termination_manager
-    self._transmission_manager = transmission_manager
-    self._ingestion_manager = ingestion_manager
-    self._expiration_manager = expiration_manager
-
-    self._last_ticket_seen = False
-
-  def _abortive(self, ticket):
-    """Determines whether or not (and if so, how) a ticket is abortive.
-
-    Args:
-      ticket: A just-arrived ticket.
-
-    Returns:
-      An interfaces.Outcome value describing operation abortion if the ticket
-        is abortive or None if the ticket is not abortive.
-    """
-    if ticket.kind is interfaces.BackToFrontTicket.Kind.CANCELLATION:
-      return interfaces.Outcome.CANCELLED
-    elif ticket.kind is interfaces.BackToFrontTicket.Kind.EXPIRATION:
-      return interfaces.Outcome.EXPIRED
-    elif ticket.kind is interfaces.BackToFrontTicket.Kind.SERVICER_FAILURE:
-      return interfaces.Outcome.SERVICER_FAILURE
-    elif ticket.kind is interfaces.BackToFrontTicket.Kind.RECEPTION_FAILURE:
-      return interfaces.Outcome.SERVICER_FAILURE
-    elif self._last_ticket_seen:
-      return interfaces.Outcome.RECEPTION_FAILURE
-    else:
-      return None
-
-  def abort_if_abortive(self, ticket):
-    """See _Receiver.abort_if_abortive for specification."""
-    return _abort_if_abortive(
-        ticket, self._abortive, self._termination_manager,
-        self._transmission_manager, self._ingestion_manager,
-        self._expiration_manager)
-
-  def receive(self, ticket):
-    """See _Receiver.receive for specification."""
-    if ticket.kind is interfaces.BackToFrontTicket.Kind.CONTINUATION:
-      self._ingestion_manager.consume(ticket.payload)
-    elif ticket.kind is interfaces.BackToFrontTicket.Kind.COMPLETION:
-      self._last_ticket_seen = True
-      if ticket.payload is None:
-        self._ingestion_manager.terminate()
-      else:
-        self._ingestion_manager.consume_and_terminate(ticket.payload)
-
-  def reception_failure(self):
-    """See _Receiver.reception_failure for specification."""
-    _reception_failure(
-        self._termination_manager, self._transmission_manager,
-        self._ingestion_manager, self._expiration_manager)
-
-
-class _ReceptionManager(_interfaces.ReceptionManager):
-  """A ReceptionManager based around a _Receiver passed to it."""
-
-  def __init__(self, lock, receiver):
-    """Constructor.
-
-    Args:
-      lock: The operation-servicing-wide lock object.
-      receiver: A _Receiver responsible for handling received tickets.
-    """
-    self._lock = lock
-    self._receiver = receiver
-
-    self._lowest_unseen_sequence_number = 0
-    self._out_of_sequence_tickets = {}
-    self._completed_sequence_number = None
-    self._aborted = False
-
-  def _sequence_failure(self, ticket):
-    """Determines a just-arrived ticket's sequential legitimacy.
-
-    Args:
-      ticket: A just-arrived ticket.
-
-    Returns:
-      True if the ticket is sequentially legitimate; False otherwise.
-    """
-    if ticket.sequence_number < self._lowest_unseen_sequence_number:
-      return True
-    elif ticket.sequence_number in self._out_of_sequence_tickets:
-      return True
-    elif (self._completed_sequence_number is not None and
-          self._completed_sequence_number <= ticket.sequence_number):
-      return True
-    else:
-      return False
-
-  def _process(self, ticket):
-    """Process those tickets ready to be processed.
-
-    Args:
-      ticket: A just-arrived ticket the sequence number of which matches this
-        _ReceptionManager's _lowest_unseen_sequence_number field.
-    """
-    while True:
-      completed = self._receiver.receive(ticket)
-      if completed:
-        self._out_of_sequence_tickets.clear()
-        self._completed_sequence_number = ticket.sequence_number
-        self._lowest_unseen_sequence_number = ticket.sequence_number + 1
-        return
-      else:
-        next_ticket = self._out_of_sequence_tickets.pop(
-            ticket.sequence_number + 1, None)
-        if next_ticket is None:
-          self._lowest_unseen_sequence_number = ticket.sequence_number + 1
-          return
-        else:
-          ticket = next_ticket
-
-  def receive_ticket(self, ticket):
-    """See _interfaces.ReceptionManager.receive_ticket for specification."""
-    with self._lock:
-      if self._aborted:
-        return
-      elif self._sequence_failure(ticket):
-        self._receiver.reception_failure()
-        self._aborted = True
-      elif self._receiver.abort_if_abortive(ticket):
-        self._aborted = True
-      elif ticket.sequence_number == self._lowest_unseen_sequence_number:
-        self._process(ticket)
-      else:
-        self._out_of_sequence_tickets[ticket.sequence_number] = ticket
-
-
-def front_reception_manager(
-    lock, termination_manager, transmission_manager, ingestion_manager,
-    expiration_manager):
-  """Creates a _interfaces.ReceptionManager for front-side use.
-
-  Args:
-    lock: The operation-servicing-wide lock object.
-    termination_manager: The operation's _interfaces.TerminationManager.
-    transmission_manager: The operation's _interfaces.TransmissionManager.
-    ingestion_manager: The operation's _interfaces.IngestionManager.
-    expiration_manager: The operation's _interfaces.ExpirationManager.
-
-  Returns:
-    A _interfaces.ReceptionManager appropriate for front-side use.
-  """
-  return _ReceptionManager(
-      lock, _FrontReceiver(
-          termination_manager, transmission_manager, ingestion_manager,
-          expiration_manager))
-
-
-def back_reception_manager(
-    lock, termination_manager, transmission_manager, ingestion_manager,
-    expiration_manager):
-  """Creates a _interfaces.ReceptionManager for back-side use.
-
-  Args:
-    lock: The operation-servicing-wide lock object.
-    termination_manager: The operation's _interfaces.TerminationManager.
-    transmission_manager: The operation's _interfaces.TransmissionManager.
-    ingestion_manager: The operation's _interfaces.IngestionManager.
-    expiration_manager: The operation's _interfaces.ExpirationManager.
-
-  Returns:
-    A _interfaces.ReceptionManager appropriate for back-side use.
-  """
-  return _ReceptionManager(
-      lock, _BackReceiver(
-          termination_manager, transmission_manager, ingestion_manager,
-          expiration_manager))
diff --git a/src/python/grpcio/grpc/framework/base/_termination.py b/src/python/grpcio/grpc/framework/base/_termination.py
deleted file mode 100644
index ddcbc60293..0000000000
--- a/src/python/grpcio/grpc/framework/base/_termination.py
+++ /dev/null
@@ -1,204 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for operation termination."""
-
-import enum
-
-from grpc.framework.base import _constants
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-_CALLBACK_EXCEPTION_LOG_MESSAGE = 'Exception calling termination callback!'
-
-
-@enum.unique
-class _Requirement(enum.Enum):
-  """Symbols indicating events required for termination."""
-
-  EMISSION = 'emission'
-  TRANSMISSION = 'transmission'
-  INGESTION = 'ingestion'
-
-_FRONT_NOT_LISTENING_REQUIREMENTS = (_Requirement.TRANSMISSION,)
-_BACK_NOT_LISTENING_REQUIREMENTS = (
-    _Requirement.EMISSION, _Requirement.INGESTION,)
-_LISTENING_REQUIREMENTS = (
-    _Requirement.TRANSMISSION, _Requirement.INGESTION,)
-
-
-class _TerminationManager(_interfaces.TerminationManager):
-  """An implementation of _interfaces.TerminationManager."""
-
-  def __init__(
-      self, work_pool, utility_pool, action, requirements, local_failure):
-    """Constructor.
-
-    Args:
-      work_pool: A thread pool in which customer work will be done.
-      utility_pool: A thread pool in which work utility work will be done.
-      action: An action to call on operation termination.
-      requirements: A combination of _Requirement values identifying what
-        must finish for the operation to be considered completed.
-      local_failure: An interfaces.Outcome specifying what constitutes local
-        failure of customer work.
-    """
-    self._work_pool = work_pool
-    self._utility_pool = utility_pool
-    self._action = action
-    self._local_failure = local_failure
-    self._has_locally_failed = False
-    self._expiration_manager = None
-
-    self._outstanding_requirements = set(requirements)
-    self._outcome = None
-    self._callbacks = []
-
-  def set_expiration_manager(self, expiration_manager):
-    self._expiration_manager = expiration_manager
-
-  def _terminate(self, outcome):
-    """Terminates the operation.
-
-    Args:
-      outcome: An interfaces.Outcome describing the outcome of the operation.
-    """
-    self._expiration_manager.abort()
-    self._outstanding_requirements = None
-    callbacks = list(self._callbacks)
-    self._callbacks = None
-    self._outcome = outcome
-
-    act = callable_util.with_exceptions_logged(
-        self._action, _constants.INTERNAL_ERROR_LOG_MESSAGE)
-
-    if self._has_locally_failed:
-      self._utility_pool.submit(act, outcome)
-    else:
-      def call_callbacks_and_act(callbacks, outcome):
-        for callback in callbacks:
-          callback_outcome = callable_util.call_logging_exceptions(
-              callback, _CALLBACK_EXCEPTION_LOG_MESSAGE, outcome)
-          if callback_outcome.exception is not None:
-            outcome = self._local_failure
-            break
-        self._utility_pool.submit(act, outcome)
-
-      self._work_pool.submit(callable_util.with_exceptions_logged(
-          call_callbacks_and_act,
-          _constants.INTERNAL_ERROR_LOG_MESSAGE),
-                             callbacks, outcome)
-
-  def is_active(self):
-    """See _interfaces.TerminationManager.is_active for specification."""
-    return self._outstanding_requirements is not None
-
-  def add_callback(self, callback):
-    """See _interfaces.TerminationManager.add_callback for specification."""
-    if not self._has_locally_failed:
-      if self._outstanding_requirements is None:
-        self._work_pool.submit(
-            callable_util.with_exceptions_logged(
-                callback, _CALLBACK_EXCEPTION_LOG_MESSAGE), self._outcome)
-      else:
-        self._callbacks.append(callback)
-
-  def emission_complete(self):
-    """See superclass method for specification."""
-    if self._outstanding_requirements is not None:
-      self._outstanding_requirements.discard(_Requirement.EMISSION)
-      if not self._outstanding_requirements:
-        self._terminate(interfaces.Outcome.COMPLETED)
-
-  def transmission_complete(self):
-    """See superclass method for specification."""
-    if self._outstanding_requirements is not None:
-      self._outstanding_requirements.discard(_Requirement.TRANSMISSION)
-      if not self._outstanding_requirements:
-        self._terminate(interfaces.Outcome.COMPLETED)
-
-  def ingestion_complete(self):
-    """See superclass method for specification."""
-    if self._outstanding_requirements is not None:
-      self._outstanding_requirements.discard(_Requirement.INGESTION)
-      if not self._outstanding_requirements:
-        self._terminate(interfaces.Outcome.COMPLETED)
-
-  def abort(self, outcome):
-    """See _interfaces.TerminationManager.abort for specification."""
-    if outcome is self._local_failure:
-      self._has_failed_locally = True
-    if self._outstanding_requirements is not None:
-      self._terminate(outcome)
-
-
-def front_termination_manager(
-    work_pool, utility_pool, action, subscription_kind):
-  """Creates a TerminationManager appropriate for front-side use.
-
-  Args:
-    work_pool: A thread pool in which customer work will be done.
-    utility_pool: A thread pool in which work utility work will be done.
-    action: An action to call on operation termination.
-    subscription_kind: An interfaces.ServicedSubscription.Kind value.
-
-  Returns:
-    A TerminationManager appropriate for front-side use.
-  """
-  if subscription_kind is interfaces.ServicedSubscription.Kind.NONE:
-    requirements = _FRONT_NOT_LISTENING_REQUIREMENTS
-  else:
-    requirements = _LISTENING_REQUIREMENTS
-
-  return _TerminationManager(
-      work_pool, utility_pool, action, requirements,
-      interfaces.Outcome.SERVICED_FAILURE)
-
-
-def back_termination_manager(work_pool, utility_pool, action, subscription_kind):
-  """Creates a TerminationManager appropriate for back-side use.
-
-  Args:
-    work_pool: A thread pool in which customer work will be done.
-    utility_pool: A thread pool in which work utility work will be done.
-    action: An action to call on operation termination.
-    subscription_kind: An interfaces.ServicedSubscription.Kind value.
-
-  Returns:
-    A TerminationManager appropriate for back-side use.
-  """
-  if subscription_kind is interfaces.ServicedSubscription.Kind.NONE:
-    requirements = _BACK_NOT_LISTENING_REQUIREMENTS
-  else:
-    requirements = _LISTENING_REQUIREMENTS
-
-  return _TerminationManager(
-      work_pool, utility_pool, action, requirements,
-      interfaces.Outcome.SERVICER_FAILURE)
diff --git a/src/python/grpcio/grpc/framework/base/_transmission.py b/src/python/grpcio/grpc/framework/base/_transmission.py
deleted file mode 100644
index e2a25626f1..0000000000
--- a/src/python/grpcio/grpc/framework/base/_transmission.py
+++ /dev/null
@@ -1,429 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for ticket transmission during an operation."""
-
-import abc
-
-import six
-
-from grpc.framework.base import _constants
-from grpc.framework.base import _interfaces
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-_TRANSMISSION_EXCEPTION_LOG_MESSAGE = 'Exception during transmission!'
-
-_FRONT_TO_BACK_NO_TRANSMISSION_OUTCOMES = (
-    interfaces.Outcome.SERVICER_FAILURE,
-    )
-_BACK_TO_FRONT_NO_TRANSMISSION_OUTCOMES = (
-    interfaces.Outcome.CANCELLED,
-    interfaces.Outcome.SERVICED_FAILURE,
-    )
-
-_ABORTION_OUTCOME_TO_FRONT_TO_BACK_TICKET_KIND = {
-    interfaces.Outcome.CANCELLED:
-        interfaces.FrontToBackTicket.Kind.CANCELLATION,
-    interfaces.Outcome.EXPIRED:
-        interfaces.FrontToBackTicket.Kind.EXPIRATION,
-    interfaces.Outcome.RECEPTION_FAILURE:
-        interfaces.FrontToBackTicket.Kind.RECEPTION_FAILURE,
-    interfaces.Outcome.TRANSMISSION_FAILURE:
-        interfaces.FrontToBackTicket.Kind.TRANSMISSION_FAILURE,
-    interfaces.Outcome.SERVICED_FAILURE:
-        interfaces.FrontToBackTicket.Kind.SERVICED_FAILURE,
-    interfaces.Outcome.SERVICER_FAILURE:
-        interfaces.FrontToBackTicket.Kind.SERVICER_FAILURE,
-}
-
-_ABORTION_OUTCOME_TO_BACK_TO_FRONT_TICKET_KIND = {
-    interfaces.Outcome.CANCELLED:
-        interfaces.BackToFrontTicket.Kind.CANCELLATION,
-    interfaces.Outcome.EXPIRED:
-        interfaces.BackToFrontTicket.Kind.EXPIRATION,
-    interfaces.Outcome.RECEPTION_FAILURE:
-        interfaces.BackToFrontTicket.Kind.RECEPTION_FAILURE,
-    interfaces.Outcome.TRANSMISSION_FAILURE:
-        interfaces.BackToFrontTicket.Kind.TRANSMISSION_FAILURE,
-    interfaces.Outcome.SERVICED_FAILURE:
-        interfaces.BackToFrontTicket.Kind.SERVICED_FAILURE,
-    interfaces.Outcome.SERVICER_FAILURE:
-        interfaces.BackToFrontTicket.Kind.SERVICER_FAILURE,
-}
-
-
-class _Ticketizer(six.with_metaclass(abc.ABCMeta)):
-  """Common specification of different ticket-creating behavior."""
-
-  @abc.abstractmethod
-  def ticketize(self, operation_id, sequence_number, payload, complete):
-    """Creates a ticket indicating ordinary operation progress.
-
-    Args:
-      operation_id: The operation ID for the current operation.
-      sequence_number: A sequence number for the ticket.
-      payload: A customer payload object. May be None if sequence_number is
-        zero or complete is true.
-      complete: A boolean indicating whether or not the ticket should describe
-        itself as (but for a later indication of operation abortion) the last
-        ticket to be sent.
-
-    Returns:
-      An object of an appropriate type suitable for transmission to the other
-        side of the operation.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def ticketize_abortion(self, operation_id, sequence_number, outcome):
-    """Creates a ticket indicating that the operation is aborted.
-
-    Args:
-      operation_id: The operation ID for the current operation.
-      sequence_number: A sequence number for the ticket.
-      outcome: An interfaces.Outcome value describing the operation abortion.
-
-    Returns:
-      An object of an appropriate type suitable for transmission to the other
-        side of the operation, or None if transmission is not appropriate for
-        the given outcome.
-    """
-    raise NotImplementedError()
-
-
-class _FrontTicketizer(_Ticketizer):
-  """Front-side ticket-creating behavior."""
-
-  def __init__(self, name, subscription_kind, trace_id, timeout):
-    """Constructor.
-
-    Args:
-      name: The name of the operation.
-      subscription_kind: An interfaces.ServicedSubscription.Kind value
-        describing the interest the front has in tickets sent from the back.
-      trace_id: A uuid.UUID identifying a set of related operations to which
-        this operation belongs.
-      timeout: A length of time in seconds to allow for the entire operation.
-    """
-    self._name = name
-    self._subscription_kind = subscription_kind
-    self._trace_id = trace_id
-    self._timeout = timeout
-
-  def ticketize(self, operation_id, sequence_number, payload, complete):
-    """See _Ticketizer.ticketize for specification."""
-    if sequence_number:
-      if complete:
-        kind = interfaces.FrontToBackTicket.Kind.COMPLETION
-      else:
-        kind = interfaces.FrontToBackTicket.Kind.CONTINUATION
-      return interfaces.FrontToBackTicket(
-          operation_id, sequence_number, kind, self._name,
-          self._subscription_kind, self._trace_id, payload, self._timeout)
-    else:
-      if complete:
-        kind = interfaces.FrontToBackTicket.Kind.ENTIRE
-      else:
-        kind = interfaces.FrontToBackTicket.Kind.COMMENCEMENT
-      return interfaces.FrontToBackTicket(
-          operation_id, 0, kind, self._name, self._subscription_kind,
-          self._trace_id, payload, self._timeout)
-
-  def ticketize_abortion(self, operation_id, sequence_number, outcome):
-    """See _Ticketizer.ticketize_abortion for specification."""
-    if outcome in _FRONT_TO_BACK_NO_TRANSMISSION_OUTCOMES:
-      return None
-    else:
-      kind = _ABORTION_OUTCOME_TO_FRONT_TO_BACK_TICKET_KIND[outcome]
-      return interfaces.FrontToBackTicket(
-          operation_id, sequence_number, kind, None, None, None, None, None)
-
-
-class _BackTicketizer(_Ticketizer):
-  """Back-side ticket-creating behavior."""
-
-  def ticketize(self, operation_id, sequence_number, payload, complete):
-    """See _Ticketizer.ticketize for specification."""
-    if complete:
-      kind = interfaces.BackToFrontTicket.Kind.COMPLETION
-    else:
-      kind = interfaces.BackToFrontTicket.Kind.CONTINUATION
-    return interfaces.BackToFrontTicket(
-        operation_id, sequence_number, kind, payload)
-
-  def ticketize_abortion(self, operation_id, sequence_number, outcome):
-    """See _Ticketizer.ticketize_abortion for specification."""
-    if outcome in _BACK_TO_FRONT_NO_TRANSMISSION_OUTCOMES:
-      return None
-    else:
-      kind = _ABORTION_OUTCOME_TO_BACK_TO_FRONT_TICKET_KIND[outcome]
-      return interfaces.BackToFrontTicket(
-          operation_id, sequence_number, kind, None)
-
-
-class TransmissionManager(six.with_metaclass(abc.ABCMeta, _interfaces.TransmissionManager)):
-  """A _interfaces.TransmissionManager on which other managers may be set."""
-
-  @abc.abstractmethod
-  def set_ingestion_and_expiration_managers(
-      self, ingestion_manager, expiration_manager):
-    """Sets two of the other managers with which this manager may interact.
-
-    Args:
-      ingestion_manager: The _interfaces.IngestionManager associated with the
-        current operation.
-      expiration_manager: The _interfaces.ExpirationManager associated with the
-        current operation.
-    """
-    raise NotImplementedError()
-
-
-class _EmptyTransmissionManager(TransmissionManager):
-  """A completely no-operative _interfaces.TransmissionManager."""
-
-  def set_ingestion_and_expiration_managers(
-      self, ingestion_manager, expiration_manager):
-    """See overriden method for specification."""
-
-  def inmit(self, emission, complete):
-    """See _interfaces.TransmissionManager.inmit for specification."""
-
-  def abort(self, outcome):
-    """See _interfaces.TransmissionManager.abort for specification."""
-
-
-class _TransmittingTransmissionManager(TransmissionManager):
-  """A TransmissionManager implementation that sends tickets."""
-
-  def __init__(
-      self, lock, pool, callback, operation_id, ticketizer,
-      termination_manager):
-    """Constructor.
-
-    Args:
-      lock: The operation-servicing-wide lock object.
-      pool: A thread pool in which the work of transmitting tickets will be
-        performed.
-      callback: A callable that accepts tickets and sends them to the other side
-        of the operation.
-      operation_id: The operation's ID.
-      ticketizer: A _Ticketizer for ticket creation.
-      termination_manager: The _interfaces.TerminationManager associated with
-        this operation.
-    """
-    self._lock = lock
-    self._pool = pool
-    self._callback = callback
-    self._operation_id = operation_id
-    self._ticketizer = ticketizer
-    self._termination_manager = termination_manager
-    self._ingestion_manager = None
-    self._expiration_manager = None
-
-    self._emissions = []
-    self._emission_complete = False
-    self._outcome = None
-    self._lowest_unused_sequence_number = 0
-    self._transmitting = False
-
-  def set_ingestion_and_expiration_managers(
-      self, ingestion_manager, expiration_manager):
-    """See overridden method for specification."""
-    self._ingestion_manager = ingestion_manager
-    self._expiration_manager = expiration_manager
-
-  def _lead_ticket(self, emission, complete):
-    """Creates a ticket suitable for leading off the transmission loop.
-
-    Args:
-      emission: A customer payload object to be sent to the other side of the
-        operation.
-      complete: Whether or not the sequence of customer payloads ends with
-        the passed object.
-
-    Returns:
-      A ticket with which to lead off the transmission loop.
-    """
-    sequence_number = self._lowest_unused_sequence_number
-    self._lowest_unused_sequence_number += 1
-    return self._ticketizer.ticketize(
-        self._operation_id, sequence_number, emission, complete)
-
-  def _abortive_response_ticket(self, outcome):
-    """Creates a ticket indicating operation abortion.
-
-    Args:
-      outcome: An interfaces.Outcome value describing operation abortion.
-
-    Returns:
-      A ticket indicating operation abortion.
-    """
-    ticket = self._ticketizer.ticketize_abortion(
-        self._operation_id, self._lowest_unused_sequence_number, outcome)
-    if ticket is None:
-      return None
-    else:
-      self._lowest_unused_sequence_number += 1
-      return ticket
-
-  def _next_ticket(self):
-    """Creates the next ticket to be sent to the other side of the operation.
-
-    Returns:
-      A (completed, ticket) tuple comprised of a boolean indicating whether or
-        not the sequence of tickets has completed normally and a ticket to send
-        to the other side if the sequence of tickets hasn't completed. The tuple
-        will never have both a True first element and a non-None second element.
-    """
-    if self._emissions is None:
-      return False, None
-    elif self._outcome is None:
-      if self._emissions:
-        payload = self._emissions.pop(0)
-        complete = self._emission_complete and not self._emissions
-        sequence_number = self._lowest_unused_sequence_number
-        self._lowest_unused_sequence_number += 1
-        return complete, self._ticketizer.ticketize(
-            self._operation_id, sequence_number, payload, complete)
-      else:
-        return self._emission_complete, None
-    else:
-      ticket = self._abortive_response_ticket(self._outcome)
-      self._emissions = None
-      return False, None if ticket is None else ticket
-
-  def _transmit(self, ticket):
-    """Commences the transmission loop sending tickets.
-
-    Args:
-      ticket: A ticket to be sent to the other side of the operation.
-    """
-    def transmit(ticket):
-      while True:
-        transmission_outcome = callable_util.call_logging_exceptions(
-            self._callback, _TRANSMISSION_EXCEPTION_LOG_MESSAGE, ticket)
-        if transmission_outcome.exception is None:
-          with self._lock:
-            complete, ticket = self._next_ticket()
-            if ticket is None:
-              if complete:
-                self._termination_manager.transmission_complete()
-              self._transmitting = False
-              return
-        else:
-          with self._lock:
-            self._emissions = None
-            self._termination_manager.abort(
-                interfaces.Outcome.TRANSMISSION_FAILURE)
-            self._ingestion_manager.abort()
-            self._expiration_manager.abort()
-            self._transmitting = False
-            return
-
-    self._pool.submit(callable_util.with_exceptions_logged(
-        transmit, _constants.INTERNAL_ERROR_LOG_MESSAGE), ticket)
-    self._transmitting = True
-
-  def inmit(self, emission, complete):
-    """See _interfaces.TransmissionManager.inmit for specification."""
-    if self._emissions is not None and self._outcome is None:
-      self._emission_complete = complete
-      if self._transmitting:
-        self._emissions.append(emission)
-      else:
-        self._transmit(self._lead_ticket(emission, complete))
-
-  def abort(self, outcome):
-    """See _interfaces.TransmissionManager.abort for specification."""
-    if self._emissions is not None and self._outcome is None:
-      self._outcome = outcome
-      if not self._transmitting:
-        ticket = self._abortive_response_ticket(outcome)
-        self._emissions = None
-        if ticket is not None:
-          self._transmit(ticket)
-
-
-def front_transmission_manager(
-    lock, pool, callback, operation_id, name, subscription_kind, trace_id,
-    timeout, termination_manager):
-  """Creates a TransmissionManager appropriate for front-side use.
-
-  Args:
-    lock: The operation-servicing-wide lock object.
-    pool: A thread pool in which the work of transmitting tickets will be
-      performed.
-    callback: A callable that accepts tickets and sends them to the other side
-      of the operation.
-    operation_id: The operation's ID.
-    name: The name of the operation.
-    subscription_kind: An interfaces.ServicedSubscription.Kind value
-      describing the interest the front has in tickets sent from the back.
-    trace_id: A uuid.UUID identifying a set of related operations to which
-      this operation belongs.
-    timeout: A length of time in seconds to allow for the entire operation.
-    termination_manager: The _interfaces.TerminationManager associated with
-      this operation.
-
-  Returns:
-    A TransmissionManager appropriate for front-side use.
-  """
-  return _TransmittingTransmissionManager(
-      lock, pool, callback, operation_id, _FrontTicketizer(
-          name, subscription_kind, trace_id, timeout),
-      termination_manager)
-
-
-def back_transmission_manager(
-    lock, pool, callback, operation_id, termination_manager,
-    subscription_kind):
-  """Creates a TransmissionManager appropriate for back-side use.
-
-  Args:
-    lock: The operation-servicing-wide lock object.
-    pool: A thread pool in which the work of transmitting tickets will be
-      performed.
-    callback: A callable that accepts tickets and sends them to the other side
-      of the operation.
-    operation_id: The operation's ID.
-    termination_manager: The _interfaces.TerminationManager associated with
-      this operation.
-    subscription_kind: An interfaces.ServicedSubscription.Kind value
-      describing the interest the front has in tickets sent from the back.
-
-  Returns:
-    A TransmissionManager appropriate for back-side use.
-  """
-  if subscription_kind is interfaces.ServicedSubscription.Kind.NONE:
-    return _EmptyTransmissionManager()
-  else:
-    return _TransmittingTransmissionManager(
-        lock, pool, callback, operation_id, _BackTicketizer(),
-        termination_manager)
diff --git a/src/python/grpcio/grpc/framework/base/exceptions.py b/src/python/grpcio/grpc/framework/base/exceptions.py
deleted file mode 100644
index b8f4752184..0000000000
--- a/src/python/grpcio/grpc/framework/base/exceptions.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Exceptions defined and used by the base layer of RPC Framework."""
-
-
-class NoSuchMethodError(Exception):
-  """Indicates that an operation with an unrecognized name has been called."""
diff --git a/src/python/grpcio/grpc/framework/base/implementations.py b/src/python/grpcio/grpc/framework/base/implementations.py
deleted file mode 100644
index 5656f9f981..0000000000
--- a/src/python/grpcio/grpc/framework/base/implementations.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Entry points into the ticket-exchange-based base layer implementation."""
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.base import _ends
-from grpc.framework.base import interfaces  # pylint: disable=unused-import
-
-
-def front_link(work_pool, transmission_pool, utility_pool):
-  """Factory function for creating interfaces.FrontLinks.
-
-  Args:
-    work_pool: A thread pool to be used for doing work within the created
-      FrontLink object.
-    transmission_pool: A thread pool to be used within the created FrontLink
-      object for transmitting values to a joined RearLink object.
-    utility_pool: A thread pool to be used within the created FrontLink object
-      for utility tasks.
-
-  Returns:
-    An interfaces.FrontLink.
-  """
-  return _ends.FrontLink(work_pool, transmission_pool, utility_pool)
-
-
-def back_link(
-    servicer, work_pool, transmission_pool, utility_pool, default_timeout,
-    maximum_timeout):
-  """Factory function for creating interfaces.BackLinks.
-
-  Args:
-    servicer: An interfaces.Servicer for servicing operations.
-    work_pool: A thread pool to be used for doing work within the created
-      BackLink object.
-    transmission_pool: A thread pool to be used within the created BackLink
-      object for transmitting values to a joined ForeLink object.
-    utility_pool: A thread pool to be used within the created BackLink object
-      for utility tasks.
-    default_timeout: A length of time in seconds to be used as the default
-      time alloted for a single operation.
-    maximum_timeout: A length of time in seconds to be used as the maximum
-      time alloted for a single operation.
-
-  Returns:
-    An interfaces.BackLink.
-  """
-  return _ends.BackLink(
-      servicer, work_pool, transmission_pool, utility_pool, default_timeout,
-      maximum_timeout)
diff --git a/src/python/grpcio/grpc/framework/base/in_memory.py b/src/python/grpcio/grpc/framework/base/in_memory.py
deleted file mode 100644
index c92d0bc663..0000000000
--- a/src/python/grpcio/grpc/framework/base/in_memory.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""In-memory implementations of base layer interfaces."""
-
-import threading
-
-from grpc.framework.base import _constants
-from grpc.framework.base import interfaces
-from grpc.framework.foundation import callable_util
-
-
-class _Serializer(object):
-  """A utility for serializing values that may arrive concurrently."""
-
-  def __init__(self, pool):
-    self._lock = threading.Lock()
-    self._pool = pool
-    self._sink = None
-    self._spinning = False
-    self._values = []
-
-  def _spin(self, sink, value):
-    while True:
-      sink(value)
-      with self._lock:
-        if self._sink is None or not self._values:
-          self._spinning = False
-          return
-        else:
-          sink, value = self._sink, self._values.pop(0)
-
-  def set_sink(self, sink):
-    with self._lock:
-      self._sink = sink
-      if sink is not None and self._values and not self._spinning:
-        self._spinning = True
-        self._pool.submit(
-            callable_util.with_exceptions_logged(
-                self._spin, _constants.INTERNAL_ERROR_LOG_MESSAGE),
-            sink, self._values.pop(0))
-
-  def add_value(self, value):
-    with self._lock:
-      if self._sink and not self._spinning:
-        self._spinning = True
-        self._pool.submit(
-            callable_util.with_exceptions_logged(
-                self._spin, _constants.INTERNAL_ERROR_LOG_MESSAGE),
-            self._sink, value)
-      else:
-        self._values.append(value)
-
-
-class Link(interfaces.ForeLink, interfaces.RearLink):
-  """A trivial implementation of interfaces.ForeLink and interfaces.RearLink."""
-
-  def __init__(self, pool):
-    """Constructor.
-
-    Args:
-      pool: A thread pool to be used for serializing ticket exchange in each
-        direction.
-    """
-    self._front_to_back = _Serializer(pool)
-    self._back_to_front = _Serializer(pool)
-
-  def join_fore_link(self, fore_link):
-    """See interfaces.RearLink.join_fore_link for specification."""
-    self._back_to_front.set_sink(fore_link.accept_back_to_front_ticket)
-
-  def join_rear_link(self, rear_link):
-    """See interfaces.ForeLink.join_rear_link for specification."""
-    self._front_to_back.set_sink(rear_link.accept_front_to_back_ticket)
-
-  def accept_front_to_back_ticket(self, ticket):
-    """See interfaces.ForeLink.accept_front_to_back_ticket for specification."""
-    self._front_to_back.add_value(ticket)
-
-  def accept_back_to_front_ticket(self, ticket):
-    """See interfaces.RearLink.accept_back_to_front_ticket for specification."""
-    self._back_to_front.add_value(ticket)
diff --git a/src/python/grpcio/grpc/framework/base/interfaces.py b/src/python/grpcio/grpc/framework/base/interfaces.py
deleted file mode 100644
index 995b51cd5b..0000000000
--- a/src/python/grpcio/grpc/framework/base/interfaces.py
+++ /dev/null
@@ -1,353 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces defined and used by the base layer of RPC Framework."""
-
-import abc
-import collections
-import enum
-
-import six
-
-# stream is referenced from specification in this module.
-from grpc.framework.foundation import stream  # pylint: disable=unused-import
-
-
-@enum.unique
-class Outcome(enum.Enum):
-  """Operation outcomes."""
-
-  COMPLETED = 'completed'
-  CANCELLED = 'cancelled'
-  EXPIRED = 'expired'
-  RECEPTION_FAILURE = 'reception failure'
-  TRANSMISSION_FAILURE = 'transmission failure'
-  SERVICER_FAILURE = 'servicer failure'
-  SERVICED_FAILURE = 'serviced failure'
-
-
-class OperationContext(six.with_metaclass(abc.ABCMeta)):
-  """Provides operation-related information and action.
-
-  Attributes:
-    trace_id: A uuid.UUID identifying a particular set of related operations.
-  """
-
-  @abc.abstractmethod
-  def is_active(self):
-    """Describes whether the operation is active or has terminated."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def add_termination_callback(self, callback):
-    """Adds a function to be called upon operation termination.
-
-    Args:
-      callback: A callable that will be passed an Outcome value.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def time_remaining(self):
-    """Describes the length of allowed time remaining for the operation.
-
-    Returns:
-      A nonnegative float indicating the length of allowed time in seconds
-      remaining for the operation to complete before it is considered to have
-      timed out.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def fail(self, exception):
-    """Indicates that the operation has failed.
-
-    Args:
-      exception: An exception germane to the operation failure. May be None.
-    """
-    raise NotImplementedError()
-
-
-class Servicer(six.with_metaclass(abc.ABCMeta)):
-  """Interface for service implementations."""
-
-  @abc.abstractmethod
-  def service(self, name, context, output_consumer):
-    """Services an operation.
-
-    Args:
-      name: The name of the operation.
-      context: A ServicerContext object affording contextual information and
-        actions.
-      output_consumer: A stream.Consumer that will accept output values of
-        the operation.
-
-    Returns:
-      A stream.Consumer that will accept input values for the operation.
-
-    Raises:
-      exceptions.NoSuchMethodError: If this Servicer affords no method with the
-        given name.
-      abandonment.Abandoned: If the operation has been aborted and there no
-        longer is any reason to service the operation.
-    """
-    raise NotImplementedError()
-
-
-class Operation(six.with_metaclass(abc.ABCMeta)):
-  """Representation of an in-progress operation.
-
-  Attributes:
-    consumer: A stream.Consumer into which payloads constituting the operation's
-      input may be passed.
-    context: An OperationContext affording information and action about the
-      operation.
-  """
-
-  @abc.abstractmethod
-  def cancel(self):
-    """Cancels this operation."""
-    raise NotImplementedError()
-
-
-class ServicedIngestor(six.with_metaclass(abc.ABCMeta)):
-  """Responsible for accepting the result of an operation."""
-
-  @abc.abstractmethod
-  def consumer(self, operation_context):
-    """Affords a consumer to which operation results will be passed.
-
-    Args:
-      operation_context: An OperationContext object for the current operation.
-
-    Returns:
-      A stream.Consumer to which the results of the current operation will be
-        passed.
-
-    Raises:
-      abandonment.Abandoned: If the operation has been aborted and there no
-        longer is any reason to service the operation.
-    """
-    raise NotImplementedError()
-
-
-class ServicedSubscription(six.with_metaclass(abc.ABCMeta)):
-  """A sum type representing a serviced's interest in an operation.
-
-  Attributes:
-    kind: A Kind value.
-    ingestor: A ServicedIngestor. Must be present if kind is Kind.FULL. Must
-      be None if kind is Kind.TERMINATION_ONLY or Kind.NONE.
-  """
-
-  @enum.unique
-  class Kind(enum.Enum):
-    """Kinds of subscription."""
-
-    FULL = 'full'
-    TERMINATION_ONLY = 'termination only'
-    NONE = 'none'
-
-
-class End(six.with_metaclass(abc.ABCMeta)):
-  """Common type for entry-point objects on both sides of an operation."""
-
-  @abc.abstractmethod
-  def operation_stats(self):
-    """Reports the number of terminated operations broken down by outcome.
-
-    Returns:
-      A dictionary from Outcome value to an integer identifying the number
-        of operations that terminated with that outcome.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def add_idle_action(self, action):
-    """Adds an action to be called when this End has no ongoing operations.
-
-    Args:
-      action: A callable that accepts no arguments.
-    """
-    raise NotImplementedError()
-
-
-class Front(six.with_metaclass(abc.ABCMeta, End)):
-  """Clientish objects that afford the invocation of operations."""
-
-  @abc.abstractmethod
-  def operate(
-      self, name, payload, complete, timeout, subscription, trace_id):
-    """Commences an operation.
-
-    Args:
-      name: The name of the method invoked for the operation.
-      payload: An initial payload for the operation. May be None.
-      complete: A boolean indicating whether or not additional payloads to be
-        sent to the servicer may be supplied after this call.
-      timeout: A length of time in seconds to allow for the operation.
-      subscription: A ServicedSubscription for the operation.
-      trace_id: A uuid.UUID identifying a set of related operations to which
-        this operation belongs.
-
-    Returns:
-      An Operation object affording information and action about the operation
-        in progress.
-    """
-    raise NotImplementedError()
-
-
-class Back(six.with_metaclass(abc.ABCMeta, End)):
-  """Serverish objects that perform the work of operations."""
-
-
-class FrontToBackTicket(
-    collections.namedtuple(
-        'FrontToBackTicket',
-        ['operation_id', 'sequence_number', 'kind', 'name', 'subscription',
-         'trace_id', 'payload', 'timeout'])):
-  """A sum type for all values sent from a front to a back.
-
-  Attributes:
-    operation_id: A unique-with-respect-to-equality hashable object identifying
-      a particular operation.
-    sequence_number: A zero-indexed integer sequence number identifying the
-      ticket's place among all the tickets sent from front to back for this
-      particular operation. Must be zero if kind is Kind.COMMENCEMENT or
-      Kind.ENTIRE. Must be positive for any other kind.
-    kind: A Kind value describing the overall kind of ticket.
-    name: The name of an operation. Must be present if kind is Kind.COMMENCEMENT
-      or Kind.ENTIRE. Must be None for any other kind.
-    subscription: An ServicedSubscription.Kind value describing the interest
-      the front has in tickets sent from the back. Must be present if
-      kind is Kind.COMMENCEMENT or Kind.ENTIRE. Must be None for any other kind.
-    trace_id: A uuid.UUID identifying a set of related operations to which this
-      operation belongs. May be None.
-    payload: A customer payload object. Must be present if kind is
-      Kind.CONTINUATION. Must be None if kind is Kind.CANCELLATION. May be None
-      for any other kind.
-    timeout: An optional length of time (measured from the beginning of the
-      operation) to allow for the entire operation. If None, a default value on
-      the back will be used. If present and excessively large, the back may
-      limit the operation to a smaller duration of its choice. May be present
-      for any ticket kind; setting a value on a later ticket allows fronts
-      to request time extensions (or even time reductions!) on in-progress
-      operations.
-  """
-
-  @enum.unique
-  class Kind(enum.Enum):
-    """Identifies the overall kind of a FrontToBackTicket."""
-
-    COMMENCEMENT = 'commencement'
-    CONTINUATION = 'continuation'
-    COMPLETION = 'completion'
-    ENTIRE = 'entire'
-    CANCELLATION = 'cancellation'
-    EXPIRATION = 'expiration'
-    SERVICER_FAILURE = 'servicer failure'
-    SERVICED_FAILURE = 'serviced failure'
-    RECEPTION_FAILURE = 'reception failure'
-    TRANSMISSION_FAILURE = 'transmission failure'
-
-
-class BackToFrontTicket(
-    collections.namedtuple(
-        'BackToFrontTicket',
-        ['operation_id', 'sequence_number', 'kind', 'payload'])):
-  """A sum type for all values sent from a back to a front.
-
-  Attributes:
-    operation_id: A unique-with-respect-to-equality hashable object identifying
-      a particular operation.
-    sequence_number: A zero-indexed integer sequence number identifying the
-      ticket's place among all the tickets sent from back to front for this
-      particular operation.
-    kind: A Kind value describing the overall kind of ticket.
-    payload: A customer payload object. Must be present if kind is
-      Kind.CONTINUATION. May be None if kind is Kind.COMPLETION. Must be None
-      otherwise.
-  """
-
-  @enum.unique
-  class Kind(enum.Enum):
-    """Identifies the overall kind of a BackToFrontTicket."""
-
-    CONTINUATION = 'continuation'
-    COMPLETION = 'completion'
-    CANCELLATION = 'cancellation'
-    EXPIRATION = 'expiration'
-    SERVICER_FAILURE = 'servicer failure'
-    SERVICED_FAILURE = 'serviced failure'
-    RECEPTION_FAILURE = 'reception failure'
-    TRANSMISSION_FAILURE = 'transmission failure'
-
-
-class ForeLink(six.with_metaclass(abc.ABCMeta)):
-  """Accepts back-to-front tickets and emits front-to-back tickets."""
-
-  @abc.abstractmethod
-  def accept_back_to_front_ticket(self, ticket):
-    """Accept a BackToFrontTicket.
-
-    Args:
-      ticket: Any BackToFrontTicket.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def join_rear_link(self, rear_link):
-    """Mates this object with a peer with which it will exchange tickets."""
-    raise NotImplementedError()
-
-
-class RearLink(six.with_metaclass(abc.ABCMeta)):
-  """Accepts front-to-back tickets and emits back-to-front tickets."""
-
-  @abc.abstractmethod
-  def accept_front_to_back_ticket(self, ticket):
-    """Accepts a FrontToBackTicket.
-
-    Args:
-      ticket: Any FrontToBackTicket.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def join_fore_link(self, fore_link):
-    """Mates this object with a peer with which it will exchange tickets."""
-    raise NotImplementedError()
-
-
-class FrontLink(six.with_metaclass(abc.ABCMeta, Front, ForeLink)):
-  """Clientish objects that operate by sending and receiving tickets."""
-
-
-class BackLink(six.with_metaclass(abc.ABCMeta, Back, RearLink)):
-  """Serverish objects that operate by sending and receiving tickets."""
diff --git a/src/python/grpcio/grpc/framework/base/null.py b/src/python/grpcio/grpc/framework/base/null.py
deleted file mode 100644
index 1e30d4557b..0000000000
--- a/src/python/grpcio/grpc/framework/base/null.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Null links that ignore tickets passed to them."""
-
-from grpc.framework.base import interfaces
-
-
-class _NullForeLink(interfaces.ForeLink):
-  """A do-nothing ForeLink."""
-
-  def accept_back_to_front_ticket(self, ticket):
-    pass
-
-  def join_rear_link(self, rear_link):
-    raise NotImplementedError()
-
-
-class _NullRearLink(interfaces.RearLink):
-  """A do-nothing RearLink."""
-
-  def accept_front_to_back_ticket(self, ticket):
-    pass
-
-  def join_fore_link(self, fore_link):
-    raise NotImplementedError()
-
-
-NULL_FORE_LINK = _NullForeLink()
-NULL_REAR_LINK = _NullRearLink()
diff --git a/src/python/grpcio/grpc/framework/base/util.py b/src/python/grpcio/grpc/framework/base/util.py
deleted file mode 100644
index c832c826cf..0000000000
--- a/src/python/grpcio/grpc/framework/base/util.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities helpful for working with the base layer of RPC Framework."""
-
-import collections
-import threading
-
-from grpc.framework.base import interfaces
-
-
-class _ServicedSubscription(
-    collections.namedtuple('_ServicedSubscription', ['kind', 'ingestor']),
-    interfaces.ServicedSubscription):
-  """See interfaces.ServicedSubscription for specification."""
-
-_NONE_SUBSCRIPTION = _ServicedSubscription(
-    interfaces.ServicedSubscription.Kind.NONE, None)
-_TERMINATION_ONLY_SUBSCRIPTION = _ServicedSubscription(
-    interfaces.ServicedSubscription.Kind.TERMINATION_ONLY, None)
-
-
-def none_serviced_subscription():
-  """Creates a "none" interfaces.ServicedSubscription object.
-
-  Returns:
-    An interfaces.ServicedSubscription indicating no subscription to an
-      operation's results (such as would be the case for a fire-and-forget
-      operation invocation).
-  """
-  return _NONE_SUBSCRIPTION
-
-
-def termination_only_serviced_subscription():
-  """Creates a "termination only" interfaces.ServicedSubscription object.
-
-  Returns:
-    An interfaces.ServicedSubscription indicating that the front-side customer
-      is interested only in the overall termination outcome of the operation
-      (such as completion or expiration) and would ignore the actual results of
-      the operation.
-  """
-  return _TERMINATION_ONLY_SUBSCRIPTION
-
-
-def full_serviced_subscription(ingestor):
-  """Creates a "full" interfaces.ServicedSubscription object.
-
-  Args:
-    ingestor: An interfaces.ServicedIngestor.
-
-  Returns:
-    An interfaces.ServicedSubscription object indicating a full
-      subscription.
-  """
-  return _ServicedSubscription(
-      interfaces.ServicedSubscription.Kind.FULL, ingestor)
-
-
-def wait_for_idle(end):
-  """Waits for an interfaces.End to complete all operations.
-
-  Args:
-    end: Any interfaces.End.
-  """
-  event = threading.Event()
-  end.add_idle_action(event.set)
-  event.wait()
diff --git a/src/python/grpcio/grpc/framework/face/__init__.py b/src/python/grpcio/grpc/framework/face/__init__.py
deleted file mode 100644
index bff74be2c7..0000000000
--- a/src/python/grpcio/grpc/framework/face/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import warnings
-
-warnings.simplefilter('always', DeprecationWarning)
-warnings.warn('the alpha API (includes this package) is deprecated, '
-              'unmaintained, and no longer tested. Please migrate to the beta '
-              'API.', DeprecationWarning, stacklevel=2)
diff --git a/src/python/grpcio/grpc/framework/face/_calls.py b/src/python/grpcio/grpc/framework/face/_calls.py
deleted file mode 100644
index 87edeb0f0e..0000000000
--- a/src/python/grpcio/grpc/framework/face/_calls.py
+++ /dev/null
@@ -1,422 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utility functions for invoking RPCs."""
-
-import sys
-import threading
-
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.base import util as base_util
-from grpc.framework.face import _control
-from grpc.framework.face import interfaces
-from grpc.framework.foundation import callable_util
-from grpc.framework.foundation import future
-
-_ITERATOR_EXCEPTION_LOG_MESSAGE = 'Exception iterating over requests!'
-_DONE_CALLBACK_LOG_MESSAGE = 'Exception calling Future "done" callback!'
-
-
-class _RendezvousServicedIngestor(base_interfaces.ServicedIngestor):
-
-  def __init__(self, rendezvous):
-    self._rendezvous = rendezvous
-
-  def consumer(self, operation_context):
-    return self._rendezvous
-
-
-class _EventServicedIngestor(base_interfaces.ServicedIngestor):
-
-  def __init__(self, result_consumer, abortion_callback):
-    self._result_consumer = result_consumer
-    self._abortion_callback = abortion_callback
-
-  def consumer(self, operation_context):
-    operation_context.add_termination_callback(
-        _control.as_operation_termination_callback(self._abortion_callback))
-    return self._result_consumer
-
-
-def _rendezvous_subscription(rendezvous):
-  return base_util.full_serviced_subscription(
-      _RendezvousServicedIngestor(rendezvous))
-
-
-def _unary_event_subscription(completion_callback, abortion_callback):
-  return base_util.full_serviced_subscription(
-      _EventServicedIngestor(
-          _control.UnaryConsumer(completion_callback), abortion_callback))
-
-
-def _stream_event_subscription(result_consumer, abortion_callback):
-  return base_util.full_serviced_subscription(
-      _EventServicedIngestor(result_consumer, abortion_callback))
-
-
-# NOTE(nathaniel): This class has some extremely special semantics around
-# cancellation that allow it to be used by both "blocking" APIs and "futures"
-# APIs.
-#
-# Since futures.Future defines its own exception for cancellation, we want these
-# objects, when returned by methods of a returning-Futures-from-other-methods
-# object, to raise the same exception for cancellation. But that's weird in a
-# blocking API - why should this object, also returned by methods of blocking
-# APIs, raise exceptions from the "future" module? Should we do something like
-# have this class be parameterized by the type of exception that it raises in
-# cancellation circumstances?
-#
-# We don't have to take such a dramatic step: since blocking APIs define no
-# cancellation semantics whatsoever, there is no supported way for
-# blocking-API-users of these objects to cancel RPCs, and thus no supported way
-# for them to see an exception the type of which would be weird to them.
-#
-# Bonus: in both blocking and futures APIs, this object still properly raises
-# exceptions.CancellationError for any *server-side cancellation* of an RPC.
-class _OperationCancellableIterator(interfaces.CancellableIterator):
-  """An interfaces.CancellableIterator for response-streaming operations."""
-
-  def __init__(self, rendezvous, operation):
-    self._lock = threading.Lock()
-    self._rendezvous = rendezvous
-    self._operation = operation
-    self._cancelled = False
-
-  def __iter__(self):
-    return self
-
-  def next(self):
-    with self._lock:
-      if self._cancelled:
-        raise future.CancelledError()
-    return next(self._rendezvous)
-
-  def cancel(self):
-    with self._lock:
-      self._cancelled = True
-    self._operation.cancel()
-    self._rendezvous.set_outcome(base_interfaces.Outcome.CANCELLED)
-
-
-class _OperationFuture(future.Future):
-  """A future.Future interface to an operation."""
-
-  def __init__(self, rendezvous, operation):
-    self._condition = threading.Condition()
-    self._rendezvous = rendezvous
-    self._operation = operation
-
-    self._cancelled = False
-    self._computed = False
-    self._payload = None
-    self._exception = None
-    self._traceback = None
-    self._callbacks = []
-
-  def cancel(self):
-    """See future.Future.cancel for specification."""
-    with self._condition:
-      if not self._cancelled and not self._computed:
-        self._operation.cancel()
-        self._cancelled = True
-        self._condition.notify_all()
-    return False
-
-  def cancelled(self):
-    """See future.Future.cancelled for specification."""
-    with self._condition:
-      return self._cancelled
-
-  def running(self):
-    """See future.Future.running for specification."""
-    with self._condition:
-      return not self._cancelled and not self._computed
-
-  def done(self):
-    """See future.Future.done for specification."""
-    with self._condition:
-      return self._cancelled or self._computed
-
-  def result(self, timeout=None):
-    """See future.Future.result for specification."""
-    with self._condition:
-      if self._cancelled:
-        raise future.CancelledError()
-      if self._computed:
-        if self._payload is None:
-          raise self._exception  # pylint: disable=raising-bad-type
-        else:
-          return self._payload
-
-      condition = threading.Condition()
-      def notify_condition(unused_future):
-        with condition:
-          condition.notify()
-      self._callbacks.append(notify_condition)
-
-    with condition:
-      condition.wait(timeout=timeout)
-
-    with self._condition:
-      if self._cancelled:
-        raise future.CancelledError()
-      elif self._computed:
-        if self._payload is None:
-          raise self._exception  # pylint: disable=raising-bad-type
-        else:
-          return self._payload
-      else:
-        raise future.TimeoutError()
-
-  def exception(self, timeout=None):
-    """See future.Future.exception for specification."""
-    with self._condition:
-      if self._cancelled:
-        raise future.CancelledError()
-      if self._computed:
-        return self._exception
-
-      condition = threading.Condition()
-      def notify_condition(unused_future):
-        with condition:
-          condition.notify()
-      self._callbacks.append(notify_condition)
-
-    with condition:
-      condition.wait(timeout=timeout)
-
-    with self._condition:
-      if self._cancelled:
-        raise future.CancelledError()
-      elif self._computed:
-        return self._exception
-      else:
-        raise future.TimeoutError()
-
-  def traceback(self, timeout=None):
-    """See future.Future.traceback for specification."""
-    with self._condition:
-      if self._cancelled:
-        raise future.CancelledError()
-      if self._computed:
-        return self._traceback
-
-      condition = threading.Condition()
-      def notify_condition(unused_future):
-        with condition:
-          condition.notify()
-      self._callbacks.append(notify_condition)
-
-    with condition:
-      condition.wait(timeout=timeout)
-
-    with self._condition:
-      if self._cancelled:
-        raise future.CancelledError()
-      elif self._computed:
-        return self._traceback
-      else:
-        raise future.TimeoutError()
-
-  def add_done_callback(self, fn):
-    """See future.Future.add_done_callback for specification."""
-    with self._condition:
-      if self._callbacks is not None:
-        self._callbacks.append(fn)
-        return
-
-    callable_util.call_logging_exceptions(fn, _DONE_CALLBACK_LOG_MESSAGE, self)
-
-  def on_operation_termination(self, operation_outcome):
-    """Indicates to this object that the operation has terminated.
-
-    Args:
-      operation_outcome: A base_interfaces.Outcome value indicating the
-        outcome of the operation.
-    """
-    with self._condition:
-      cancelled = self._cancelled
-      if cancelled:
-        callbacks = list(self._callbacks)
-        self._callbacks = None
-      else:
-        rendezvous = self._rendezvous
-
-    if not cancelled:
-      payload = None
-      exception = None
-      traceback = None
-      if operation_outcome == base_interfaces.Outcome.COMPLETED:
-        try:
-          payload = next(rendezvous)
-        except Exception as e:  # pylint: disable=broad-except
-          exception = e
-          traceback = sys.exc_info()[2]
-      else:
-        try:
-          # We raise and then immediately catch in order to create a traceback.
-          raise _control.abortion_outcome_to_exception(operation_outcome)
-        except Exception as e:  # pylint: disable=broad-except
-          exception = e
-          traceback = sys.exc_info()[2]
-      with self._condition:
-        if not self._cancelled:
-          self._computed = True
-          self._payload = payload
-          self._exception = exception
-          self._traceback = traceback
-        callbacks = list(self._callbacks)
-        self._callbacks = None
-
-    for callback in callbacks:
-      callable_util.call_logging_exceptions(
-          callback, _DONE_CALLBACK_LOG_MESSAGE, self)
-
-
-class _Call(interfaces.Call):
-
-  def __init__(self, operation):
-    self._operation = operation
-    self.context = _control.RpcContext(operation.context)
-
-  def cancel(self):
-    self._operation.cancel()
-
-
-def blocking_value_in_value_out(front, name, payload, timeout, trace_id):
-  """Services in a blocking fashion a value-in value-out servicer method."""
-  rendezvous = _control.Rendezvous()
-  subscription = _rendezvous_subscription(rendezvous)
-  operation = front.operate(
-      name, payload, True, timeout, subscription, trace_id)
-  operation.context.add_termination_callback(rendezvous.set_outcome)
-  return next(rendezvous)
-
-
-def future_value_in_value_out(front, name, payload, timeout, trace_id):
-  """Services a value-in value-out servicer method by returning a Future."""
-  rendezvous = _control.Rendezvous()
-  subscription = _rendezvous_subscription(rendezvous)
-  operation = front.operate(
-      name, payload, True, timeout, subscription, trace_id)
-  operation.context.add_termination_callback(rendezvous.set_outcome)
-  operation_future = _OperationFuture(rendezvous, operation)
-  operation.context.add_termination_callback(
-      operation_future.on_operation_termination)
-  return operation_future
-
-
-def inline_value_in_stream_out(front, name, payload, timeout, trace_id):
-  """Services a value-in stream-out servicer method."""
-  rendezvous = _control.Rendezvous()
-  subscription = _rendezvous_subscription(rendezvous)
-  operation = front.operate(
-      name, payload, True, timeout, subscription, trace_id)
-  operation.context.add_termination_callback(rendezvous.set_outcome)
-  return _OperationCancellableIterator(rendezvous, operation)
-
-
-def blocking_stream_in_value_out(
-    front, name, payload_iterator, timeout, trace_id):
-  """Services in a blocking fashion a stream-in value-out servicer method."""
-  rendezvous = _control.Rendezvous()
-  subscription = _rendezvous_subscription(rendezvous)
-  operation = front.operate(name, None, False, timeout, subscription, trace_id)
-  operation.context.add_termination_callback(rendezvous.set_outcome)
-  for payload in payload_iterator:
-    operation.consumer.consume(payload)
-  operation.consumer.terminate()
-  return next(rendezvous)
-
-
-def future_stream_in_value_out(
-    front, name, payload_iterator, timeout, trace_id, pool):
-  """Services a stream-in value-out servicer method by returning a Future."""
-  rendezvous = _control.Rendezvous()
-  subscription = _rendezvous_subscription(rendezvous)
-  operation = front.operate(name, None, False, timeout, subscription, trace_id)
-  operation.context.add_termination_callback(rendezvous.set_outcome)
-  pool.submit(
-      callable_util.with_exceptions_logged(
-          _control.pipe_iterator_to_consumer, _ITERATOR_EXCEPTION_LOG_MESSAGE),
-      payload_iterator, operation.consumer, lambda: True, True)
-  operation_future = _OperationFuture(rendezvous, operation)
-  operation.context.add_termination_callback(
-      operation_future.on_operation_termination)
-  return operation_future
-
-
-def inline_stream_in_stream_out(
-    front, name, payload_iterator, timeout, trace_id, pool):
-  """Services a stream-in stream-out servicer method."""
-  rendezvous = _control.Rendezvous()
-  subscription = _rendezvous_subscription(rendezvous)
-  operation = front.operate(name, None, False, timeout, subscription, trace_id)
-  operation.context.add_termination_callback(rendezvous.set_outcome)
-  pool.submit(
-      callable_util.with_exceptions_logged(
-          _control.pipe_iterator_to_consumer, _ITERATOR_EXCEPTION_LOG_MESSAGE),
-      payload_iterator, operation.consumer, lambda: True, True)
-  return _OperationCancellableIterator(rendezvous, operation)
-
-
-def event_value_in_value_out(
-    front, name, payload, completion_callback, abortion_callback, timeout,
-    trace_id):
-  subscription = _unary_event_subscription(
-      completion_callback, abortion_callback)
-  operation = front.operate(
-      name, payload, True, timeout, subscription, trace_id)
-  return _Call(operation)
-
-
-def event_value_in_stream_out(
-    front, name, payload, result_payload_consumer, abortion_callback, timeout,
-    trace_id):
-  subscription = _stream_event_subscription(
-      result_payload_consumer, abortion_callback)
-  operation = front.operate(
-      name, payload, True, timeout, subscription, trace_id)
-  return _Call(operation)
-
-
-def event_stream_in_value_out(
-    front, name, completion_callback, abortion_callback, timeout, trace_id):
-  subscription = _unary_event_subscription(
-      completion_callback, abortion_callback)
-  operation = front.operate(name, None, False, timeout, subscription, trace_id)
-  return _Call(operation), operation.consumer
-
-
-def event_stream_in_stream_out(
-    front, name, result_payload_consumer, abortion_callback, timeout, trace_id):
-  subscription = _stream_event_subscription(
-      result_payload_consumer, abortion_callback)
-  operation = front.operate(name, None, False, timeout, subscription, trace_id)
-  return _Call(operation), operation.consumer
diff --git a/src/python/grpcio/grpc/framework/face/_control.py b/src/python/grpcio/grpc/framework/face/_control.py
deleted file mode 100644
index 539615efa1..0000000000
--- a/src/python/grpcio/grpc/framework/face/_control.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""State and behavior for translating between sync and async control flow."""
-
-import threading
-
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import stream
-
-INTERNAL_ERROR_LOG_MESSAGE = ':-( RPC Framework (Face) Internal Error! :-('
-
-_OPERATION_OUTCOME_TO_RPC_ABORTION = {
-    base_interfaces.Outcome.CANCELLED: interfaces.Abortion.CANCELLED,
-    base_interfaces.Outcome.EXPIRED: interfaces.Abortion.EXPIRED,
-    base_interfaces.Outcome.RECEPTION_FAILURE:
-        interfaces.Abortion.NETWORK_FAILURE,
-    base_interfaces.Outcome.TRANSMISSION_FAILURE:
-        interfaces.Abortion.NETWORK_FAILURE,
-    base_interfaces.Outcome.SERVICED_FAILURE:
-        interfaces.Abortion.SERVICED_FAILURE,
-    base_interfaces.Outcome.SERVICER_FAILURE:
-        interfaces.Abortion.SERVICER_FAILURE,
-}
-
-
-def _as_operation_termination_callback(rpc_abortion_callback):
-  def operation_termination_callback(operation_outcome):
-    rpc_abortion = _OPERATION_OUTCOME_TO_RPC_ABORTION.get(
-        operation_outcome, None)
-    if rpc_abortion is not None:
-      rpc_abortion_callback(rpc_abortion)
-  return operation_termination_callback
-
-
-def _abortion_outcome_to_exception(abortion_outcome):
-  if abortion_outcome == base_interfaces.Outcome.CANCELLED:
-    return exceptions.CancellationError()
-  elif abortion_outcome == base_interfaces.Outcome.EXPIRED:
-    return exceptions.ExpirationError()
-  elif abortion_outcome == base_interfaces.Outcome.SERVICER_FAILURE:
-    return exceptions.ServicerError()
-  elif abortion_outcome == base_interfaces.Outcome.SERVICED_FAILURE:
-    return exceptions.ServicedError()
-  else:
-    return exceptions.NetworkError()
-
-
-class UnaryConsumer(stream.Consumer):
-  """A stream.Consumer that should only ever be passed one value."""
-
-  def __init__(self, on_termination):
-    self._on_termination = on_termination
-    self._value = None
-
-  def consume(self, value):
-    self._value = value
-
-  def terminate(self):
-    self._on_termination(self._value)
-
-  def consume_and_terminate(self, value):
-    self._on_termination(value)
-
-
-class Rendezvous(stream.Consumer):
-  """A rendez-vous with stream.Consumer and iterator interfaces."""
-
-  def __init__(self):
-    self._condition = threading.Condition()
-    self._values = []
-    self._values_completed = False
-    self._abortion = None
-
-  def consume(self, value):
-    with self._condition:
-      self._values.append(value)
-      self._condition.notify()
-
-  def terminate(self):
-    with self._condition:
-      self._values_completed = True
-      self._condition.notify()
-
-  def consume_and_terminate(self, value):
-    with self._condition:
-      self._values.append(value)
-      self._values_completed = True
-      self._condition.notify()
-
-  def __iter__(self):
-    return self
-
-  def __next__(self):
-    return self.next()
-
-  def next(self):
-    with self._condition:
-      while ((self._abortion is None) and
-             (not self._values) and
-             (not self._values_completed)):
-        self._condition.wait()
-      if self._abortion is not None:
-        raise _abortion_outcome_to_exception(self._abortion)
-      elif self._values:
-        return self._values.pop(0)
-      elif self._values_completed:
-        raise StopIteration()
-      else:
-        raise AssertionError('Unreachable code reached!')
-
-  def set_outcome(self, outcome):
-    with self._condition:
-      if outcome is not base_interfaces.Outcome.COMPLETED:
-        self._abortion = outcome
-        self._condition.notify()
-
-
-class RpcContext(interfaces.RpcContext):
-  """A wrapped base_interfaces.OperationContext."""
-
-  def __init__(self, operation_context):
-    self._operation_context = operation_context
-
-  def is_active(self):
-    return self._operation_context.is_active()
-
-  def time_remaining(self):
-    return self._operation_context.time_remaining()
-
-  def add_abortion_callback(self, abortion_callback):
-    self._operation_context.add_termination_callback(
-        _as_operation_termination_callback(abortion_callback))
-
-
-def pipe_iterator_to_consumer(iterator, consumer, active, terminate):
-  """Pipes values emitted from an iterator to a stream.Consumer.
-
-  Args:
-    iterator: An iterator from which values will be emitted.
-    consumer: A stream.Consumer to which values will be passed.
-    active: A no-argument callable that returns True if the work being done by
-      this function is still valid and should not be abandoned and False if the
-      work being done by this function should be abandoned.
-    terminate: A boolean indicating whether or not this function should
-      terminate the given consumer after passing to it all values emitted by the
-      given iterator.
-
-  Raises:
-    abandonment.Abandoned: If this function quits early after seeing False
-      returned by the active function passed to it.
-    Exception: This function raises whatever exceptions are raised by iterating
-      over the given iterator.
-  """
-  for element in iterator:
-    if not active():
-      raise abandonment.Abandoned()
-
-    consumer.consume(element)
-
-    if not active():
-      raise abandonment.Abandoned()
-  if terminate:
-    consumer.terminate()
-
-
-def abortion_outcome_to_exception(abortion_outcome):
-  return _abortion_outcome_to_exception(abortion_outcome)
-
-
-def as_operation_termination_callback(rpc_abortion_callback):
-  return _as_operation_termination_callback(rpc_abortion_callback)
diff --git a/src/python/grpcio/grpc/framework/face/_service.py b/src/python/grpcio/grpc/framework/face/_service.py
deleted file mode 100644
index cdf413356a..0000000000
--- a/src/python/grpcio/grpc/framework/face/_service.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Behaviors for servicing RPCs."""
-
-# base_interfaces and interfaces are referenced from specification in this
-# module.
-from grpc.framework.base import interfaces as base_interfaces  # pylint: disable=unused-import
-from grpc.framework.face import _control
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces  # pylint: disable=unused-import
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import callable_util
-from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_util
-
-
-class _ValueInStreamOutConsumer(stream.Consumer):
-  """A stream.Consumer that maps inputs one-to-many onto outputs."""
-
-  def __init__(self, behavior, context, downstream):
-    """Constructor.
-
-    Args:
-      behavior: A callable that takes a single value and an
-        interfaces.RpcContext and returns a generator of arbitrarily many
-        values.
-      context: An interfaces.RpcContext.
-      downstream: A stream.Consumer to which to pass the values generated by the
-        given behavior.
-    """
-    self._behavior = behavior
-    self._context = context
-    self._downstream = downstream
-
-  def consume(self, value):
-    _control.pipe_iterator_to_consumer(
-        self._behavior(value, self._context), self._downstream,
-        self._context.is_active, False)
-
-  def terminate(self):
-    self._downstream.terminate()
-
-  def consume_and_terminate(self, value):
-    _control.pipe_iterator_to_consumer(
-        self._behavior(value, self._context), self._downstream,
-        self._context.is_active, True)
-
-
-def _pool_wrap(behavior, operation_context):
-  """Wraps an operation-related behavior so that it may be called in a pool.
-
-  Args:
-    behavior: A callable related to carrying out an operation.
-    operation_context: A base_interfaces.OperationContext for the operation.
-
-  Returns:
-    A callable that when called carries out the behavior of the given callable
-      and handles whatever exceptions it raises appropriately.
-  """
-  def translation(*args):
-    try:
-      behavior(*args)
-    except (
-        abandonment.Abandoned,
-        exceptions.ExpirationError,
-        exceptions.CancellationError,
-        exceptions.ServicedError,
-        exceptions.NetworkError) as e:
-      if operation_context.is_active():
-        operation_context.fail(e)
-    except Exception as e:
-      operation_context.fail(e)
-  return callable_util.with_exceptions_logged(
-      translation, _control.INTERNAL_ERROR_LOG_MESSAGE)
-
-
-def adapt_inline_value_in_value_out(method):
-  def adaptation(response_consumer, operation_context):
-    rpc_context = _control.RpcContext(operation_context)
-    return stream_util.TransformingConsumer(
-        lambda request: method(request, rpc_context), response_consumer)
-  return adaptation
-
-
-def adapt_inline_value_in_stream_out(method):
-  def adaptation(response_consumer, operation_context):
-    rpc_context = _control.RpcContext(operation_context)
-    return _ValueInStreamOutConsumer(method, rpc_context, response_consumer)
-  return adaptation
-
-
-def adapt_inline_stream_in_value_out(method, pool):
-  def adaptation(response_consumer, operation_context):
-    rendezvous = _control.Rendezvous()
-    operation_context.add_termination_callback(rendezvous.set_outcome)
-    def in_pool_thread():
-      response_consumer.consume_and_terminate(
-          method(rendezvous, _control.RpcContext(operation_context)))
-    pool.submit(_pool_wrap(in_pool_thread, operation_context))
-    return rendezvous
-  return adaptation
-
-
-def adapt_inline_stream_in_stream_out(method, pool):
-  """Adapts an interfaces.InlineStreamInStreamOutMethod for use with Consumers.
-
-   RPCs may be serviced by calling the return value of this function, passing
-   request values to the stream.Consumer returned from that call, and receiving
-   response values from the stream.Consumer passed to that call.
-
-  Args:
-    method: An interfaces.InlineStreamInStreamOutMethod.
-    pool: A thread pool.
-
-  Returns:
-    A callable that takes a stream.Consumer and a
-      base_interfaces.OperationContext and returns a stream.Consumer.
-  """
-  def adaptation(response_consumer, operation_context):
-    rendezvous = _control.Rendezvous()
-    operation_context.add_termination_callback(rendezvous.set_outcome)
-    def in_pool_thread():
-      _control.pipe_iterator_to_consumer(
-          method(rendezvous, _control.RpcContext(operation_context)),
-          response_consumer, operation_context.is_active, True)
-    pool.submit(_pool_wrap(in_pool_thread, operation_context))
-    return rendezvous
-  return adaptation
-
-
-def adapt_event_value_in_value_out(method):
-  def adaptation(response_consumer, operation_context):
-    def on_payload(payload):
-      method(
-          payload, response_consumer.consume_and_terminate,
-          _control.RpcContext(operation_context))
-    return _control.UnaryConsumer(on_payload)
-  return adaptation
-
-
-def adapt_event_value_in_stream_out(method):
-  def adaptation(response_consumer, operation_context):
-    def on_payload(payload):
-      method(
-          payload, response_consumer, _control.RpcContext(operation_context))
-    return _control.UnaryConsumer(on_payload)
-  return adaptation
-
-
-def adapt_event_stream_in_value_out(method):
-  def adaptation(response_consumer, operation_context):
-    rpc_context = _control.RpcContext(operation_context)
-    return method(response_consumer.consume_and_terminate, rpc_context)
-  return adaptation
-
-
-def adapt_event_stream_in_stream_out(method):
-  def adaptation(response_consumer, operation_context):
-    return method(response_consumer, _control.RpcContext(operation_context))
-  return adaptation
diff --git a/src/python/grpcio/grpc/framework/face/demonstration.py b/src/python/grpcio/grpc/framework/face/demonstration.py
deleted file mode 100644
index f6b4b609ff..0000000000
--- a/src/python/grpcio/grpc/framework/face/demonstration.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Demonstration-suitable implementation of the face layer of RPC Framework."""
-
-from grpc.framework.base import util as _base_util
-from grpc.framework.base import implementations as _base_implementations
-from grpc.framework.face import implementations
-from grpc.framework.foundation import logging_pool
-
-_POOL_SIZE_LIMIT = 5
-
-_MAXIMUM_TIMEOUT = 90
-
-
-class LinkedPair(object):
-  """A Server and Stub that are linked to one another.
-
-  Attributes:
-    server: A Server.
-    stub: A Stub.
-  """
-
-  def shut_down(self):
-    """Shuts down this object and releases its resources."""
-    raise NotImplementedError()
-
-
-class _LinkedPair(LinkedPair):
-
-  def __init__(self, server, stub, front, back, pools):
-    self.server = server
-    self.stub = stub
-    self._front = front
-    self._back = back
-    self._pools = pools
-
-  def shut_down(self):
-    _base_util.wait_for_idle(self._front)
-    _base_util.wait_for_idle(self._back)
-
-    for pool in self._pools:
-      pool.shutdown(wait=True)
-
-
-def server_and_stub(
-    default_timeout,
-    inline_value_in_value_out_methods=None,
-    inline_value_in_stream_out_methods=None,
-    inline_stream_in_value_out_methods=None,
-    inline_stream_in_stream_out_methods=None,
-    event_value_in_value_out_methods=None,
-    event_value_in_stream_out_methods=None,
-    event_stream_in_value_out_methods=None,
-    event_stream_in_stream_out_methods=None,
-    multi_method=None):
-  """Creates a Server and Stub linked together for use."""
-  front_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  front_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  front_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  back_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  back_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  back_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  stub_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  pools = (
-      front_work_pool, front_transmission_pool, front_utility_pool,
-      back_work_pool, back_transmission_pool, back_utility_pool,
-      stub_pool)
-
-  servicer = implementations.servicer(
-      back_work_pool,
-      inline_value_in_value_out_methods=inline_value_in_value_out_methods,
-      inline_value_in_stream_out_methods=inline_value_in_stream_out_methods,
-      inline_stream_in_value_out_methods=inline_stream_in_value_out_methods,
-      inline_stream_in_stream_out_methods=inline_stream_in_stream_out_methods,
-      event_value_in_value_out_methods=event_value_in_value_out_methods,
-      event_value_in_stream_out_methods=event_value_in_stream_out_methods,
-      event_stream_in_value_out_methods=event_stream_in_value_out_methods,
-      event_stream_in_stream_out_methods=event_stream_in_stream_out_methods,
-      multi_method=multi_method)
-
-  front = _base_implementations.front_link(
-      front_work_pool, front_transmission_pool, front_utility_pool)
-  back = _base_implementations.back_link(
-      servicer, back_work_pool, back_transmission_pool, back_utility_pool,
-      default_timeout, _MAXIMUM_TIMEOUT)
-  front.join_rear_link(back)
-  back.join_fore_link(front)
-
-  stub = implementations.stub(front, stub_pool)
-
-  return _LinkedPair(implementations.server(), stub, front, back, pools)
diff --git a/src/python/grpcio/grpc/framework/face/exceptions.py b/src/python/grpcio/grpc/framework/face/exceptions.py
deleted file mode 100644
index f95455604d..0000000000
--- a/src/python/grpcio/grpc/framework/face/exceptions.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Exceptions used in the Face layer of RPC Framework."""
-
-import abc
-
-import six
-
-
-class NoSuchMethodError(Exception):
-  """Raised by customer code to indicate an unrecognized RPC method name.
-
-  Attributes:
-    name: The unrecognized name.
-  """
-
-  def __init__(self, name):
-    """Constructor.
-
-    Args:
-      name: The unrecognized RPC method name.
-    """
-    super(NoSuchMethodError, self).__init__()
-    self.name = name
-
-
-class RpcError(six.with_metaclass(abc.ABCMeta, Exception)):
-  """Common super type for all exceptions raised by the Face layer.
-
-  Only RPC Framework should instantiate and raise these exceptions.
-  """
-
-
-class CancellationError(RpcError):
-  """Indicates that an RPC has been cancelled."""
-
-
-class ExpirationError(RpcError):
-  """Indicates that an RPC has expired ("timed out")."""
-
-
-class NetworkError(RpcError):
-  """Indicates that some error occurred on the network."""
-
-
-class ServicedError(RpcError):
-  """Indicates that the Serviced failed in the course of an RPC."""
-
-
-class ServicerError(RpcError):
-  """Indicates that the Servicer failed in the course of servicing an RPC."""
diff --git a/src/python/grpcio/grpc/framework/face/implementations.py b/src/python/grpcio/grpc/framework/face/implementations.py
deleted file mode 100644
index 96055b4130..0000000000
--- a/src/python/grpcio/grpc/framework/face/implementations.py
+++ /dev/null
@@ -1,320 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Entry points into the Face layer of RPC Framework."""
-
-import six
-
-from grpc.framework.common import cardinality
-from grpc.framework.common import style
-from grpc.framework.base import exceptions as _base_exceptions
-from grpc.framework.base import interfaces as base_interfaces
-from grpc.framework.face import _calls
-from grpc.framework.face import _service
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces
-
-
-class _BaseServicer(base_interfaces.Servicer):
-
-  def __init__(self, methods, multi_method):
-    self._methods = methods
-    self._multi_method = multi_method
-
-  def service(self, name, context, output_consumer):
-    method = self._methods.get(name, None)
-    if method is not None:
-      return method(output_consumer, context)
-    elif self._multi_method is not None:
-      try:
-        return self._multi_method.service(name, output_consumer, context)
-      except exceptions.NoSuchMethodError:
-        raise _base_exceptions.NoSuchMethodError()
-    else:
-      raise _base_exceptions.NoSuchMethodError()
-
-
-class _UnaryUnaryMultiCallable(interfaces.UnaryUnaryMultiCallable):
-
-  def __init__(self, front, name):
-    self._front = front
-    self._name = name
-
-  def __call__(self, request, timeout):
-    return _calls.blocking_value_in_value_out(
-        self._front, self._name, request, timeout, 'unused trace ID')
-
-  def future(self, request, timeout):
-    return _calls.future_value_in_value_out(
-        self._front, self._name, request, timeout, 'unused trace ID')
-
-  def event(self, request, response_callback, abortion_callback, timeout):
-    return _calls.event_value_in_value_out(
-        self._front, self._name, request, response_callback, abortion_callback,
-        timeout, 'unused trace ID')
-
-
-class _UnaryStreamMultiCallable(interfaces.UnaryStreamMultiCallable):
-
-  def __init__(self, front, name):
-    self._front = front
-    self._name = name
-
-  def __call__(self, request, timeout):
-    return _calls.inline_value_in_stream_out(
-        self._front, self._name, request, timeout, 'unused trace ID')
-
-  def event(self, request, response_consumer, abortion_callback, timeout):
-    return _calls.event_value_in_stream_out(
-        self._front, self._name, request, response_consumer, abortion_callback,
-        timeout, 'unused trace ID')
-
-
-class _StreamUnaryMultiCallable(interfaces.StreamUnaryMultiCallable):
-
-  def __init__(self, front, name, pool):
-    self._front = front
-    self._name = name
-    self._pool = pool
-
-  def __call__(self, request_iterator, timeout):
-    return _calls.blocking_stream_in_value_out(
-        self._front, self._name, request_iterator, timeout, 'unused trace ID')
-
-  def future(self, request_iterator, timeout):
-    return _calls.future_stream_in_value_out(
-        self._front, self._name, request_iterator, timeout, 'unused trace ID',
-        self._pool)
-
-  def event(self, response_callback, abortion_callback, timeout):
-    return _calls.event_stream_in_value_out(
-        self._front, self._name, response_callback, abortion_callback, timeout,
-        'unused trace ID')
-
-
-class _StreamStreamMultiCallable(interfaces.StreamStreamMultiCallable):
-
-  def __init__(self, front, name, pool):
-    self._front = front
-    self._name = name
-    self._pool = pool
-
-  def __call__(self, request_iterator, timeout):
-    return _calls.inline_stream_in_stream_out(
-        self._front, self._name, request_iterator, timeout, 'unused trace ID',
-        self._pool)
-
-  def event(self, response_consumer, abortion_callback, timeout):
-    return _calls.event_stream_in_stream_out(
-        self._front, self._name, response_consumer, abortion_callback, timeout,
-        'unused trace ID')
-
-
-class _GenericStub(interfaces.GenericStub):
-  """An interfaces.GenericStub implementation."""
-
-  def __init__(self, front, pool):
-    self._front = front
-    self._pool = pool
-
-  def blocking_value_in_value_out(self, name, request, timeout):
-    return _calls.blocking_value_in_value_out(
-        self._front, name, request, timeout, 'unused trace ID')
-
-  def future_value_in_value_out(self, name, request, timeout):
-    return _calls.future_value_in_value_out(
-        self._front, name, request, timeout, 'unused trace ID')
-
-  def inline_value_in_stream_out(self, name, request, timeout):
-    return _calls.inline_value_in_stream_out(
-        self._front, name, request, timeout, 'unused trace ID')
-
-  def blocking_stream_in_value_out(self, name, request_iterator, timeout):
-    return _calls.blocking_stream_in_value_out(
-        self._front, name, request_iterator, timeout, 'unused trace ID')
-
-  def future_stream_in_value_out(self, name, request_iterator, timeout):
-    return _calls.future_stream_in_value_out(
-        self._front, name, request_iterator, timeout, 'unused trace ID',
-        self._pool)
-
-  def inline_stream_in_stream_out(self, name, request_iterator, timeout):
-    return _calls.inline_stream_in_stream_out(
-        self._front, name, request_iterator, timeout, 'unused trace ID',
-        self._pool)
-
-  def event_value_in_value_out(
-      self, name, request, response_callback, abortion_callback, timeout):
-    return _calls.event_value_in_value_out(
-        self._front, name, request, response_callback, abortion_callback,
-        timeout, 'unused trace ID')
-
-  def event_value_in_stream_out(
-      self, name, request, response_consumer, abortion_callback, timeout):
-    return _calls.event_value_in_stream_out(
-        self._front, name, request, response_consumer, abortion_callback,
-        timeout, 'unused trace ID')
-
-  def event_stream_in_value_out(
-      self, name, response_callback, abortion_callback, timeout):
-    return _calls.event_stream_in_value_out(
-        self._front, name, response_callback, abortion_callback, timeout,
-        'unused trace ID')
-
-  def event_stream_in_stream_out(
-      self, name, response_consumer, abortion_callback, timeout):
-    return _calls.event_stream_in_stream_out(
-        self._front, name, response_consumer, abortion_callback, timeout,
-        'unused trace ID')
-
-  def unary_unary_multi_callable(self, name):
-    return _UnaryUnaryMultiCallable(self._front, name)
-
-  def unary_stream_multi_callable(self, name):
-    return _UnaryStreamMultiCallable(self._front, name)
-
-  def stream_unary_multi_callable(self, name):
-    return _StreamUnaryMultiCallable(self._front, name, self._pool)
-
-  def stream_stream_multi_callable(self, name):
-    return _StreamStreamMultiCallable(self._front, name, self._pool)
-
-
-class _DynamicStub(interfaces.DynamicStub):
-  """An interfaces.DynamicStub implementation."""
-
-  def __init__(self, cardinalities, front, pool):
-    self._cardinalities = cardinalities
-    self._front = front
-    self._pool = pool
-
-  def __getattr__(self, attr):
-    method_cardinality = self._cardinalities.get(attr)
-    if method_cardinality is cardinality.Cardinality.UNARY_UNARY:
-      return _UnaryUnaryMultiCallable(self._front, attr)
-    elif method_cardinality is cardinality.Cardinality.UNARY_STREAM:
-      return _UnaryStreamMultiCallable(self._front, attr)
-    elif method_cardinality is cardinality.Cardinality.STREAM_UNARY:
-      return _StreamUnaryMultiCallable(self._front, attr, self._pool)
-    elif method_cardinality is cardinality.Cardinality.STREAM_STREAM:
-      return _StreamStreamMultiCallable(self._front, attr, self._pool)
-    else:
-      raise AttributeError('_DynamicStub object has no attribute "%s"!' % attr)
-
-
-def _adapt_method_implementations(method_implementations, pool):
-  adapted_implementations = {}
-  for name, method_implementation in six.iteritems(method_implementations):
-    if method_implementation.style is style.Service.INLINE:
-      if method_implementation.cardinality is cardinality.Cardinality.UNARY_UNARY:
-        adapted_implementations[name] = _service.adapt_inline_value_in_value_out(
-            method_implementation.unary_unary_inline)
-      elif method_implementation.cardinality is cardinality.Cardinality.UNARY_STREAM:
-        adapted_implementations[name] = _service.adapt_inline_value_in_stream_out(
-            method_implementation.unary_stream_inline)
-      elif method_implementation.cardinality is cardinality.Cardinality.STREAM_UNARY:
-        adapted_implementations[name] = _service.adapt_inline_stream_in_value_out(
-            method_implementation.stream_unary_inline, pool)
-      elif method_implementation.cardinality is cardinality.Cardinality.STREAM_STREAM:
-        adapted_implementations[name] = _service.adapt_inline_stream_in_stream_out(
-            method_implementation.stream_stream_inline, pool)
-    elif method_implementation.style is style.Service.EVENT:
-      if method_implementation.cardinality is cardinality.Cardinality.UNARY_UNARY:
-        adapted_implementations[name] = _service.adapt_event_value_in_value_out(
-            method_implementation.unary_unary_event)
-      elif method_implementation.cardinality is cardinality.Cardinality.UNARY_STREAM:
-        adapted_implementations[name] = _service.adapt_event_value_in_stream_out(
-            method_implementation.unary_stream_event)
-      elif method_implementation.cardinality is cardinality.Cardinality.STREAM_UNARY:
-        adapted_implementations[name] = _service.adapt_event_stream_in_value_out(
-            method_implementation.stream_unary_event)
-      elif method_implementation.cardinality is cardinality.Cardinality.STREAM_STREAM:
-        adapted_implementations[name] = _service.adapt_event_stream_in_stream_out(
-            method_implementation.stream_stream_event)
-  return adapted_implementations
-
-
-def servicer(pool, method_implementations, multi_method_implementation):
-  """Creates a base_interfaces.Servicer.
-
-  It is guaranteed that any passed interfaces.MultiMethodImplementation will
-  only be called to service an RPC if there is no
-  interfaces.MethodImplementation for the RPC method in the passed
-  method_implementations dictionary.
-
-  Args:
-    pool: A thread pool.
-    method_implementations: A dictionary from RPC method name to
-      interfaces.MethodImplementation object to be used to service the named
-      RPC method.
-    multi_method_implementation: An interfaces.MultiMethodImplementation to be
-      used to service any RPCs not serviced by the
-      interfaces.MethodImplementations given in the method_implementations
-      dictionary, or None.
-
-  Returns:
-    A base_interfaces.Servicer that services RPCs via the given implementations.
-  """
-  adapted_implementations = _adapt_method_implementations(
-      method_implementations, pool)
-  return _BaseServicer(adapted_implementations, multi_method_implementation)
-
-
-def generic_stub(front, pool):
-  """Creates an interfaces.GenericStub.
-
-  Args:
-    front: A base_interfaces.Front.
-    pool: A futures.ThreadPoolExecutor.
-
-  Returns:
-    An interfaces.GenericStub that performs RPCs via the given
-      base_interfaces.Front.
-  """
-  return _GenericStub(front, pool)
-
-
-def dynamic_stub(cardinalities, front, pool, prefix):
-  """Creates an interfaces.DynamicStub.
-
-  Args:
-    cardinalities: A dict from RPC method name to cardinality.Cardinality
-      value identifying the cardinality of every RPC method to be supported by
-      the created interfaces.DynamicStub.
-    front: A base_interfaces.Front.
-    pool: A futures.ThreadPoolExecutor.
-    prefix: A string to prepend when mapping requested attribute name to RPC
-      method name during attribute access on the created
-      interfaces.DynamicStub.
-
-  Returns:
-    An interfaces.DynamicStub that performs RPCs via the given
-      base_interfaces.Front.
-  """
-  return _DynamicStub(cardinalities, front, pool)
diff --git a/src/python/grpcio/grpc/framework/face/interfaces.py b/src/python/grpcio/grpc/framework/face/interfaces.py
deleted file mode 100644
index e9a25c17e1..0000000000
--- a/src/python/grpcio/grpc/framework/face/interfaces.py
+++ /dev/null
@@ -1,634 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces for the face layer of RPC Framework."""
-
-import abc
-import enum
-
-import six
-
-# cardinality, style, exceptions, abandonment, future, and stream are
-# referenced from specification in this module.
-from grpc.framework.common import cardinality  # pylint: disable=unused-import
-from grpc.framework.common import style  # pylint: disable=unused-import
-from grpc.framework.face import exceptions  # pylint: disable=unused-import
-from grpc.framework.foundation import abandonment  # pylint: disable=unused-import
-from grpc.framework.foundation import future  # pylint: disable=unused-import
-from grpc.framework.foundation import stream  # pylint: disable=unused-import
-
-
-@enum.unique
-class Abortion(enum.Enum):
-  """Categories of RPC abortion."""
-  CANCELLED = 'cancelled'
-  EXPIRED = 'expired'
-  NETWORK_FAILURE = 'network failure'
-  SERVICED_FAILURE = 'serviced failure'
-  SERVICER_FAILURE = 'servicer failure'
-
-
-class CancellableIterator(six.with_metaclass(abc.ABCMeta)):
-  """Implements the Iterator protocol and affords a cancel method."""
-
-  @abc.abstractmethod
-  def __iter__(self):
-    """Returns the self object in accordance with the Iterator protocol."""
-    raise NotImplementedError()
-
-  def __next__(self):
-    return self.next()
-
-  @abc.abstractmethod
-  def next(self):
-    """Returns a value or raises StopIteration per the Iterator protocol."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def cancel(self):
-    """Requests cancellation of whatever computation underlies this iterator."""
-    raise NotImplementedError()
-
-
-class RpcContext(six.with_metaclass(abc.ABCMeta)):
-  """Provides RPC-related information and action."""
-
-  @abc.abstractmethod
-  def is_active(self):
-    """Describes whether the RPC is active or has terminated."""
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def time_remaining(self):
-    """Describes the length of allowed time remaining for the RPC.
-
-    Returns:
-      A nonnegative float indicating the length of allowed time in seconds
-      remaining for the RPC to complete before it is considered to have timed
-      out.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def add_abortion_callback(self, abortion_callback):
-    """Registers a callback to be called if the RPC is aborted.
-
-    Args:
-      abortion_callback: A callable to be called and passed an Abortion value
-        in the event of RPC abortion.
-    """
-    raise NotImplementedError()
-
-
-class Call(six.with_metaclass(abc.ABCMeta)):
-  """Invocation-side representation of an RPC.
-
-  Attributes:
-    context: An RpcContext affording information about the RPC.
-  """
-
-  @abc.abstractmethod
-  def cancel(self):
-    """Requests cancellation of the RPC."""
-    raise NotImplementedError()
-
-
-class UnaryUnaryMultiCallable(six.with_metaclass(abc.ABCMeta)):
-  """Affords invoking a unary-unary RPC in any call style."""
-
-  @abc.abstractmethod
-  def __call__(self, request, timeout):
-    """Synchronously invokes the underlying RPC.
-
-    Args:
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      The response value for the RPC.
-
-    Raises:
-      exceptions.RpcError: Indicating that the RPC was aborted.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def future(self, request, timeout):
-    """Asynchronously invokes the underlying RPC.
-
-    Args:
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A future.Future representing the RPC. In the event of RPC completion, the
-        returned Future's result value will be the response value of the RPC.
-        In the event of RPC abortion, the returned Future's exception value
-        will be an exceptions.RpcError.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event(self, request, response_callback, abortion_callback, timeout):
-    """Asynchronously invokes the underlying RPC.
-
-    Args:
-      request: The request value for the RPC.
-      response_callback: A callback to be called to accept the restponse value
-        of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A Call object for the RPC.
-    """
-    raise NotImplementedError()
-
-
-class UnaryStreamMultiCallable(six.with_metaclass(abc.ABCMeta)):
-  """Affords invoking a unary-stream RPC in any call style."""
-
-  @abc.abstractmethod
-  def __call__(self, request, timeout):
-    """Synchronously invokes the underlying RPC.
-
-    Args:
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A CancellableIterator that yields the response values of the RPC and
-        affords RPC cancellation. Drawing response values from the returned
-        CancellableIterator may raise exceptions.RpcError indicating abortion
-        of the RPC.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event(self, request, response_consumer, abortion_callback, timeout):
-    """Asynchronously invokes the underlying RPC.
-
-    Args:
-      request: The request value for the RPC.
-      response_consumer: A stream.Consumer to be called to accept the restponse
-        values of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A Call object for the RPC.
-    """
-    raise NotImplementedError()
-
-
-class StreamUnaryMultiCallable(six.with_metaclass(abc.ABCMeta)):
-  """Affords invoking a stream-unary RPC in any call style."""
-
-  @abc.abstractmethod
-  def __call__(self, request_iterator, timeout):
-    """Synchronously invokes the underlying RPC.
-
-    Args:
-      request_iterator: An iterator that yields request values for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      The response value for the RPC.
-
-    Raises:
-      exceptions.RpcError: Indicating that the RPC was aborted.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def future(self, request_iterator, timeout):
-    """Asynchronously invokes the underlying RPC.
-
-    Args:
-      request_iterator: An iterator that yields request values for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A future.Future representing the RPC. In the event of RPC completion, the
-        returned Future's result value will be the response value of the RPC.
-        In the event of RPC abortion, the returned Future's exception value
-        will be an exceptions.RpcError.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event(self, response_callback, abortion_callback, timeout):
-    """Asynchronously invokes the underlying RPC.
-
-    Args:
-      request: The request value for the RPC.
-      response_callback: A callback to be called to accept the restponse value
-        of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A pair of a Call object for the RPC and a stream.Consumer to which the
-        request values of the RPC should be passed.
-    """
-    raise NotImplementedError()
-
-
-class StreamStreamMultiCallable(six.with_metaclass(abc.ABCMeta)):
-  """Affords invoking a stream-stream RPC in any call style."""
-
-  @abc.abstractmethod
-  def __call__(self, request_iterator, timeout):
-    """Synchronously invokes the underlying RPC.
-
-    Args:
-      request_iterator: An iterator that yields request values for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A CancellableIterator that yields the response values of the RPC and
-        affords RPC cancellation. Drawing response values from the returned
-        CancellableIterator may raise exceptions.RpcError indicating abortion
-        of the RPC.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event(self, response_consumer, abortion_callback, timeout):
-    """Asynchronously invokes the underlying RPC.
-
-l    Args:
-      response_consumer: A stream.Consumer to be called to accept the restponse
-        values of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A pair of a Call object for the RPC and a stream.Consumer to which the
-        request values of the RPC should be passed.
-    """
-    raise NotImplementedError()
-
-
-class MethodImplementation(six.with_metaclass(abc.ABCMeta)):
-  """A sum type that describes an RPC method implementation.
-
-  Attributes:
-    cardinality: A cardinality.Cardinality value.
-    style: A style.Service value.
-    unary_unary_inline: The implementation of the RPC method as a callable
-      value that takes a request value and an RpcContext object and returns a
-      response value. Only non-None if cardinality is
-      cardinality.Cardinality.UNARY_UNARY and style is style.Service.INLINE.
-    unary_stream_inline: The implementation of the RPC method as a callable
-      value that takes a request value and an RpcContext object and returns an
-      iterator of response values. Only non-None if cardinality is
-      cardinality.Cardinality.UNARY_STREAM and style is style.Service.INLINE.
-    stream_unary_inline: The implementation of the RPC method as a callable
-      value that takes an iterator of request values and an RpcContext object
-      and returns a response value. Only non-None if cardinality is
-      cardinality.Cardinality.STREAM_UNARY and style is style.Service.INLINE.
-    stream_stream_inline: The implementation of the RPC method as a callable
-      value that takes an iterator of request values and an RpcContext object
-      and returns an iterator of response values. Only non-None if cardinality
-      is cardinality.Cardinality.STREAM_STREAM and style is
-      style.Service.INLINE.
-    unary_unary_event: The implementation of the RPC method as a callable value
-      that takes a request value, a response callback to which to pass the
-      response value of the RPC, and an RpcContext. Only non-None if
-      cardinality is cardinality.Cardinality.UNARY_UNARY and style is
-      style.Service.EVENT.
-    unary_stream_event: The implementation of the RPC method as a callable
-      value that takes a request value, a stream.Consumer to which to pass the
-      the response values of the RPC, and an RpcContext. Only non-None if
-      cardinality is cardinality.Cardinality.UNARY_STREAM and style is
-      style.Service.EVENT.
-    stream_unary_event: The implementation of the RPC method as a callable
-      value that takes a response callback to which to pass the response value
-      of the RPC and an RpcContext and returns a stream.Consumer to which the
-      request values of the RPC should be passed. Only non-None if cardinality
-      is cardinality.Cardinality.STREAM_UNARY and style is style.Service.EVENT.
-    stream_stream_event: The implementation of the RPC method as a callable
-      value that takes a stream.Consumer to which to pass the response values
-      of the RPC and an RpcContext and returns a stream.Consumer to which the
-      request values of the RPC should be passed. Only non-None if cardinality
-      is cardinality.Cardinality.STREAM_STREAM and style is
-      style.Service.EVENT.
-  """
-
-
-class MultiMethodImplementation(six.with_metaclass(abc.ABCMeta)):
-  """A general type able to service many RPC methods."""
-
-  @abc.abstractmethod
-  def service(self, name, response_consumer, context):
-    """Services an RPC.
-
-    Args:
-      name: The RPC method name.
-      response_consumer: A stream.Consumer to be called to accept the response
-        values of the RPC.
-      context: An RpcContext object.
-
-    Returns:
-      A stream.Consumer with which to accept the request values of the RPC. The
-        consumer returned from this method may or may not be invoked to
-        completion: in the case of RPC abortion, RPC Framework will simply stop
-        passing values to this object. Implementations must not assume that this
-        object will be called to completion of the request stream or even called
-        at all.
-
-    Raises:
-      abandonment.Abandoned: May or may not be raised when the RPC has been
-        aborted.
-      exceptions.NoSuchMethodError: If this MultiMethod does not recognize the
-        given RPC method name and is not able to service the RPC.
-    """
-    raise NotImplementedError()
-
-
-class GenericStub(six.with_metaclass(abc.ABCMeta)):
-  """Affords RPC methods to callers."""
-
-  @abc.abstractmethod
-  def blocking_value_in_value_out(self, name, request, timeout):
-    """Invokes a unary-request-unary-response RPC method.
-
-    This method blocks until either returning the response value of the RPC
-    (in the event of RPC completion) or raising an exception (in the event of
-    RPC abortion).
-
-    Args:
-      name: The RPC method name.
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      The response value for the RPC.
-
-    Raises:
-      exceptions.RpcError: Indicating that the RPC was aborted.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def future_value_in_value_out(self, name, request, timeout):
-    """Invokes a unary-request-unary-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A future.Future representing the RPC. In the event of RPC completion, the
-        returned Future will return an outcome indicating that the RPC returned
-        the response value of the RPC. In the event of RPC abortion, the
-        returned Future will return an outcome indicating that the RPC raised
-        an exceptions.RpcError.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def inline_value_in_stream_out(self, name, request, timeout):
-    """Invokes a unary-request-stream-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      request: The request value for the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A CancellableIterator that yields the response values of the RPC and
-        affords RPC cancellation. Drawing response values from the returned
-        CancellableIterator may raise exceptions.RpcError indicating abortion of
-        the RPC.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def blocking_stream_in_value_out(self, name, request_iterator, timeout):
-    """Invokes a stream-request-unary-response RPC method.
-
-    This method blocks until either returning the response value of the RPC
-    (in the event of RPC completion) or raising an exception (in the event of
-    RPC abortion).
-
-    Args:
-      name: The RPC method name.
-      request_iterator: An iterator that yields the request values of the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      The response value for the RPC.
-
-    Raises:
-      exceptions.RpcError: Indicating that the RPC was aborted.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def future_stream_in_value_out(self, name, request_iterator, timeout):
-    """Invokes a stream-request-unary-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      request_iterator: An iterator that yields the request values of the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A future.Future representing the RPC. In the event of RPC completion, the
-        returned Future will return an outcome indicating that the RPC returned
-        the response value of the RPC. In the event of RPC abortion, the
-        returned Future will return an outcome indicating that the RPC raised
-        an exceptions.RpcError.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def inline_stream_in_stream_out(self, name, request_iterator, timeout):
-    """Invokes a stream-request-stream-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      request_iterator: An iterator that yields the request values of the RPC.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A CancellableIterator that yields the response values of the RPC and
-        affords RPC cancellation. Drawing response values from the returned
-        CancellableIterator may raise exceptions.RpcError indicating abortion of
-        the RPC.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event_value_in_value_out(
-      self, name, request, response_callback, abortion_callback, timeout):
-    """Event-driven invocation of a unary-request-unary-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      request: The request value for the RPC.
-      response_callback: A callback to be called to accept the response value
-        of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A Call object for the RPC.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event_value_in_stream_out(
-      self, name, request, response_consumer, abortion_callback, timeout):
-    """Event-driven invocation of a unary-request-stream-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      request: The request value for the RPC.
-      response_consumer: A stream.Consumer to be called to accept the response
-        values of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A Call object for the RPC.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event_stream_in_value_out(
-      self, name, response_callback, abortion_callback, timeout):
-    """Event-driven invocation of a unary-request-unary-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      response_callback: A callback to be called to accept the response value
-        of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A pair of a Call object for the RPC and a stream.Consumer to which the
-        request values of the RPC should be passed.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def event_stream_in_stream_out(
-      self, name, response_consumer, abortion_callback, timeout):
-    """Event-driven invocation of a unary-request-stream-response RPC method.
-
-    Args:
-      name: The RPC method name.
-      response_consumer: A stream.Consumer to be called to accept the response
-        values of the RPC.
-      abortion_callback: A callback to be called and passed an Abortion value
-        in the event of RPC abortion.
-      timeout: A duration of time in seconds to allow for the RPC.
-
-    Returns:
-      A pair of a Call object for the RPC and a stream.Consumer to which the
-        request values of the RPC should be passed.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def unary_unary_multi_callable(self, name):
-    """Creates a UnaryUnaryMultiCallable for a unary-unary RPC method.
-
-    Args:
-      name: The RPC method name.
-
-    Returns:
-      A UnaryUnaryMultiCallable value for the named unary-unary RPC method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def unary_stream_multi_callable(self, name):
-    """Creates a UnaryStreamMultiCallable for a unary-stream RPC method.
-
-    Args:
-      name: The RPC method name.
-
-    Returns:
-      A UnaryStreamMultiCallable value for the name unary-stream RPC method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def stream_unary_multi_callable(self, name):
-    """Creates a StreamUnaryMultiCallable for a stream-unary RPC method.
-
-    Args:
-      name: The RPC method name.
-
-    Returns:
-      A StreamUnaryMultiCallable value for the named stream-unary RPC method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def stream_stream_multi_callable(self, name):
-    """Creates a StreamStreamMultiCallable for a stream-stream RPC method.
-
-    Args:
-      name: The RPC method name.
-
-    Returns:
-      A StreamStreamMultiCallable value for the named stream-stream RPC method.
-    """
-    raise NotImplementedError()
-
-
-class DynamicStub(six.with_metaclass(abc.ABCMeta)):
-  """A stub with RPC-method-bound multi-callable attributes.
-
-  Instances of this type responsd to attribute access as follows: if the
-  requested attribute is the name of a unary-unary RPC method, the value of the
-  attribute will be a UnaryUnaryMultiCallable with which to invoke the RPC
-  method; if the requested attribute is the name of a unary-stream RPC method,
-  the value of the attribute will be a UnaryStreamMultiCallable with which to
-  invoke the RPC method; if the requested attribute is the name of a
-  stream-unary RPC method, the value of the attribute will be a
-  StreamUnaryMultiCallable with which to invoke the RPC method; and if the
-  requested attribute is the name of a stream-stream RPC method, the value of
-  the attribute will be a StreamStreamMultiCallable with which to invoke the
-  RPC method.
-  """
diff --git a/src/python/grpcio/grpc/framework/face/utilities.py b/src/python/grpcio/grpc/framework/face/utilities.py
deleted file mode 100644
index a63fe8c60d..0000000000
--- a/src/python/grpcio/grpc/framework/face/utilities.py
+++ /dev/null
@@ -1,177 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities for RPC framework's face layer."""
-
-import collections
-
-from grpc.framework.common import cardinality
-from grpc.framework.common import style
-from grpc.framework.face import interfaces
-from grpc.framework.foundation import stream
-
-
-class _MethodImplementation(
-    interfaces.MethodImplementation,
-    collections.namedtuple(
-        '_MethodImplementation',
-        ['cardinality', 'style', 'unary_unary_inline', 'unary_stream_inline',
-         'stream_unary_inline', 'stream_stream_inline', 'unary_unary_event',
-         'unary_stream_event', 'stream_unary_event', 'stream_stream_event',])):
-  pass
-
-
-def unary_unary_inline(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a unary-unary RPC method as a callable value
-      that takes a request value and an interfaces.RpcContext object and
-      returns a response value.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.UNARY_UNARY, style.Service.INLINE, behavior,
-      None, None, None, None, None, None, None)
-
-
-def unary_stream_inline(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a unary-stream RPC method as a callable
-      value that takes a request value and an interfaces.RpcContext object and
-      returns an iterator of response values.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.UNARY_STREAM, style.Service.INLINE, None,
-      behavior, None, None, None, None, None, None)
-
-
-def stream_unary_inline(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a stream-unary RPC method as a callable
-      value that takes an iterator of request values and an
-      interfaces.RpcContext object and returns a response value.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.STREAM_UNARY, style.Service.INLINE, None, None,
-      behavior, None, None, None, None, None)
-
-
-def stream_stream_inline(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a stream-stream RPC method as a callable
-      value that takes an iterator of request values and an
-      interfaces.RpcContext object and returns an iterator of response values.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.STREAM_STREAM, style.Service.INLINE, None, None,
-      None, behavior, None, None, None, None)
-
-
-def unary_unary_event(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a unary-unary RPC method as a callable
-      value that takes a request value, a response callback to which to pass
-      the response value of the RPC, and an interfaces.RpcContext.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.UNARY_UNARY, style.Service.EVENT, None, None,
-      None, None, behavior, None, None, None)
-
-
-def unary_stream_event(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a unary-stream RPC method as a callable
-      value that takes a request value, a stream.Consumer to which to pass the
-      the response values of the RPC, and an interfaces.RpcContext.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.UNARY_STREAM, style.Service.EVENT, None, None,
-      None, None, None, behavior, None, None)
-
-
-def stream_unary_event(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a stream-unary RPC method as a callable
-      value that takes a response callback to which to pass the response value
-      of the RPC and an interfaces.RpcContext and returns a stream.Consumer to
-      which the request values of the RPC should be passed.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.STREAM_UNARY, style.Service.EVENT, None, None,
-      None, None, None, None, behavior, None)
-
-
-def stream_stream_event(behavior):
-  """Creates an interfaces.MethodImplementation for the given behavior.
-
-  Args:
-    behavior: The implementation of a stream-stream RPC method as a callable
-      value that takes a stream.Consumer to which to pass the response values
-      of the RPC and an interfaces.RpcContext and returns a stream.Consumer to
-      which the request values of the RPC should be passed.
-
-  Returns:
-    An interfaces.MethodImplementation derived from the given behavior.
-  """
-  return _MethodImplementation(
-      cardinality.Cardinality.STREAM_STREAM, style.Service.EVENT, None, None,
-      None, None, None, None, None, behavior)
diff --git a/src/python/grpcio/tests/unit/framework/face/__init__.py b/src/python/grpcio/tests/unit/framework/face/__init__.py
deleted file mode 100644
index 7086519106..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/__init__.py b/src/python/grpcio/tests/unit/framework/face/testing/__init__.py
deleted file mode 100644
index 7086519106..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/base_util.py b/src/python/grpcio/tests/unit/framework/face/testing/base_util.py
deleted file mode 100644
index 59652b3e90..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/base_util.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Utilities for creating Base-layer objects for use in Face-layer tests."""
-
-import abc
-
-import six
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.base import util as _base_util
-from grpc.framework.base import implementations
-from grpc.framework.base import in_memory
-from grpc.framework.base import interfaces  # pylint: disable=unused-import
-from grpc.framework.foundation import logging_pool
-
-_POOL_SIZE_LIMIT = 5
-
-_MAXIMUM_TIMEOUT = 90
-
-
-class LinkedPair(six.with_metaclass(abc.ABCMeta)):
-  """A Front and Back that are linked to one another.
-
-  Attributes:
-    front: An interfaces.Front.
-    back: An interfaces.Back.
-  """
-
-  @abc.abstractmethod
-  def shut_down(self):
-    """Shuts down this object and releases its resources."""
-    raise NotImplementedError()
-
-
-class _LinkedPair(LinkedPair):
-
-  def __init__(self, front, back, pools):
-    self.front = front
-    self.back = back
-    self._pools = pools
-
-  def shut_down(self):
-    _base_util.wait_for_idle(self.front)
-    _base_util.wait_for_idle(self.back)
-
-    for pool in self._pools:
-      pool.shutdown(wait=True)
-
-
-def linked_pair(servicer, default_timeout):
-  """Creates a Server and Stub linked together for use."""
-  link_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  front_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  front_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  front_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  back_work_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  back_transmission_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  back_utility_pool = logging_pool.pool(_POOL_SIZE_LIMIT)
-  pools = (
-      link_pool,
-      front_work_pool, front_transmission_pool, front_utility_pool,
-      back_work_pool, back_transmission_pool, back_utility_pool)
-
-  link = in_memory.Link(link_pool)
-  front = implementations.front_link(
-      front_work_pool, front_transmission_pool, front_utility_pool)
-  back = implementations.back_link(
-      servicer, back_work_pool, back_transmission_pool, back_utility_pool,
-      default_timeout, _MAXIMUM_TIMEOUT)
-  front.join_rear_link(link)
-  link.join_fore_link(front)
-  back.join_fore_link(link)
-  link.join_rear_link(back)
-
-  return _LinkedPair(front, back, pools)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py
deleted file mode 100644
index 2ebe1a32a4..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/blocking_invocation_inline_service_test_case.py
+++ /dev/null
@@ -1,224 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A test to verify an implementation of the Face layer of RPC Framework."""
-
-# unittest is referenced from specification in this module.
-import abc
-import unittest  # pylint: disable=unused-import
-
-import six
-
-from grpc.framework.face import exceptions
-from tests.unit.framework.common import test_constants
-from tests.unit.framework.face.testing import control
-from tests.unit.framework.face.testing import coverage
-from tests.unit.framework.face.testing import digest
-from tests.unit.framework.face.testing import stock_service
-from tests.unit.framework.face.testing import test_case
-
-
-class BlockingInvocationInlineServiceTestCase(
-    six.with_metaclass(abc.ABCMeta,
-    test_case.FaceTestCase, coverage.BlockingCoverage)):
-  """A test of the Face layer of RPC Framework.
-
-  Concrete subclasses must also extend unittest.TestCase.
-  """
-
-  def setUp(self):
-    """See unittest.TestCase.setUp for full specification.
-
-    Overriding implementations must call this implementation.
-    """
-    self.control = control.PauseFailControl()
-    self.digest = digest.digest(
-        stock_service.STOCK_TEST_SERVICE, self.control, None)
-
-    self.stub, self.memo = self.set_up_implementation(
-        self.digest.name, self.digest.methods,
-        self.digest.inline_method_implementations, None)
-
-  def tearDown(self):
-    """See unittest.TestCase.tearDown for full specification.
-
-    Overriding implementations must call this implementation.
-    """
-    self.tear_down_implementation(self.memo)
-
-  def testSuccessfulUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        response = self.stub.blocking_value_in_value_out(
-            name, request, test_constants.LONG_TIMEOUT)
-
-        test_messages.verify(request, response, self)
-
-  def testSuccessfulUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        response_iterator = self.stub.inline_value_in_stream_out(
-            name, request, test_constants.LONG_TIMEOUT)
-        responses = list(response_iterator)
-
-        test_messages.verify(request, responses, self)
-
-  def testSuccessfulStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        response = self.stub.blocking_stream_in_value_out(
-            name, iter(requests), test_constants.LONG_TIMEOUT)
-
-        test_messages.verify(requests, response, self)
-
-  def testSuccessfulStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        response_iterator = self.stub.inline_stream_in_stream_out(
-            name, iter(requests), test_constants.LONG_TIMEOUT)
-        responses = list(response_iterator)
-
-        test_messages.verify(requests, responses, self)
-
-  def testSequentialInvocations(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        first_request = test_messages.request()
-        second_request = test_messages.request()
-
-        first_response = self.stub.blocking_value_in_value_out(
-            name, first_request, test_constants.SHORT_TIMEOUT)
-
-        test_messages.verify(first_request, first_response, self)
-
-        second_response = self.stub.blocking_value_in_value_out(
-            name, second_request, test_constants.SHORT_TIMEOUT)
-
-        test_messages.verify(second_request, second_response, self)
-
-  def testExpiredUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.pause(), self.assertRaises(
-            exceptions.ExpirationError):
-          multi_callable = self.stub.unary_unary_multi_callable(name)
-          multi_callable(request, test_constants.SHORT_TIMEOUT)
-
-  def testExpiredUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.pause(), self.assertRaises(
-            exceptions.ExpirationError):
-          response_iterator = self.stub.inline_value_in_stream_out(
-              name, request, test_constants.SHORT_TIMEOUT)
-          list(response_iterator)
-
-  def testExpiredStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.pause(), self.assertRaises(
-            exceptions.ExpirationError):
-          multi_callable = self.stub.stream_unary_multi_callable(name)
-          multi_callable(iter(requests), test_constants.SHORT_TIMEOUT)
-
-  def testExpiredStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.pause(), self.assertRaises(
-            exceptions.ExpirationError):
-          response_iterator = self.stub.inline_stream_in_stream_out(
-              name, iter(requests), test_constants.SHORT_TIMEOUT)
-          list(response_iterator)
-
-  def testFailedUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.fail(), self.assertRaises(exceptions.ServicerError):
-          self.stub.blocking_value_in_value_out(name, request,
-                                                test_constants.SHORT_TIMEOUT)
-
-  def testFailedUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.fail(), self.assertRaises(exceptions.ServicerError):
-          response_iterator = self.stub.inline_value_in_stream_out(
-              name, request, test_constants.SHORT_TIMEOUT)
-          list(response_iterator)
-
-  def testFailedStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.fail(), self.assertRaises(exceptions.ServicerError):
-          self.stub.blocking_stream_in_value_out(name, iter(requests),
-                                                 test_constants.SHORT_TIMEOUT)
-
-  def testFailedStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.fail(), self.assertRaises(exceptions.ServicerError):
-          response_iterator = self.stub.inline_stream_in_stream_out(
-              name, iter(requests), test_constants.SHORT_TIMEOUT)
-          list(response_iterator)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/callback.py b/src/python/grpcio/tests/unit/framework/face/testing/callback.py
deleted file mode 100644
index d0e63c8c56..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/callback.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A utility useful in tests of asynchronous, event-driven interfaces."""
-
-import threading
-
-from grpc.framework.foundation import stream
-
-
-class Callback(stream.Consumer):
-  """A utility object useful in tests of asynchronous code."""
-
-  def __init__(self):
-    self._condition = threading.Condition()
-    self._unary_response = None
-    self._streamed_responses = []
-    self._completed = False
-    self._abortion = None
-
-  def abort(self, abortion):
-    with self._condition:
-      self._abortion = abortion
-      self._condition.notify_all()
-
-  def complete(self, unary_response):
-    with self._condition:
-      self._unary_response = unary_response
-      self._completed = True
-      self._condition.notify_all()
-
-  def consume(self, streamed_response):
-    with self._condition:
-      self._streamed_responses.append(streamed_response)
-
-  def terminate(self):
-    with self._condition:
-      self._completed = True
-      self._condition.notify_all()
-
-  def consume_and_terminate(self, streamed_response):
-    with self._condition:
-      self._streamed_responses.append(streamed_response)
-      self._completed = True
-      self._condition.notify_all()
-
-  def block_until_terminated(self):
-    with self._condition:
-      while self._abortion is None and not self._completed:
-        self._condition.wait()
-
-  def response(self):
-    with self._condition:
-      if self._abortion is None:
-        return self._unary_response
-      else:
-        raise AssertionError('Aborted with abortion "%s"!' % self._abortion)
-
-  def responses(self):
-    with self._condition:
-      if self._abortion is None:
-        return list(self._streamed_responses)
-      else:
-        raise AssertionError('Aborted with abortion "%s"!' % self._abortion)
-
-  def abortion(self):
-    with self._condition:
-      return self._abortion
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/control.py b/src/python/grpcio/tests/unit/framework/face/testing/control.py
deleted file mode 100644
index 8425affcc9..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/control.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Code for instructing systems under test to block or fail."""
-
-import abc
-import contextlib
-import threading
-
-import six
-
-
-class Control(six.with_metaclass(abc.ABCMeta)):
-  """An object that accepts program control from a system under test.
-
-  Systems under test passed a Control should call its control() method
-  frequently during execution. The control() method may block, raise an
-  exception, or do nothing, all according to the enclosing test's desire for
-  the system under test to simulate hanging, failing, or functioning.
-  """
-
-  @abc.abstractmethod
-  def control(self):
-    """Potentially does anything."""
-    raise NotImplementedError()
-
-
-class PauseFailControl(Control):
-  """A Control that can be used to pause or fail code under control."""
-
-  def __init__(self):
-    self._condition = threading.Condition()
-    self._paused = False
-    self._fail = False
-
-  def control(self):
-    with self._condition:
-      if self._fail:
-        raise ValueError()
-
-      while self._paused:
-        self._condition.wait()
-
-  @contextlib.contextmanager
-  def pause(self):
-    """Pauses code under control while controlling code is in context."""
-    with self._condition:
-      self._paused = True
-    yield
-    with self._condition:
-      self._paused = False
-      self._condition.notify_all()
-
-  @contextlib.contextmanager
-  def fail(self):
-    """Fails code under control while controlling code is in context."""
-    with self._condition:
-      self._fail = True
-    yield
-    with self._condition:
-      self._fail = False
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/coverage.py b/src/python/grpcio/tests/unit/framework/face/testing/coverage.py
deleted file mode 100644
index 3c88b7841a..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/coverage.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Governs coverage for the tests of the Face layer of RPC Framework."""
-
-import abc
-
-import six
-
-# These classes are only valid when inherited by unittest.TestCases.
-# pylint: disable=invalid-name
-
-
-class BlockingCoverage(six.with_metaclass(abc.ABCMeta)):
-  """Specification of test coverage for blocking behaviors."""
-
-  @abc.abstractmethod
-  def testSuccessfulUnaryRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testSuccessfulUnaryRequestStreamResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testSuccessfulStreamRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testSuccessfulStreamRequestStreamResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testSequentialInvocations(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testExpiredUnaryRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testExpiredUnaryRequestStreamResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testExpiredStreamRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testExpiredStreamRequestStreamResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testFailedUnaryRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testFailedUnaryRequestStreamResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testFailedStreamRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testFailedStreamRequestStreamResponse(self):
-    raise NotImplementedError()
-
-
-class FullCoverage(six.with_metaclass(abc.ABCMeta, BlockingCoverage)):
-  """Specification of test coverage for non-blocking behaviors."""
-
-  @abc.abstractmethod
-  def testParallelInvocations(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testWaitingForSomeButNotAllParallelInvocations(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testCancelledUnaryRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testCancelledUnaryRequestStreamResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testCancelledStreamRequestUnaryResponse(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def testCancelledStreamRequestStreamResponse(self):
-    raise NotImplementedError()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/digest.py b/src/python/grpcio/tests/unit/framework/face/testing/digest.py
deleted file mode 100644
index 2b45aded20..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/digest.py
+++ /dev/null
@@ -1,452 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Code for making a service.TestService more amenable to use in tests."""
-
-import collections
-import threading
-
-import six
-
-# testing_control, interfaces, and testing_service are referenced from
-# specification in this module.
-from grpc.framework.common import cardinality
-from grpc.framework.common import style
-from grpc.framework.face import exceptions
-from grpc.framework.face import interfaces as face_interfaces
-from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_util
-from tests.unit.framework.face.testing import control as testing_control  # pylint: disable=unused-import
-from tests.unit.framework.face.testing import interfaces  # pylint: disable=unused-import
-from tests.unit.framework.face.testing import service as testing_service  # pylint: disable=unused-import
-
-_IDENTITY = lambda x: x
-
-
-class TestServiceDigest(
-    collections.namedtuple(
-        'TestServiceDigest',
-        ['name',
-         'methods',
-         'inline_method_implementations',
-         'event_method_implementations',
-         'multi_method_implementation',
-         'unary_unary_messages_sequences',
-         'unary_stream_messages_sequences',
-         'stream_unary_messages_sequences',
-         'stream_stream_messages_sequences'])):
-  """A transformation of a service.TestService.
-
-  Attributes:
-    name: The RPC service name to be used in the test.
-    methods: A sequence of interfaces.Method objects describing the RPC
-      methods that will be called during the test.
-    inline_method_implementations: A dict from RPC method name to
-      face_interfaces.MethodImplementation object to be used in tests of
-      in-line calls to behaviors under test.
-    event_method_implementations: A dict from RPC method name to
-      face_interfaces.MethodImplementation object to be used in tests of
-      event-driven calls to behaviors under test.
-    multi_method_implementation: A face_interfaces.MultiMethodImplementation to
-      be used in tests of generic calls to behaviors under test.
-    unary_unary_messages_sequences: A dict from method name to sequence of
-      service.UnaryUnaryTestMessages objects to be used to test the method
-      with the given name.
-    unary_stream_messages_sequences: A dict from method name to sequence of
-      service.UnaryStreamTestMessages objects to be used to test the method
-      with the given name.
-    stream_unary_messages_sequences: A dict from method name to sequence of
-      service.StreamUnaryTestMessages objects to be used to test the method
-      with the given name.
-    stream_stream_messages_sequences: A dict from method name to sequence of
-      service.StreamStreamTestMessages objects to be used to test the
-      method with the given name.
-    serialization: A serial.Serialization object describing serialization
-      behaviors for all the RPC methods.
-  """
-
-
-class _BufferingConsumer(stream.Consumer):
-  """A trivial Consumer that dumps what it consumes in a user-mutable buffer."""
-
-  def __init__(self):
-    self.consumed = []
-    self.terminated = False
-
-  def consume(self, value):
-    self.consumed.append(value)
-
-  def terminate(self):
-    self.terminated = True
-
-  def consume_and_terminate(self, value):
-    self.consumed.append(value)
-    self.terminated = True
-
-
-class _InlineUnaryUnaryMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, unary_unary_test_method, control):
-    self._test_method = unary_unary_test_method
-    self._control = control
-
-    self.cardinality = cardinality.Cardinality.UNARY_UNARY
-    self.style = style.Service.INLINE
-
-  def unary_unary_inline(self, request, context):
-    response_list = []
-    self._test_method.service(
-        request, response_list.append, context, self._control)
-    return response_list.pop(0)
-
-
-class _EventUnaryUnaryMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, unary_unary_test_method, control, pool):
-    self._test_method = unary_unary_test_method
-    self._control = control
-    self._pool = pool
-
-    self.cardinality = cardinality.Cardinality.UNARY_UNARY
-    self.style = style.Service.EVENT
-
-  def unary_unary_event(self, request, response_callback, context):
-    if self._pool is None:
-      self._test_method.service(
-          request, response_callback, context, self._control)
-    else:
-      self._pool.submit(
-          self._test_method.service, request, response_callback, context,
-          self._control)
-
-
-class _InlineUnaryStreamMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, unary_stream_test_method, control):
-    self._test_method = unary_stream_test_method
-    self._control = control
-
-    self.cardinality = cardinality.Cardinality.UNARY_STREAM
-    self.style = style.Service.INLINE
-
-  def unary_stream_inline(self, request, context):
-    response_consumer = _BufferingConsumer()
-    self._test_method.service(
-        request, response_consumer, context, self._control)
-    for response in response_consumer.consumed:
-      yield response
-
-
-class _EventUnaryStreamMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, unary_stream_test_method, control, pool):
-    self._test_method = unary_stream_test_method
-    self._control = control
-    self._pool = pool
-
-    self.cardinality = cardinality.Cardinality.UNARY_STREAM
-    self.style = style.Service.EVENT
-
-  def unary_stream_event(self, request, response_consumer, context):
-    if self._pool is None:
-      self._test_method.service(
-          request, response_consumer, context, self._control)
-    else:
-      self._pool.submit(
-          self._test_method.service, request, response_consumer, context,
-          self._control)
-
-
-class _InlineStreamUnaryMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, stream_unary_test_method, control):
-    self._test_method = stream_unary_test_method
-    self._control = control
-
-    self.cardinality = cardinality.Cardinality.STREAM_UNARY
-    self.style = style.Service.INLINE
-
-  def stream_unary_inline(self, request_iterator, context):
-    response_list = []
-    request_consumer = self._test_method.service(
-        response_list.append, context, self._control)
-    for request in request_iterator:
-      request_consumer.consume(request)
-    request_consumer.terminate()
-    return response_list.pop(0)
-
-
-class _EventStreamUnaryMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, stream_unary_test_method, control, pool):
-    self._test_method = stream_unary_test_method
-    self._control = control
-    self._pool = pool
-
-    self.cardinality = cardinality.Cardinality.STREAM_UNARY
-    self.style = style.Service.EVENT
-
-  def stream_unary_event(self, response_callback, context):
-    request_consumer = self._test_method.service(
-        response_callback, context, self._control)
-    if self._pool is None:
-      return request_consumer
-    else:
-      return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool)
-
-
-class _InlineStreamStreamMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, stream_stream_test_method, control):
-    self._test_method = stream_stream_test_method
-    self._control = control
-
-    self.cardinality = cardinality.Cardinality.STREAM_STREAM
-    self.style = style.Service.INLINE
-
-  def stream_stream_inline(self, request_iterator, context):
-    response_consumer = _BufferingConsumer()
-    request_consumer = self._test_method.service(
-        response_consumer, context, self._control)
-
-    for request in request_iterator:
-      request_consumer.consume(request)
-      while response_consumer.consumed:
-        yield response_consumer.consumed.pop(0)
-    response_consumer.terminate()
-
-
-class _EventStreamStreamMethod(face_interfaces.MethodImplementation):
-
-  def __init__(self, stream_stream_test_method, control, pool):
-    self._test_method = stream_stream_test_method
-    self._control = control
-    self._pool = pool
-
-    self.cardinality = cardinality.Cardinality.STREAM_STREAM
-    self.style = style.Service.EVENT
-
-  def stream_stream_event(self, response_consumer, context):
-    request_consumer = self._test_method.service(
-        response_consumer, context, self._control)
-    if self._pool is None:
-      return request_consumer
-    else:
-      return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool)
-
-
-class _UnaryConsumer(stream.Consumer):
-  """A Consumer that only allows consumption of exactly one value."""
-
-  def __init__(self, action):
-    self._lock = threading.Lock()
-    self._action = action
-    self._consumed = False
-    self._terminated = False
-
-  def consume(self, value):
-    with self._lock:
-      if self._consumed:
-        raise ValueError('Unary consumer already consumed!')
-      elif self._terminated:
-        raise ValueError('Unary consumer already terminated!')
-      else:
-        self._consumed = True
-
-    self._action(value)
-
-  def terminate(self):
-    with self._lock:
-      if not self._consumed:
-        raise ValueError('Unary consumer hasn\'t yet consumed!')
-      elif self._terminated:
-        raise ValueError('Unary consumer already terminated!')
-      else:
-        self._terminated = True
-
-  def consume_and_terminate(self, value):
-    with self._lock:
-      if self._consumed:
-        raise ValueError('Unary consumer already consumed!')
-      elif self._terminated:
-        raise ValueError('Unary consumer already terminated!')
-      else:
-        self._consumed = True
-        self._terminated = True
-
-    self._action(value)
-
-
-class _UnaryUnaryAdaptation(object):
-
-  def __init__(self, unary_unary_test_method):
-    self._method = unary_unary_test_method
-
-  def service(self, response_consumer, context, control):
-    def action(request):
-      self._method.service(
-          request, response_consumer.consume_and_terminate, context, control)
-    return _UnaryConsumer(action)
-
-
-class _UnaryStreamAdaptation(object):
-
-  def __init__(self, unary_stream_test_method):
-    self._method = unary_stream_test_method
-
-  def service(self, response_consumer, context, control):
-    def action(request):
-      self._method.service(request, response_consumer, context, control)
-    return _UnaryConsumer(action)
-
-
-class _StreamUnaryAdaptation(object):
-
-  def __init__(self, stream_unary_test_method):
-    self._method = stream_unary_test_method
-
-  def service(self, response_consumer, context, control):
-    return self._method.service(
-        response_consumer.consume_and_terminate, context, control)
-
-
-class _MultiMethodImplementation(face_interfaces.MultiMethodImplementation):
-
-  def __init__(self, methods, control, pool):
-    self._methods = methods
-    self._control = control
-    self._pool = pool
-
-  def service(self, name, response_consumer, context):
-    method = self._methods.get(name, None)
-    if method is None:
-      raise exceptions.NoSuchMethodError(name)
-    elif self._pool is None:
-      return method(response_consumer, context, self._control)
-    else:
-      request_consumer = method(response_consumer, context, self._control)
-      return stream_util.ThreadSwitchingConsumer(request_consumer, self._pool)
-
-
-class _Assembly(
-    collections.namedtuple(
-        '_Assembly',
-        ['methods', 'inlines', 'events', 'adaptations', 'messages'])):
-  """An intermediate structure created when creating a TestServiceDigest."""
-
-
-def _assemble(
-    scenarios, names, inline_method_constructor, event_method_constructor,
-    adapter, control, pool):
-  """Creates an _Assembly from the given scenarios."""
-  methods = []
-  inlines = {}
-  events = {}
-  adaptations = {}
-  messages = {}
-  for name, scenario in six.iteritems(scenarios):
-    if name in names:
-      raise ValueError('Repeated name "%s"!' % name)
-
-    test_method = scenario[0]
-    inline_method = inline_method_constructor(test_method, control)
-    event_method = event_method_constructor(test_method, control, pool)
-    adaptation = adapter(test_method)
-
-    methods.append(test_method)
-    inlines[name] = inline_method
-    events[name] = event_method
-    adaptations[name] = adaptation
-    messages[name] = scenario[1]
-
-  return _Assembly(methods, inlines, events, adaptations, messages)
-
-
-def digest(service, control, pool):
-  """Creates a TestServiceDigest from a TestService.
-
-  Args:
-    service: A testing_service.TestService.
-    control: A testing_control.Control.
-    pool: If RPC methods should be serviced in a separate thread, a thread pool.
-      None if RPC methods should be serviced in the thread belonging to the
-      run-time that calls for their service.
-
-  Returns:
-    A TestServiceDigest synthesized from the given service.TestService.
-  """
-  names = set()
-
-  unary_unary = _assemble(
-      service.unary_unary_scenarios(), names, _InlineUnaryUnaryMethod,
-      _EventUnaryUnaryMethod, _UnaryUnaryAdaptation, control, pool)
-  names.update(set(unary_unary.inlines))
-
-  unary_stream = _assemble(
-      service.unary_stream_scenarios(), names, _InlineUnaryStreamMethod,
-      _EventUnaryStreamMethod, _UnaryStreamAdaptation, control, pool)
-  names.update(set(unary_stream.inlines))
-
-  stream_unary = _assemble(
-      service.stream_unary_scenarios(), names, _InlineStreamUnaryMethod,
-      _EventStreamUnaryMethod, _StreamUnaryAdaptation, control, pool)
-  names.update(set(stream_unary.inlines))
-
-  stream_stream = _assemble(
-      service.stream_stream_scenarios(), names, _InlineStreamStreamMethod,
-      _EventStreamStreamMethod, _IDENTITY, control, pool)
-  names.update(set(stream_stream.inlines))
-
-  methods = list(unary_unary.methods)
-  methods.extend(unary_stream.methods)
-  methods.extend(stream_unary.methods)
-  methods.extend(stream_stream.methods)
-  adaptations = dict(unary_unary.adaptations)
-  adaptations.update(unary_stream.adaptations)
-  adaptations.update(stream_unary.adaptations)
-  adaptations.update(stream_stream.adaptations)
-  inlines = dict(unary_unary.inlines)
-  inlines.update(unary_stream.inlines)
-  inlines.update(stream_unary.inlines)
-  inlines.update(stream_stream.inlines)
-  events = dict(unary_unary.events)
-  events.update(unary_stream.events)
-  events.update(stream_unary.events)
-  events.update(stream_stream.events)
-
-  return TestServiceDigest(
-      service.name(),
-      methods,
-      inlines,
-      events,
-      _MultiMethodImplementation(adaptations, control, pool),
-      unary_unary.messages,
-      unary_stream.messages,
-      stream_unary.messages,
-      stream_stream.messages)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
deleted file mode 100644
index 98b61e492c..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/event_invocation_synchronous_event_service_test_case.py
+++ /dev/null
@@ -1,378 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A test to verify an implementation of the Face layer of RPC Framework."""
-
-import abc
-import unittest
-
-import six
-
-from grpc.framework.face import interfaces
-from tests.unit.framework.common import test_constants
-from tests.unit.framework.face.testing import callback as testing_callback
-from tests.unit.framework.face.testing import control
-from tests.unit.framework.face.testing import coverage
-from tests.unit.framework.face.testing import digest
-from tests.unit.framework.face.testing import stock_service
-from tests.unit.framework.face.testing import test_case
-
-
-class EventInvocationSynchronousEventServiceTestCase(
-    six.with_metaclass(abc.ABCMeta,
-    test_case.FaceTestCase, coverage.FullCoverage)):
-  """A test of the Face layer of RPC Framework.
-
-  Concrete subclasses must also extend unittest.TestCase.
-  """
-
-  def setUp(self):
-    """See unittest.TestCase.setUp for full specification.
-
-    Overriding implementations must call this implementation.
-    """
-    self.control = control.PauseFailControl()
-    self.digest = digest.digest(
-        stock_service.STOCK_TEST_SERVICE, self.control, None)
-
-    self.stub, self.memo = self.set_up_implementation(
-        self.digest.name, self.digest.methods,
-        self.digest.event_method_implementations, None)
-
-  def tearDown(self):
-    """See unittest.TestCase.tearDown for full specification.
-
-    Overriding implementations must call this implementation.
-    """
-    self.tear_down_implementation(self.memo)
-
-  def testSuccessfulUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        self.stub.event_value_in_value_out(
-            name, request, callback.complete, callback.abort,
-            test_constants.SHORT_TIMEOUT)
-        callback.block_until_terminated()
-        response = callback.response()
-
-        test_messages.verify(request, response, self)
-
-  def testSuccessfulUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        self.stub.event_value_in_stream_out(
-            name, request, callback, callback.abort,
-            test_constants.SHORT_TIMEOUT)
-        callback.block_until_terminated()
-        responses = callback.responses()
-
-        test_messages.verify(request, responses, self)
-
-  def testSuccessfulStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        callback = testing_callback.Callback()
-
-        unused_call, request_consumer = self.stub.event_stream_in_value_out(
-            name, callback.complete, callback.abort,
-            test_constants.SHORT_TIMEOUT)
-        for request in requests:
-          request_consumer.consume(request)
-        request_consumer.terminate()
-        callback.block_until_terminated()
-        response = callback.response()
-
-        test_messages.verify(requests, response, self)
-
-  def testSuccessfulStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        callback = testing_callback.Callback()
-
-        unused_call, request_consumer = self.stub.event_stream_in_stream_out(
-            name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
-        for request in requests:
-          request_consumer.consume(request)
-        request_consumer.terminate()
-        callback.block_until_terminated()
-        responses = callback.responses()
-
-        test_messages.verify(requests, responses, self)
-
-  def testSequentialInvocations(self):
-    # pylint: disable=cell-var-from-loop
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        first_request = test_messages.request()
-        second_request = test_messages.request()
-        first_callback = testing_callback.Callback()
-        second_callback = testing_callback.Callback()
-
-        def make_second_invocation(first_response):
-          first_callback.complete(first_response)
-          self.stub.event_value_in_value_out(
-              name, second_request, second_callback.complete,
-              second_callback.abort, test_constants.SHORT_TIMEOUT)
-
-        self.stub.event_value_in_value_out(
-            name, first_request, make_second_invocation, first_callback.abort,
-           test_constants.SHORT_TIMEOUT)
-        second_callback.block_until_terminated()
-
-        first_response = first_callback.response()
-        second_response = second_callback.response()
-        test_messages.verify(first_request, first_response, self)
-        test_messages.verify(second_request, second_response, self)
-
-  def testExpiredUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        with self.control.pause():
-          self.stub.event_value_in_value_out(
-              name, request, callback.complete, callback.abort,
-              test_constants.SHORT_TIMEOUT)
-          callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
-  def testExpiredUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        with self.control.pause():
-          self.stub.event_value_in_stream_out(
-              name, request, callback, callback.abort,
-              test_constants.SHORT_TIMEOUT)
-          callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
-  def testExpiredStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for unused_test_messages in test_messages_sequence:
-        callback = testing_callback.Callback()
-
-        self.stub.event_stream_in_value_out(
-            name, callback.complete, callback.abort,
-            test_constants.SHORT_TIMEOUT)
-        callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
-  def testExpiredStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        callback = testing_callback.Callback()
-
-        unused_call, request_consumer = self.stub.event_stream_in_stream_out(
-            name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
-        for request in requests:
-          request_consumer.consume(request)
-        callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.EXPIRED, callback.abortion())
-
-  def testFailedUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        with self.control.fail():
-          self.stub.event_value_in_value_out(
-              name, request, callback.complete, callback.abort,
-              test_constants.SHORT_TIMEOUT)
-          callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.SERVICER_FAILURE,
-                         callback.abortion())
-
-  def testFailedUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        with self.control.fail():
-          self.stub.event_value_in_stream_out(
-              name, request, callback, callback.abort,
-              test_constants.SHORT_TIMEOUT)
-          callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.SERVICER_FAILURE,
-                         callback.abortion())
-
-  def testFailedStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        callback = testing_callback.Callback()
-
-        with self.control.fail():
-          unused_call, request_consumer = self.stub.event_stream_in_value_out(
-              name, callback.complete, callback.abort,
-              test_constants.SHORT_TIMEOUT)
-          for request in requests:
-            request_consumer.consume(request)
-          request_consumer.terminate()
-          callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.SERVICER_FAILURE,
-                         callback.abortion())
-
-  def testFailedStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        callback = testing_callback.Callback()
-
-        with self.control.fail():
-          unused_call, request_consumer = self.stub.event_stream_in_stream_out(
-              name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
-          for request in requests:
-            request_consumer.consume(request)
-          request_consumer.terminate()
-          callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.SERVICER_FAILURE, callback.abortion())
-
-  def testParallelInvocations(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        first_request = test_messages.request()
-        first_callback = testing_callback.Callback()
-        second_request = test_messages.request()
-        second_callback = testing_callback.Callback()
-
-        self.stub.event_value_in_value_out(
-            name, first_request, first_callback.complete, first_callback.abort,
-           test_constants.SHORT_TIMEOUT)
-        self.stub.event_value_in_value_out(
-            name, second_request, second_callback.complete,
-            second_callback.abort, test_constants.SHORT_TIMEOUT)
-        first_callback.block_until_terminated()
-        second_callback.block_until_terminated()
-
-        first_response = first_callback.response()
-        second_response = second_callback.response()
-        test_messages.verify(first_request, first_response, self)
-        test_messages.verify(second_request, second_response, self)
-
-  @unittest.skip('TODO(nathaniel): implement.')
-  def testWaitingForSomeButNotAllParallelInvocations(self):
-    raise NotImplementedError()
-
-  def testCancelledUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        with self.control.pause():
-          call = self.stub.event_value_in_value_out(
-              name, request, callback.complete, callback.abort,
-              test_constants.SHORT_TIMEOUT)
-          call.cancel()
-          callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
-
-  def testCancelledUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-        callback = testing_callback.Callback()
-
-        call = self.stub.event_value_in_stream_out(
-            name, request, callback, callback.abort,
-            test_constants.SHORT_TIMEOUT)
-        call.cancel()
-        callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
-
-  def testCancelledStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        callback = testing_callback.Callback()
-
-        call, request_consumer = self.stub.event_stream_in_value_out(
-            name, callback.complete, callback.abort,
-            test_constants.SHORT_TIMEOUT)
-        for request in requests:
-          request_consumer.consume(request)
-        call.cancel()
-        callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
-
-  def testCancelledStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for unused_test_messages in test_messages_sequence:
-        callback = testing_callback.Callback()
-
-        call, unused_request_consumer = self.stub.event_stream_in_stream_out(
-            name, callback, callback.abort, test_constants.SHORT_TIMEOUT)
-        call.cancel()
-        callback.block_until_terminated()
-
-        self.assertEqual(interfaces.Abortion.CANCELLED, callback.abortion())
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
deleted file mode 100644
index cae791af97..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/future_invocation_asynchronous_event_service_test_case.py
+++ /dev/null
@@ -1,384 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""A test to verify an implementation of the Face layer of RPC Framework."""
-
-import abc
-import contextlib
-import threading
-import unittest
-
-import six
-
-from grpc.framework.face import exceptions
-from grpc.framework.foundation import future
-from grpc.framework.foundation import logging_pool
-from tests.unit.framework.common import test_constants
-from tests.unit.framework.face.testing import control
-from tests.unit.framework.face.testing import coverage
-from tests.unit.framework.face.testing import digest
-from tests.unit.framework.face.testing import stock_service
-from tests.unit.framework.face.testing import test_case
-
-_MAXIMUM_POOL_SIZE = 10
-
-
-class _PauseableIterator(object):
-
-  def __init__(self, upstream):
-    self._upstream = upstream
-    self._condition = threading.Condition()
-    self._paused = False
-
-  @contextlib.contextmanager
-  def pause(self):
-    with self._condition:
-      self._paused = True
-    yield
-    with self._condition:
-      self._paused = False
-      self._condition.notify_all()
-
-  def __iter__(self):
-    return self
-
-  def __next__(self):
-    return self.next()
-
-  def next(self):
-    with self._condition:
-      while self._paused:
-        self._condition.wait()
-    return next(self._upstream)
-
-
-class FutureInvocationAsynchronousEventServiceTestCase(
-    six.with_metaclass(abc.ABCMeta,
-    test_case.FaceTestCase, coverage.FullCoverage)):
-  """A test of the Face layer of RPC Framework.
-
-  Concrete subclasses must also extend unittest.TestCase.
-  """
-
-  def setUp(self):
-    """See unittest.TestCase.setUp for full specification.
-
-    Overriding implementations must call this implementation.
-    """
-    self.control = control.PauseFailControl()
-    self.digest_pool = logging_pool.pool(_MAXIMUM_POOL_SIZE)
-    self.digest = digest.digest(
-        stock_service.STOCK_TEST_SERVICE, self.control, self.digest_pool)
-
-    self.stub, self.memo = self.set_up_implementation(
-        self.digest.name, self.digest.methods,
-        self.digest.event_method_implementations, None)
-
-  def tearDown(self):
-    """See unittest.TestCase.tearDown for full specification.
-
-    Overriding implementations must call this implementation.
-    """
-    self.tear_down_implementation(self.memo)
-    self.digest_pool.shutdown(wait=True)
-
-  def testSuccessfulUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        response_future = self.stub.future_value_in_value_out(
-            name, request, test_constants.SHORT_TIMEOUT)
-        response = response_future.result()
-
-        test_messages.verify(request, response, self)
-
-  def testSuccessfulUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        response_iterator = self.stub.inline_value_in_stream_out(
-            name, request, test_constants.SHORT_TIMEOUT)
-        responses = list(response_iterator)
-
-        test_messages.verify(request, responses, self)
-
-  def testSuccessfulStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        request_iterator = _PauseableIterator(iter(requests))
-
-        # Use of a paused iterator of requests allows us to test that control is
-        # returned to calling code before the iterator yields any requests.
-        with request_iterator.pause():
-          response_future = self.stub.future_stream_in_value_out(
-              name, request_iterator, test_constants.SHORT_TIMEOUT)
-        response = response_future.result()
-
-        test_messages.verify(requests, response, self)
-
-  def testSuccessfulStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-        request_iterator = _PauseableIterator(iter(requests))
-
-        # Use of a paused iterator of requests allows us to test that control is
-        # returned to calling code before the iterator yields any requests.
-        with request_iterator.pause():
-          response_iterator = self.stub.inline_stream_in_stream_out(
-              name, request_iterator, test_constants.SHORT_TIMEOUT)
-        responses = list(response_iterator)
-
-        test_messages.verify(requests, responses, self)
-
-  def testSequentialInvocations(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        first_request = test_messages.request()
-        second_request = test_messages.request()
-
-        first_response_future = self.stub.future_value_in_value_out(
-            name, first_request, test_constants.SHORT_TIMEOUT)
-        first_response = first_response_future.result()
-
-        test_messages.verify(first_request, first_response, self)
-
-        second_response_future = self.stub.future_value_in_value_out(
-            name, second_request, test_constants.SHORT_TIMEOUT)
-        second_response = second_response_future.result()
-
-        test_messages.verify(second_request, second_response, self)
-
-  def testExpiredUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.pause():
-          multi_callable = self.stub.unary_unary_multi_callable(name)
-          response_future = multi_callable.future(request,
-                                                  test_constants.SHORT_TIMEOUT)
-          self.assertIsInstance(
-              response_future.exception(), exceptions.ExpirationError)
-          with self.assertRaises(exceptions.ExpirationError):
-            response_future.result()
-
-  def testExpiredUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.pause():
-          response_iterator = self.stub.inline_value_in_stream_out(
-              name, request, test_constants.SHORT_TIMEOUT)
-          with self.assertRaises(exceptions.ExpirationError):
-            list(response_iterator)
-
-  def testExpiredStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.pause():
-          multi_callable = self.stub.stream_unary_multi_callable(name)
-          response_future = multi_callable.future(iter(requests),
-                                                  test_constants.SHORT_TIMEOUT)
-          self.assertIsInstance(
-              response_future.exception(), exceptions.ExpirationError)
-          with self.assertRaises(exceptions.ExpirationError):
-            response_future.result()
-
-  def testExpiredStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.pause():
-          response_iterator = self.stub.inline_stream_in_stream_out(
-              name, iter(requests), test_constants.SHORT_TIMEOUT)
-          with self.assertRaises(exceptions.ExpirationError):
-            list(response_iterator)
-
-  def testFailedUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.fail():
-          response_future = self.stub.future_value_in_value_out(
-              name, request, test_constants.SHORT_TIMEOUT)
-
-          # Because the servicer fails outside of the thread from which the
-          # servicer-side runtime called into it its failure is
-          # indistinguishable from simply not having called its
-          # response_callback before the expiration of the RPC.
-          self.assertIsInstance(
-              response_future.exception(), exceptions.ExpirationError)
-          with self.assertRaises(exceptions.ExpirationError):
-            response_future.result()
-
-  def testFailedUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        # Because the servicer fails outside of the thread from which the
-        # servicer-side runtime called into it its failure is indistinguishable
-        # from simply not having called its response_consumer before the
-        # expiration of the RPC.
-        with self.control.fail(), self.assertRaises(exceptions.ExpirationError):
-          response_iterator = self.stub.inline_value_in_stream_out(
-              name, request, test_constants.SHORT_TIMEOUT)
-          list(response_iterator)
-
-  def testFailedStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.fail():
-          response_future = self.stub.future_stream_in_value_out(
-              name, iter(requests), test_constants.SHORT_TIMEOUT)
-
-          # Because the servicer fails outside of the thread from which the
-          # servicer-side runtime called into it its failure is
-          # indistinguishable from simply not having called its
-          # response_callback before the expiration of the RPC.
-          self.assertIsInstance(
-              response_future.exception(), exceptions.ExpirationError)
-          with self.assertRaises(exceptions.ExpirationError):
-            response_future.result()
-
-  def testFailedStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        # Because the servicer fails outside of the thread from which the
-        # servicer-side runtime called into it its failure is indistinguishable
-        # from simply not having called its response_consumer before the
-        # expiration of the RPC.
-        with self.control.fail(), self.assertRaises(exceptions.ExpirationError):
-          response_iterator = self.stub.inline_stream_in_stream_out(
-              name, iter(requests), test_constants.SHORT_TIMEOUT)
-          list(response_iterator)
-
-  def testParallelInvocations(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        first_request = test_messages.request()
-        second_request = test_messages.request()
-
-        # TODO(bug 2039): use LONG_TIMEOUT instead
-        first_response_future = self.stub.future_value_in_value_out(
-            name, first_request, test_constants.SHORT_TIMEOUT)
-        second_response_future = self.stub.future_value_in_value_out(
-            name, second_request, test_constants.SHORT_TIMEOUT)
-        first_response = first_response_future.result()
-        second_response = second_response_future.result()
-
-        test_messages.verify(first_request, first_response, self)
-        test_messages.verify(second_request, second_response, self)
-
-  @unittest.skip('TODO(nathaniel): implement.')
-  def testWaitingForSomeButNotAllParallelInvocations(self):
-    raise NotImplementedError()
-
-  def testCancelledUnaryRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.pause():
-          response_future = self.stub.future_value_in_value_out(
-              name, request, test_constants.SHORT_TIMEOUT)
-          cancel_method_return_value = response_future.cancel()
-
-        self.assertFalse(cancel_method_return_value)
-        self.assertTrue(response_future.cancelled())
-
-  def testCancelledUnaryRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.unary_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        request = test_messages.request()
-
-        with self.control.pause():
-          response_iterator = self.stub.inline_value_in_stream_out(
-              name, request, test_constants.SHORT_TIMEOUT)
-          response_iterator.cancel()
-
-        with self.assertRaises(future.CancelledError):
-          next(response_iterator)
-
-  def testCancelledStreamRequestUnaryResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_unary_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.pause():
-          response_future = self.stub.future_stream_in_value_out(
-              name, iter(requests), test_constants.SHORT_TIMEOUT)
-          cancel_method_return_value = response_future.cancel()
-
-        self.assertFalse(cancel_method_return_value)
-        self.assertTrue(response_future.cancelled())
-
-  def testCancelledStreamRequestStreamResponse(self):
-    for name, test_messages_sequence in (
-        six.iteritems(self.digest.stream_stream_messages_sequences)):
-      for test_messages in test_messages_sequence:
-        requests = test_messages.requests()
-
-        with self.control.pause():
-          response_iterator = self.stub.inline_stream_in_stream_out(
-              name, iter(requests), test_constants.SHORT_TIMEOUT)
-          response_iterator.cancel()
-
-        with self.assertRaises(future.CancelledError):
-          next(response_iterator)
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/interfaces.py b/src/python/grpcio/tests/unit/framework/face/testing/interfaces.py
deleted file mode 100644
index 8a25f89c88..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/interfaces.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Interfaces implemented by data sets used in Face-layer tests."""
-
-import abc
-
-import six
-
-# cardinality is referenced from specification in this module.
-from grpc.framework.common import cardinality  # pylint: disable=unused-import
-
-
-class Method(six.with_metaclass(abc.ABCMeta)):
-  """An RPC method to be used in tests of RPC implementations."""
-
-  @abc.abstractmethod
-  def name(self):
-    """Identify the name of the method.
-
-    Returns:
-      The name of the method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def cardinality(self):
-    """Identify the cardinality of the method.
-
-    Returns:
-      A cardinality.Cardinality value describing the streaming semantics of the
-        method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def request_class(self):
-    """Identify the class used for the method's request objects.
-
-    Returns:
-      The class object of the class to which the method's request objects
-        belong.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def response_class(self):
-    """Identify the class used for the method's response objects.
-
-    Returns:
-      The class object of the class to which the method's response objects
-        belong.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def serialize_request(self, request):
-    """Serialize the given request object.
-
-    Args:
-      request: A request object appropriate for this method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def deserialize_request(self, serialized_request):
-    """Synthesize a request object from a given bytestring.
-
-    Args:
-      serialized_request: A bytestring deserializable into a request object
-        appropriate for this method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def serialize_response(self, response):
-    """Serialize the given response object.
-
-    Args:
-      response: A response object appropriate for this method.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def deserialize_response(self, serialized_response):
-    """Synthesize a response object from a given bytestring.
-
-    Args:
-      serialized_response: A bytestring deserializable into a response object
-        appropriate for this method.
-    """
-    raise NotImplementedError()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/service.py b/src/python/grpcio/tests/unit/framework/face/testing/service.py
deleted file mode 100644
index 3e4228cc07..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/service.py
+++ /dev/null
@@ -1,321 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Private interfaces implemented by data sets used in Face-layer tests."""
-
-import abc
-
-import six
-
-# interfaces is referenced from specification in this module.
-from grpc.framework.face import interfaces as face_interfaces  # pylint: disable=unused-import
-from tests.unit.framework.face.testing import interfaces
-
-
-class UnaryUnaryTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
-  """A controllable implementation of a unary-unary RPC method."""
-
-  @abc.abstractmethod
-  def service(self, request, response_callback, context, control):
-    """Services an RPC that accepts one message and produces one message.
-
-    Args:
-      request: The single request message for the RPC.
-      response_callback: A callback to be called to accept the response message
-        of the RPC.
-      context: An face_interfaces.RpcContext object.
-      control: A test_control.Control to control execution of this method.
-
-    Raises:
-      abandonment.Abandoned: May or may not be raised when the RPC has been
-        aborted.
-    """
-    raise NotImplementedError()
-
-
-class UnaryUnaryTestMessages(six.with_metaclass(abc.ABCMeta)):
-  """A type for unary-request-unary-response message pairings."""
-
-  @abc.abstractmethod
-  def request(self):
-    """Affords a request message.
-
-    Implementations of this method should return a different message with each
-    call so that multiple test executions of the test method may be made with
-    different inputs.
-
-    Returns:
-      A request message.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def verify(self, request, response, test_case):
-    """Verifies that the computed response matches the given request.
-
-    Args:
-      request: A request message.
-      response: A response message.
-      test_case: A unittest.TestCase object affording useful assertion methods.
-
-    Raises:
-      AssertionError: If the request and response do not match, indicating that
-        there was some problem executing the RPC under test.
-    """
-    raise NotImplementedError()
-
-
-class UnaryStreamTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
-  """A controllable implementation of a unary-stream RPC method."""
-
-  @abc.abstractmethod
-  def service(self, request, response_consumer, context, control):
-    """Services an RPC that takes one message and produces a stream of messages.
-
-    Args:
-      request: The single request message for the RPC.
-      response_consumer: A stream.Consumer to be called to accept the response
-        messages of the RPC.
-      context: A face_interfaces.RpcContext object.
-      control: A test_control.Control to control execution of this method.
-
-    Raises:
-      abandonment.Abandoned: May or may not be raised when the RPC has been
-        aborted.
-    """
-    raise NotImplementedError()
-
-
-class UnaryStreamTestMessages(six.with_metaclass(abc.ABCMeta)):
-  """A type for unary-request-stream-response message pairings."""
-
-  @abc.abstractmethod
-  def request(self):
-    """Affords a request message.
-
-    Implementations of this method should return a different message with each
-    call so that multiple test executions of the test method may be made with
-    different inputs.
-
-    Returns:
-      A request message.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def verify(self, request, responses, test_case):
-    """Verifies that the computed responses match the given request.
-
-    Args:
-      request: A request message.
-      responses: A sequence of response messages.
-      test_case: A unittest.TestCase object affording useful assertion methods.
-
-    Raises:
-      AssertionError: If the request and responses do not match, indicating that
-        there was some problem executing the RPC under test.
-    """
-    raise NotImplementedError()
-
-
-class StreamUnaryTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
-  """A controllable implementation of a stream-unary RPC method."""
-
-  @abc.abstractmethod
-  def service(self, response_callback, context, control):
-    """Services an RPC that takes a stream of messages and produces one message.
-
-    Args:
-      response_callback: A callback to be called to accept the response message
-        of the RPC.
-      context: A face_interfaces.RpcContext object.
-      control: A test_control.Control to control execution of this method.
-
-    Returns:
-      A stream.Consumer with which to accept the request messages of the RPC.
-        The consumer returned from this method may or may not be invoked to
-        completion: in the case of RPC abortion, RPC Framework will simply stop
-        passing messages to this object. Implementations must not assume that
-        this object will be called to completion of the request stream or even
-        called at all.
-
-    Raises:
-      abandonment.Abandoned: May or may not be raised when the RPC has been
-        aborted.
-    """
-    raise NotImplementedError()
-
-
-class StreamUnaryTestMessages(six.with_metaclass(abc.ABCMeta)):
-  """A type for stream-request-unary-response message pairings."""
-
-  @abc.abstractmethod
-  def requests(self):
-    """Affords a sequence of request messages.
-
-    Implementations of this method should return a different sequences with each
-    call so that multiple test executions of the test method may be made with
-    different inputs.
-
-    Returns:
-      A sequence of request messages.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def verify(self, requests, response, test_case):
-    """Verifies that the computed response matches the given requests.
-
-    Args:
-      requests: A sequence of request messages.
-      response: A response message.
-      test_case: A unittest.TestCase object affording useful assertion methods.
-
-    Raises:
-      AssertionError: If the requests and response do not match, indicating that
-        there was some problem executing the RPC under test.
-    """
-    raise NotImplementedError()
-
-
-class StreamStreamTestMethodImplementation(six.with_metaclass(abc.ABCMeta, interfaces.Method)):
-  """A controllable implementation of a stream-stream RPC method."""
-
-  @abc.abstractmethod
-  def service(self, response_consumer, context, control):
-    """Services an RPC that accepts and produces streams of messages.
-
-    Args:
-      response_consumer: A stream.Consumer to be called to accept the response
-        messages of the RPC.
-      context: A face_interfaces.RpcContext object.
-      control: A test_control.Control to control execution of this method.
-
-    Returns:
-      A stream.Consumer with which to accept the request messages of the RPC.
-        The consumer returned from this method may or may not be invoked to
-        completion: in the case of RPC abortion, RPC Framework will simply stop
-        passing messages to this object. Implementations must not assume that
-        this object will be called to completion of the request stream or even
-        called at all.
-
-    Raises:
-      abandonment.Abandoned: May or may not be raised when the RPC has been
-        aborted.
-    """
-    raise NotImplementedError()
-
-
-class StreamStreamTestMessages(six.with_metaclass(abc.ABCMeta)):
-  """A type for stream-request-stream-response message pairings."""
-
-  @abc.abstractmethod
-  def requests(self):
-    """Affords a sequence of request messages.
-
-    Implementations of this method should return a different sequences with each
-    call so that multiple test executions of the test method may be made with
-    different inputs.
-
-    Returns:
-      A sequence of request messages.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def verify(self, requests, responses, test_case):
-    """Verifies that the computed response matches the given requests.
-
-    Args:
-      requests: A sequence of request messages.
-      responses: A sequence of response messages.
-      test_case: A unittest.TestCase object affording useful assertion methods.
-
-    Raises:
-      AssertionError: If the requests and responses do not match, indicating
-        that there was some problem executing the RPC under test.
-    """
-    raise NotImplementedError()
-
-
-class TestService(six.with_metaclass(abc.ABCMeta)):
-  """A specification of implemented RPC methods to use in tests."""
-
-  @abc.abstractmethod
-  def name(self):
-    """Identifies the RPC service name used during the test.
-
-    Returns:
-      The RPC service name to be used for the test.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def unary_unary_scenarios(self):
-    """Affords unary-request-unary-response test methods and their messages.
-
-    Returns:
-      A dict from method name to pair. The first element of the pair
-        is a UnaryUnaryTestMethodImplementation object and the second element
-        is a sequence of UnaryUnaryTestMethodMessages objects.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def unary_stream_scenarios(self):
-    """Affords unary-request-stream-response test methods and their messages.
-
-    Returns:
-      A dict from method name to pair. The first element of the pair is a
-        UnaryStreamTestMethodImplementation object and the second element is a
-        sequence of UnaryStreamTestMethodMessages objects.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def stream_unary_scenarios(self):
-    """Affords stream-request-unary-response test methods and their messages.
-
-    Returns:
-      A dict from method name to pair. The first element of the pair is a
-        StreamUnaryTestMethodImplementation object and the second element is a
-        sequence of StreamUnaryTestMethodMessages objects.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def stream_stream_scenarios(self):
-    """Affords stream-request-stream-response test methods and their messages.
-
-    Returns:
-      A dict from method name to pair. The first element of the pair is a
-        StreamStreamTestMethodImplementation object and the second element is a
-        sequence of StreamStreamTestMethodMessages objects.
-    """
-    raise NotImplementedError()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/stock_service.py b/src/python/grpcio/tests/unit/framework/face/testing/stock_service.py
deleted file mode 100644
index 117c723f79..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/stock_service.py
+++ /dev/null
@@ -1,374 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Examples of Python implementations of the stock.proto Stock service."""
-
-from grpc.framework.common import cardinality
-from grpc.framework.foundation import abandonment
-from grpc.framework.foundation import stream
-from grpc.framework.foundation import stream_util
-from tests.unit.framework.face.testing import service
-from tests.unit._junkdrawer import stock_pb2
-
-SYMBOL_FORMAT = 'test symbol:%03d'
-STREAM_LENGTH = 400
-
-# A test-appropriate security-pricing function. :-P
-_price = lambda symbol_name: float(hash(symbol_name) % 4096)
-
-
-def _get_last_trade_price(stock_request, stock_reply_callback, control, active):
-  """A unary-request, unary-response test method."""
-  control.control()
-  if active():
-    stock_reply_callback(
-        stock_pb2.StockReply(
-            symbol=stock_request.symbol, price=_price(stock_request.symbol)))
-  else:
-    raise abandonment.Abandoned()
-
-
-def _get_last_trade_price_multiple(stock_reply_consumer, control, active):
-  """A stream-request, stream-response test method."""
-  def stock_reply_for_stock_request(stock_request):
-    control.control()
-    if active():
-      return stock_pb2.StockReply(
-          symbol=stock_request.symbol, price=_price(stock_request.symbol))
-    else:
-      raise abandonment.Abandoned()
-  return stream_util.TransformingConsumer(
-      stock_reply_for_stock_request, stock_reply_consumer)
-
-
-def _watch_future_trades(stock_request, stock_reply_consumer, control, active):
-  """A unary-request, stream-response test method."""
-  base_price = _price(stock_request.symbol)
-  for index in range(stock_request.num_trades_to_watch):
-    control.control()
-    if active():
-      stock_reply_consumer.consume(
-          stock_pb2.StockReply(
-              symbol=stock_request.symbol, price=base_price + index))
-    else:
-      raise abandonment.Abandoned()
-  stock_reply_consumer.terminate()
-
-
-def _get_highest_trade_price(stock_reply_callback, control, active):
-  """A stream-request, unary-response test method."""
-
-  class StockRequestConsumer(stream.Consumer):
-    """Keeps an ongoing record of the most valuable symbol yet consumed."""
-
-    def __init__(self):
-      self._symbol = None
-      self._price = None
-
-    def consume(self, stock_request):
-      control.control()
-      if active():
-        if self._price is None:
-          self._symbol = stock_request.symbol
-          self._price = _price(stock_request.symbol)
-        else:
-          candidate_price = _price(stock_request.symbol)
-          if self._price < candidate_price:
-            self._symbol = stock_request.symbol
-            self._price = candidate_price
-
-    def terminate(self):
-      control.control()
-      if active():
-        if self._symbol is None:
-          raise ValueError()
-        else:
-          stock_reply_callback(
-              stock_pb2.StockReply(symbol=self._symbol, price=self._price))
-          self._symbol = None
-          self._price = None
-
-    def consume_and_terminate(self, stock_request):
-      control.control()
-      if active():
-        if self._price is None:
-          stock_reply_callback(
-              stock_pb2.StockReply(
-                  symbol=stock_request.symbol,
-                  price=_price(stock_request.symbol)))
-        else:
-          candidate_price = _price(stock_request.symbol)
-          if self._price < candidate_price:
-            stock_reply_callback(
-                stock_pb2.StockReply(
-                    symbol=stock_request.symbol, price=candidate_price))
-          else:
-            stock_reply_callback(
-                stock_pb2.StockReply(
-                    symbol=self._symbol, price=self._price))
-
-        self._symbol = None
-        self._price = None
-
-  return StockRequestConsumer()
-
-
-class GetLastTradePrice(service.UnaryUnaryTestMethodImplementation):
-  """GetLastTradePrice for use in tests."""
-
-  def name(self):
-    return 'GetLastTradePrice'
-
-  def cardinality(self):
-    return cardinality.Cardinality.UNARY_UNARY
-
-  def request_class(self):
-    return stock_pb2.StockRequest
-
-  def response_class(self):
-    return stock_pb2.StockReply
-
-  def serialize_request(self, request):
-    return request.SerializeToString()
-
-  def deserialize_request(self, serialized_request):
-    return stock_pb2.StockRequest.FromString(serialized_request)
-
-  def serialize_response(self, response):
-    return response.SerializeToString()
-
-  def deserialize_response(self, serialized_response):
-    return stock_pb2.StockReply.FromString(serialized_response)
-
-  def service(self, request, response_callback, context, control):
-    _get_last_trade_price(
-        request, response_callback, control, context.is_active)
-
-
-class GetLastTradePriceMessages(service.UnaryUnaryTestMessages):
-
-  def __init__(self):
-    self._index = 0
-
-  def request(self):
-    symbol = SYMBOL_FORMAT % self._index
-    self._index += 1
-    return stock_pb2.StockRequest(symbol=symbol)
-
-  def verify(self, request, response, test_case):
-    test_case.assertEqual(request.symbol, response.symbol)
-    test_case.assertEqual(_price(request.symbol), response.price)
-
-
-class GetLastTradePriceMultiple(service.StreamStreamTestMethodImplementation):
-  """GetLastTradePriceMultiple for use in tests."""
-
-  def name(self):
-    return 'GetLastTradePriceMultiple'
-
-  def cardinality(self):
-    return cardinality.Cardinality.STREAM_STREAM
-
-  def request_class(self):
-    return stock_pb2.StockRequest
-
-  def response_class(self):
-    return stock_pb2.StockReply
-
-  def serialize_request(self, request):
-    return request.SerializeToString()
-
-  def deserialize_request(self, serialized_request):
-    return stock_pb2.StockRequest.FromString(serialized_request)
-
-  def serialize_response(self, response):
-    return response.SerializeToString()
-
-  def deserialize_response(self, serialized_response):
-    return stock_pb2.StockReply.FromString(serialized_response)
-
-  def service(self, response_consumer, context, control):
-    return _get_last_trade_price_multiple(
-        response_consumer, control, context.is_active)
-
-
-class GetLastTradePriceMultipleMessages(service.StreamStreamTestMessages):
-  """Pairs of message streams for use with GetLastTradePriceMultiple."""
-
-  def __init__(self):
-    self._index = 0
-
-  def requests(self):
-    base_index = self._index
-    self._index += 1
-    return [
-        stock_pb2.StockRequest(symbol=SYMBOL_FORMAT % (base_index + index))
-        for index in range(STREAM_LENGTH)]
-
-  def verify(self, requests, responses, test_case):
-    test_case.assertEqual(len(requests), len(responses))
-    for stock_request, stock_reply in zip(requests, responses):
-      test_case.assertEqual(stock_request.symbol, stock_reply.symbol)
-      test_case.assertEqual(_price(stock_request.symbol), stock_reply.price)
-
-
-class WatchFutureTrades(service.UnaryStreamTestMethodImplementation):
-  """WatchFutureTrades for use in tests."""
-
-  def name(self):
-    return 'WatchFutureTrades'
-
-  def cardinality(self):
-    return cardinality.Cardinality.UNARY_STREAM
-
-  def request_class(self):
-    return stock_pb2.StockRequest
-
-  def response_class(self):
-    return stock_pb2.StockReply
-
-  def serialize_request(self, request):
-    return request.SerializeToString()
-
-  def deserialize_request(self, serialized_request):
-    return stock_pb2.StockRequest.FromString(serialized_request)
-
-  def serialize_response(self, response):
-    return response.SerializeToString()
-
-  def deserialize_response(self, serialized_response):
-    return stock_pb2.StockReply.FromString(serialized_response)
-
-  def service(self, request, response_consumer, context, control):
-    _watch_future_trades(request, response_consumer, control, context.is_active)
-
-
-class WatchFutureTradesMessages(service.UnaryStreamTestMessages):
-  """Pairs of a single request message and a sequence of response messages."""
-
-  def __init__(self):
-    self._index = 0
-
-  def request(self):
-    symbol = SYMBOL_FORMAT % self._index
-    self._index += 1
-    return stock_pb2.StockRequest(
-        symbol=symbol, num_trades_to_watch=STREAM_LENGTH)
-
-  def verify(self, request, responses, test_case):
-    test_case.assertEqual(STREAM_LENGTH, len(responses))
-    base_price = _price(request.symbol)
-    for index, response in enumerate(responses):
-      test_case.assertEqual(base_price + index, response.price)
-
-
-class GetHighestTradePrice(service.StreamUnaryTestMethodImplementation):
-  """GetHighestTradePrice for use in tests."""
-
-  def name(self):
-    return 'GetHighestTradePrice'
-
-  def cardinality(self):
-    return cardinality.Cardinality.STREAM_UNARY
-
-  def request_class(self):
-    return stock_pb2.StockRequest
-
-  def response_class(self):
-    return stock_pb2.StockReply
-
-  def serialize_request(self, request):
-    return request.SerializeToString()
-
-  def deserialize_request(self, serialized_request):
-    return stock_pb2.StockRequest.FromString(serialized_request)
-
-  def serialize_response(self, response):
-    return response.SerializeToString()
-
-  def deserialize_response(self, serialized_response):
-    return stock_pb2.StockReply.FromString(serialized_response)
-
-  def service(self, response_callback, context, control):
-    return _get_highest_trade_price(
-        response_callback, control, context.is_active)
-
-
-class GetHighestTradePriceMessages(service.StreamUnaryTestMessages):
-
-  def requests(self):
-    return [
-        stock_pb2.StockRequest(symbol=SYMBOL_FORMAT % index)
-        for index in range(STREAM_LENGTH)]
-
-  def verify(self, requests, response, test_case):
-    price = None
-    symbol = None
-    for stock_request in requests:
-      current_symbol = stock_request.symbol
-      current_price = _price(current_symbol)
-      if price is None or price < current_price:
-        price = current_price
-        symbol = current_symbol
-    test_case.assertEqual(price, response.price)
-    test_case.assertEqual(symbol, response.symbol)
-
-
-class StockTestService(service.TestService):
-  """A corpus of test data with one method of each RPC cardinality."""
-
-  def name(self):
-    return 'Stock'
-
-  def unary_unary_scenarios(self):
-    return {
-        'GetLastTradePrice': (
-            GetLastTradePrice(), [GetLastTradePriceMessages()]),
-    }
-
-  def unary_stream_scenarios(self):
-    return {
-        'WatchFutureTrades': (
-            WatchFutureTrades(), [WatchFutureTradesMessages()]),
-    }
-
-  def stream_unary_scenarios(self):
-    return {
-        'GetHighestTradePrice': (
-            GetHighestTradePrice(), [GetHighestTradePriceMessages()])
-    }
-
-  def stream_stream_scenarios(self):
-    return {
-        'GetLastTradePriceMultiple': (
-            GetLastTradePriceMultiple(), [GetLastTradePriceMultipleMessages()]),
-    }
-
-
-STOCK_TEST_SERVICE = StockTestService()
diff --git a/src/python/grpcio/tests/unit/framework/face/testing/test_case.py b/src/python/grpcio/tests/unit/framework/face/testing/test_case.py
deleted file mode 100644
index f29d400844..0000000000
--- a/src/python/grpcio/tests/unit/framework/face/testing/test_case.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Tools for creating tests of implementations of the Face layer."""
-
-import abc
-
-import six
-
-# face_interfaces and interfaces are referenced in specification in this module.
-from grpc.framework.face import interfaces as face_interfaces  # pylint: disable=unused-import
-from tests.unit.framework.face.testing import interfaces  # pylint: disable=unused-import
-
-
-class FaceTestCase(six.with_metaclass(abc.ABCMeta)):
-  """Describes a test of the Face Layer of RPC Framework.
-
-  Concrete subclasses must also inherit from unittest.TestCase and from at least
-  one class that defines test methods.
-  """
-
-  @abc.abstractmethod
-  def set_up_implementation(
-      self, name, methods, method_implementations,
-      multi_method_implementation):
-    """Instantiates the Face Layer implementation under test.
-
-    Args:
-      name: The service name to be used in the test.
-      methods: A sequence of interfaces.Method objects describing the RPC
-        methods that will be called during the test.
-      method_implementations: A dictionary from string RPC method name to
-        face_interfaces.MethodImplementation object specifying
-        implementation of an RPC method.
-      multi_method_implementation: An face_interfaces.MultiMethodImplementation
-        or None.
-
-    Returns:
-      A sequence of length two the first element of which is a
-        face_interfaces.GenericStub (backed by the given method
-        implementations), and the second element of which is an arbitrary memo
-        object to be kept and passed to tearDownImplementation at the conclusion
-        of the test.
-    """
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def tear_down_implementation(self, memo):
-    """Destroys the Face layer implementation under test.
-
-    Args:
-      memo: The object from the second position of the return value of
-        set_up_implementation.
-    """
-    raise NotImplementedError()
-- 
GitLab


From c74f62bcfcabd8b7468bcca16dda28a29b377877 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Thu, 28 Apr 2016 00:56:31 -0700
Subject: [PATCH 236/525] Don't try to read files that have been moved/renamed.

---
 tools/distrib/check_include_guards.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/distrib/check_include_guards.py b/tools/distrib/check_include_guards.py
index 897a899e7e..6c160c64b6 100755
--- a/tools/distrib/check_include_guards.py
+++ b/tools/distrib/check_include_guards.py
@@ -31,6 +31,7 @@
 
 import argparse
 import os
+import os.path
 import re
 import sys
 import subprocess
@@ -187,6 +188,8 @@ filename_list = []
 try:
   filename_list = subprocess.check_output(FILE_LIST_COMMAND,
                                           shell=True).splitlines()
+  # Filter out non-existent files (ie, file removed or renamed)
+  filename_list = (f for f in filename_list if os.path.isfile(f))
 except subprocess.CalledProcessError:
   sys.exit(0)
 
-- 
GitLab


From b6e444088009ade16d9af4ab497f484d63d65b86 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 28 Apr 2016 08:21:52 -0700
Subject: [PATCH 237/525] Disable fail fast for qps driver

---
 test/cpp/qps/driver.cc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test/cpp/qps/driver.cc b/test/cpp/qps/driver.cc
index 2583ceb819..04b2b453f9 100644
--- a/test/cpp/qps/driver.cc
+++ b/test/cpp/qps/driver.cc
@@ -83,6 +83,7 @@ static std::unordered_map<string, std::deque<int>> get_hosts_and_cores(
       auto stub = WorkerService::NewStub(
           CreateChannel(*it, InsecureChannelCredentials()));
       grpc::ClientContext ctx;
+      ctx.set_fail_fast(false);
       CoreRequest dummy;
       CoreResponse cores;
       grpc::Status s = stub->CoreCount(&ctx, dummy, &cores);
@@ -166,6 +167,7 @@ namespace runsc {
 static ClientContext* AllocContext(list<ClientContext>* contexts) {
   contexts->emplace_back();
   auto context = &contexts->back();
+  context->set_fail_fast(false);
   return context;
 }
 
@@ -435,6 +437,7 @@ void RunQuit() {
         CreateChannel(workers[i], InsecureChannelCredentials()));
     Void dummy;
     grpc::ClientContext ctx;
+    ctx.set_fail_fast(false);
     GPR_ASSERT(stub->QuitWorker(&ctx, dummy, &dummy).ok());
   }
 }
-- 
GitLab


From 9b7b62b59909ce1712291382156cf212d0b0caf4 Mon Sep 17 00:00:00 2001
From: Craig Tiller <craig.tiller@gmail.com>
Date: Thu, 28 Apr 2016 09:45:51 -0700
Subject: [PATCH 238/525] Fix a case whereby we leak a winsocket if we fail to
 connect

---
 src/core/lib/iomgr/tcp_client_windows.c | 28 ++++++++++++++++---------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/core/lib/iomgr/tcp_client_windows.c b/src/core/lib/iomgr/tcp_client_windows.c
index 7d78beb15a..111e0231f7 100644
--- a/src/core/lib/iomgr/tcp_client_windows.c
+++ b/src/core/lib/iomgr/tcp_client_windows.c
@@ -63,39 +63,44 @@ typedef struct {
   grpc_endpoint **endpoint;
 } async_connect;
 
-static void async_connect_unlock_and_cleanup(async_connect *ac) {
+static void async_connect_unlock_and_cleanup(async_connect *ac, grpc_winsocket *socket) {
   int done = (--ac->refs == 0);
   gpr_mu_unlock(&ac->mu);
   if (done) {
-    if (ac->socket != NULL) grpc_winsocket_destroy(ac->socket);
     gpr_mu_destroy(&ac->mu);
     gpr_free(ac->addr_name);
     gpr_free(ac);
   }
+  if (socket != NULL) grpc_winsocket_destroy(socket);
 }
 
 static void on_alarm(grpc_exec_ctx *exec_ctx, void *acp, bool occured) {
   async_connect *ac = acp;
   gpr_mu_lock(&ac->mu);
-  /* If the alarm didn't occur, it got cancelled. */
-  if (ac->socket != NULL && occured) {
+  if (ac->socket != NULL) {
     grpc_winsocket_shutdown(ac->socket);
   }
-  async_connect_unlock_and_cleanup(ac);
+  async_connect_unlock_and_cleanup(ac, ac->socket);
 }
 
 static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, bool from_iocp) {
   async_connect *ac = acp;
   SOCKET sock = ac->socket->socket;
   grpc_endpoint **ep = ac->endpoint;
+  GPR_ASSERT(*ep == NULL);
   grpc_winsocket_callback_info *info = &ac->socket->write_info;
   grpc_closure *on_done = ac->on_done;
 
+  gpr_mu_lock(&ac->mu);
+  grpc_winsocket *socket = ac->socket;
+  ac->socket = NULL;
+  gpr_mu_unlock(&ac->mu);
+
   grpc_timer_cancel(exec_ctx, &ac->alarm);
 
   gpr_mu_lock(&ac->mu);
 
-  if (from_iocp) {
+  if (from_iocp && socket != NULL) {
     DWORD transfered_bytes = 0;
     DWORD flags;
     BOOL wsa_success = WSAGetOverlappedResult(sock, &info->overlapped,
@@ -107,12 +112,12 @@ static void on_connect(grpc_exec_ctx *exec_ctx, void *acp, bool from_iocp) {
               ac->addr_name, utf8_message);
       gpr_free(utf8_message);
     } else {
-      *ep = grpc_tcp_create(ac->socket, ac->addr_name);
-      ac->socket = NULL;
+      *ep = grpc_tcp_create(socket, ac->addr_name);
+      socket = NULL;
     }
   }
 
-  async_connect_unlock_and_cleanup(ac);
+  async_connect_unlock_and_cleanup(ac, socket);
   /* If the connection was aborted, the callback was already called when
      the deadline was met. */
   on_done->cb(exec_ctx, on_done->cb_arg, *ep != NULL);
@@ -138,6 +143,7 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *on_done,
   const char *message = NULL;
   char *utf8_message;
   grpc_winsocket_callback_info *info;
+  int last_error;
 
   *endpoint = NULL;
 
@@ -208,8 +214,10 @@ void grpc_tcp_client_connect(grpc_exec_ctx *exec_ctx, grpc_closure *on_done,
   return;
 
 failure:
-  utf8_message = gpr_format_message(WSAGetLastError());
+  last_error = WSAGetLastError();
+  utf8_message = gpr_format_message(last_error);
   gpr_log(GPR_ERROR, message, utf8_message);
+  gpr_log(GPR_ERROR, "last error = %d", last_error);
   gpr_free(utf8_message);
   if (socket != NULL) {
     grpc_winsocket_destroy(socket);
-- 
GitLab


From 4cbaccfa60ae2e4e9ec0e6f8b14b285823868e60 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 28 Apr 2016 09:46:49 -0700
Subject: [PATCH 239/525] clang-format

---
 src/core/lib/iomgr/tcp_client_windows.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/core/lib/iomgr/tcp_client_windows.c b/src/core/lib/iomgr/tcp_client_windows.c
index 111e0231f7..66f9ff7a46 100644
--- a/src/core/lib/iomgr/tcp_client_windows.c
+++ b/src/core/lib/iomgr/tcp_client_windows.c
@@ -63,7 +63,8 @@ typedef struct {
   grpc_endpoint **endpoint;
 } async_connect;
 
-static void async_connect_unlock_and_cleanup(async_connect *ac, grpc_winsocket *socket) {
+static void async_connect_unlock_and_cleanup(async_connect *ac,
+                                             grpc_winsocket *socket) {
   int done = (--ac->refs == 0);
   gpr_mu_unlock(&ac->mu);
   if (done) {
-- 
GitLab


From 59c20edc3b22f286867e78f0cf8ba05a1a7f1c0f Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 28 Apr 2016 09:12:13 -0700
Subject: [PATCH 240/525] add comments from .proto file to generated C# files

---
 src/compiler/csharp_generator.cc | 89 +++++++++++++++++++++++++++++---
 1 file changed, 82 insertions(+), 7 deletions(-)

diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index 0d1404341d..ac0fee1ec4 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -52,6 +52,7 @@ using grpc::protobuf::MethodDescriptor;
 using grpc::protobuf::io::Printer;
 using grpc::protobuf::io::StringOutputStream;
 using grpc_generator::MethodType;
+using grpc_generator::GetCppComments;
 using grpc_generator::GetMethodType;
 using grpc_generator::METHODTYPE_NO_STREAMING;
 using grpc_generator::METHODTYPE_CLIENT_STREAMING;
@@ -65,6 +66,56 @@ using std::vector;
 namespace grpc_csharp_generator {
 namespace {
 
+// This function is a massaged version of
+// https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc
+// Currently, we cannot easily reuse the functionality as
+// google/protobuf/compiler/csharp/csharp_doc_comment.h is not a public header.
+// TODO(jtattermusch): reuse the functionality from google/protobuf.
+void GenerateDocCommentBodyImpl(grpc::protobuf::io::Printer* printer, grpc::protobuf::SourceLocation location) {
+    grpc::string comments = location.leading_comments.empty() ?
+        location.trailing_comments : location.leading_comments;
+  if (comments.empty()) {
+    return;
+  }
+  // XML escaping... no need for apostrophes etc as the whole text is going to be a child
+  // node of a summary element, not part of an attribute.
+  comments = grpc_generator::StringReplace(comments, "&", "&amp;", true);
+  comments = grpc_generator::StringReplace(comments, "<", "&lt;", true);
+
+  std::vector<grpc::string> lines;
+  grpc_generator::Split(comments, '\n', &lines);
+  // TODO: We really should work out which part to put in the summary and which to put in the remarks...
+  // but that needs to be part of a bigger effort to understand the markdown better anyway.
+  printer->Print("/// <summary>\n");
+  bool last_was_empty = false;
+  // We squash multiple blank lines down to one, and remove any trailing blank lines. We need
+  // to preserve the blank lines themselves, as this is relevant in the markdown.
+  // Note that we can't remove leading or trailing whitespace as *that's* relevant in markdown too.
+  // (We don't skip "just whitespace" lines, either.)
+  for (std::vector<grpc::string>::iterator it = lines.begin(); it != lines.end(); ++it) {
+    grpc::string line = *it;
+    if (line.empty()) {
+      last_was_empty = true;
+    } else {
+      if (last_was_empty) {
+          printer->Print("///\n");
+      }
+      last_was_empty = false;
+      printer->Print("/// $line$\n", "line", *it);
+    }
+  }
+  printer->Print("/// </summary>\n");
+}
+
+template <typename DescriptorType>
+void GenerateDocCommentBody(
+  grpc::protobuf::io::Printer* printer, const DescriptorType* descriptor) {
+  grpc::protobuf::SourceLocation location;
+  if (descriptor->GetSourceLocation(&location)) {
+    GenerateDocCommentBodyImpl(printer, location);
+  }
+}
+
 std::string GetServiceClassName(const ServiceDescriptor* service) {
   return service->name();
 }
@@ -242,7 +293,7 @@ void GenerateStaticMethodField(Printer* out, const MethodDescriptor *method) {
 void GenerateServiceDescriptorProperty(Printer* out, const ServiceDescriptor *service) {
   std::ostringstream index;
   index << service->index();
-  out->Print("// service descriptor\n");
+  out->Print("/// <summary>Service descriptor</summary>\n");
   out->Print("public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor\n");
   out->Print("{\n");
   out->Print("  get { return $umbrella$.Descriptor.Services[$index$]; }\n",
@@ -253,7 +304,8 @@ void GenerateServiceDescriptorProperty(Printer* out, const ServiceDescriptor *se
 }
 
 void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
-  out->Print("// client interface\n");
+  out->Print("/// <summary>Client for $servicename$</summary>\n",
+             "servicename", GetServiceClassName(service));
   out->Print("[System.Obsolete(\"Client side interfaced will be removed "
              "in the next release. Use client class directly.\")]\n");
   out->Print("public interface $name$\n", "name",
@@ -266,6 +318,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
 
     if (method_type == METHODTYPE_NO_STREAMING) {
       // unary calls have an extra synchronous stub method
+      GenerateDocCommentBody(out, method);
       out->Print(
           "$response$ $methodname$($request$ request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));\n",
           "methodname", method->name(), "request",
@@ -273,6 +326,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
           GetClassName(method->output_type()));
 
       // overload taking CallOptions as a param
+      GenerateDocCommentBody(out, method);
       out->Print(
           "$response$ $methodname$($request$ request, CallOptions options);\n",
           "methodname", method->name(), "request",
@@ -284,6 +338,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
     if (method_type == METHODTYPE_NO_STREAMING) {
       method_name += "Async";  // prevent name clash with synchronous method.
     }
+    GenerateDocCommentBody(out, method);
     out->Print(
         "$returntype$ $methodname$($request_maybe$Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));\n",
         "methodname", method_name, "request_maybe",
@@ -291,6 +346,7 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
         GetMethodReturnTypeClient(method));
 
     // overload taking CallOptions as a param
+    GenerateDocCommentBody(out, method);
     out->Print(
         "$returntype$ $methodname$($request_maybe$CallOptions options);\n",
         "methodname", method_name, "request_maybe",
@@ -303,7 +359,8 @@ void GenerateClientInterface(Printer* out, const ServiceDescriptor *service) {
 }
 
 void GenerateServerInterface(Printer* out, const ServiceDescriptor *service) {
-  out->Print("// server-side interface\n");
+  out->Print("/// <summary>Interface of server-side implementations of $servicename$</summary>\n",
+             "servicename", GetServiceClassName(service));
   out->Print("[System.Obsolete(\"Service implementations should inherit"
       " from the generated abstract base class instead.\")]\n");
   out->Print("public interface $name$\n", "name",
@@ -312,6 +369,7 @@ void GenerateServerInterface(Printer* out, const ServiceDescriptor *service) {
   out->Indent();
   for (int i = 0; i < service->method_count(); i++) {
     const MethodDescriptor *method = service->method(i);
+    GenerateDocCommentBody(out, method);
     out->Print(
         "$returntype$ $methodname$($request$$response_stream_maybe$, "
         "ServerCallContext context);\n",
@@ -326,13 +384,15 @@ void GenerateServerInterface(Printer* out, const ServiceDescriptor *service) {
 }
 
 void GenerateServerClass(Printer* out, const ServiceDescriptor *service) {
-  out->Print("// server-side abstract class\n");
+  out->Print("/// <summary>Base class for server-side implementations of $servicename$</summary>\n",
+             "servicename", GetServiceClassName(service));
   out->Print("public abstract class $name$\n", "name",
              GetServerClassName(service));
   out->Print("{\n");
   out->Indent();
   for (int i = 0; i < service->method_count(); i++) {
     const MethodDescriptor *method = service->method(i);
+    GenerateDocCommentBody(out, method);
     out->Print(
         "public virtual $returntype$ $methodname$($request$$response_stream_maybe$, "
         "ServerCallContext context)\n",
@@ -353,7 +413,8 @@ void GenerateServerClass(Printer* out, const ServiceDescriptor *service) {
 }
 
 void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
-  out->Print("// client stub\n");
+  out->Print("/// <summary>Client for $servicename$</summary>\n",
+             "servicename", GetServiceClassName(service));
   out->Print("#pragma warning disable 0618\n");
   out->Print(
       "public class $name$ : ClientBase<$name$>, $interface$\n",
@@ -392,6 +453,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
 
     if (method_type == METHODTYPE_NO_STREAMING) {
       // unary calls have an extra synchronous stub method
+      GenerateDocCommentBody(out, method);
       out->Print("public virtual $response$ $methodname$($request$ request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))\n",
           "methodname", method->name(), "request",
           GetClassName(method->input_type()), "response",
@@ -404,6 +466,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
       out->Print("}\n");
 
       // overload taking CallOptions as a param
+      GenerateDocCommentBody(out, method);
       out->Print("public virtual $response$ $methodname$($request$ request, CallOptions options)\n",
           "methodname", method->name(), "request",
           GetClassName(method->input_type()), "response",
@@ -420,6 +483,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
     if (method_type == METHODTYPE_NO_STREAMING) {
       method_name += "Async";  // prevent name clash with synchronous method.
     }
+    GenerateDocCommentBody(out, method);
     out->Print(
             "public virtual $returntype$ $methodname$($request_maybe$Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))\n",
             "methodname", method_name, "request_maybe",
@@ -435,6 +499,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
     out->Print("}\n");
 
     // overload taking CallOptions as a param
+    GenerateDocCommentBody(out, method);
     out->Print(
         "public virtual $returntype$ $methodname$($request_maybe$CallOptions options)\n",
         "methodname", method_name, "request_maybe",
@@ -485,7 +550,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor *service) {
 void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor *service,
                                bool use_server_class) {
   out->Print(
-      "// creates service definition that can be registered with a server\n");
+      "/// <summary>Creates service definition that can be registered with a server</summary>\n");
   out->Print("#pragma warning disable 0618\n");
   out->Print(
       "public static ServerServiceDefinition BindService($interface$ serviceImpl)\n",
@@ -519,7 +584,8 @@ void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor *service,
 }
 
 void GenerateNewStubMethods(Printer* out, const ServiceDescriptor *service) {
-  out->Print("// creates a new client\n");
+  out->Print("/// <summary>Creates a new client for $servicename$</summary>\n",
+             "servicename", GetServiceClassName(service));
   out->Print("public static $classname$ NewClient(Channel channel)\n",
              "classname", GetClientClassName(service));
   out->Print("{\n");
@@ -534,6 +600,7 @@ void GenerateNewStubMethods(Printer* out, const ServiceDescriptor *service) {
 void GenerateService(Printer* out, const ServiceDescriptor *service,
                      bool generate_client, bool generate_server,
                      bool internal_access) {
+  GenerateDocCommentBody(out, service);
   out->Print("$access_level$ static class $classname$\n", "access_level",
              GetAccessLevel(internal_access), "classname",
              GetServiceClassName(service));
@@ -590,6 +657,14 @@ grpc::string GetServices(const FileDescriptor *file, bool generate_client,
     // Write out a file header.
     out.Print("// Generated by the protocol buffer compiler.  DO NOT EDIT!\n");
     out.Print("// source: $filename$\n", "filename", file->name());
+
+    // use C++ style as there are no file-level XML comments in .NET
+    grpc::string leading_comments = GetCppComments(file, true);
+    if (!leading_comments.empty()) {
+      out.Print("// Original file comments:\n");
+      out.Print(leading_comments.c_str());
+    }
+
     out.Print("#region Designer generated code\n");
     out.Print("\n");
     out.Print("using System;\n");
-- 
GitLab


From bfee01ddc88b8f655fbfb88f83566a170f1ae3a3 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 28 Apr 2016 10:52:41 -0700
Subject: [PATCH 241/525] regenerate C# sources

---
 src/csharp/Grpc.Examples/MathGrpc.cs          | 176 ++++++++++-
 src/csharp/Grpc.HealthCheck/HealthGrpc.cs     |  46 ++-
 .../Grpc.IntegrationTesting/MetricsGrpc.cs    | 106 ++++++-
 .../Grpc.IntegrationTesting/ServicesGrpc.cs   | 284 ++++++++++++++++-
 .../Grpc.IntegrationTesting/TestGrpc.cs       | 296 ++++++++++++++++--
 5 files changed, 844 insertions(+), 64 deletions(-)

diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index edbce913b8..2d3034d28b 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -1,5 +1,35 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: math.proto
+// Original file comments:
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
 #region Designer generated code
 
 using System;
@@ -45,56 +75,140 @@ namespace Math {
         __Marshaller_Num,
         __Marshaller_Num);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Math.MathReflection.Descriptor.Services[0]; }
     }
 
-    // client interface
+    /// <summary>Client for Math</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface IMathClient
     {
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       global::Math.DivReply Div(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       global::Math.DivReply Div(global::Math.DivArgs request, CallOptions options);
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, CallOptions options);
+      /// <summary>
+      ///  DivMany accepts an arbitrary number of division args from the client stream
+      ///  and sends back the results in the reply stream.  The stream continues until
+      ///  the client closes its end; the server does the same after sending all the
+      ///  replies.  The stream ends immediately if either end aborts.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  DivMany accepts an arbitrary number of division args from the client stream
+      ///  and sends back the results in the reply stream.  The stream continues until
+      ///  the client closes its end; the server does the same after sending all the
+      ///  replies.  The stream ends immediately if either end aborts.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(CallOptions options);
+      /// <summary>
+      ///  Fib generates numbers in the Fibonacci sequence.  If args.limit > 0, Fib
+      ///  generates up to limit numbers; otherwise it continues until the call is
+      ///  canceled.  Unlike Fib above, Fib has no final FibReply.
+      /// </summary>
       AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Fib generates numbers in the Fibonacci sequence.  If args.limit > 0, Fib
+      ///  generates up to limit numbers; otherwise it continues until the call is
+      ///  canceled.  Unlike Fib above, Fib has no final FibReply.
+      /// </summary>
       AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, CallOptions options);
+      /// <summary>
+      ///  Sum sums a stream of numbers, returning the final result once the stream
+      ///  is closed.
+      /// </summary>
       AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Sum sums a stream of numbers, returning the final result once the stream
+      ///  is closed.
+      /// </summary>
       AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of Math</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IMath
     {
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context);
+      /// <summary>
+      ///  DivMany accepts an arbitrary number of division args from the client stream
+      ///  and sends back the results in the reply stream.  The stream continues until
+      ///  the client closes its end; the server does the same after sending all the
+      ///  replies.  The stream ends immediately if either end aborts.
+      /// </summary>
       Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context);
+      /// <summary>
+      ///  Fib generates numbers in the Fibonacci sequence.  If args.limit > 0, Fib
+      ///  generates up to limit numbers; otherwise it continues until the call is
+      ///  canceled.  Unlike Fib above, Fib has no final FibReply.
+      /// </summary>
       Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context);
+      /// <summary>
+      ///  Sum sums a stream of numbers, returning the final result once the stream
+      ///  is closed.
+      /// </summary>
       Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of Math</summary>
     public abstract class MathBase
     {
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       public virtual Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  DivMany accepts an arbitrary number of division args from the client stream
+      ///  and sends back the results in the reply stream.  The stream continues until
+      ///  the client closes its end; the server does the same after sending all the
+      ///  replies.  The stream ends immediately if either end aborts.
+      /// </summary>
       public virtual Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  Fib generates numbers in the Fibonacci sequence.  If args.limit > 0, Fib
+      ///  generates up to limit numbers; otherwise it continues until the call is
+      ///  canceled.  Unlike Fib above, Fib has no final FibReply.
+      /// </summary>
       public virtual Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  Sum sums a stream of numbers, returning the final result once the stream
+      ///  is closed.
+      /// </summary>
       public virtual Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
@@ -102,7 +216,7 @@ namespace Math {
 
     }
 
-    // client stub
+    /// <summary>Client for Math</summary>
     #pragma warning disable 0618
     public class MathClient : ClientBase<MathClient>, IMathClient
     #pragma warning restore 0618
@@ -122,42 +236,88 @@ namespace Math {
       {
       }
 
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       public virtual global::Math.DivReply Div(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return Div(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       public virtual global::Math.DivReply Div(global::Math.DivArgs request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_Div, null, options, request);
       }
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DivAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Div divides args.dividend by args.divisor and returns the quotient and
+      ///  remainder.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Math.DivReply> DivAsync(global::Math.DivArgs request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_Div, null, options, request);
       }
+      /// <summary>
+      ///  DivMany accepts an arbitrary number of division args from the client stream
+      ///  and sends back the results in the reply stream.  The stream continues until
+      ///  the client closes its end; the server does the same after sending all the
+      ///  replies.  The stream ends immediately if either end aborts.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DivMany(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  DivMany accepts an arbitrary number of division args from the client stream
+      ///  and sends back the results in the reply stream.  The stream continues until
+      ///  the client closes its end; the server does the same after sending all the
+      ///  replies.  The stream ends immediately if either end aborts.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Math.DivArgs, global::Math.DivReply> DivMany(CallOptions options)
       {
         return CallInvoker.AsyncDuplexStreamingCall(__Method_DivMany, null, options);
       }
+      /// <summary>
+      ///  Fib generates numbers in the Fibonacci sequence.  If args.limit > 0, Fib
+      ///  generates up to limit numbers; otherwise it continues until the call is
+      ///  canceled.  Unlike Fib above, Fib has no final FibReply.
+      /// </summary>
       public virtual AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return Fib(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Fib generates numbers in the Fibonacci sequence.  If args.limit > 0, Fib
+      ///  generates up to limit numbers; otherwise it continues until the call is
+      ///  canceled.  Unlike Fib above, Fib has no final FibReply.
+      /// </summary>
       public virtual AsyncServerStreamingCall<global::Math.Num> Fib(global::Math.FibArgs request, CallOptions options)
       {
         return CallInvoker.AsyncServerStreamingCall(__Method_Fib, null, options, request);
       }
+      /// <summary>
+      ///  Sum sums a stream of numbers, returning the final result once the stream
+      ///  is closed.
+      /// </summary>
       public virtual AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return Sum(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Sum sums a stream of numbers, returning the final result once the stream
+      ///  is closed.
+      /// </summary>
       public virtual AsyncClientStreamingCall<global::Math.Num, global::Math.Num> Sum(CallOptions options)
       {
         return CallInvoker.AsyncClientStreamingCall(__Method_Sum, null, options);
@@ -168,13 +328,13 @@ namespace Math {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for Math</summary>
     public static MathClient NewClient(Channel channel)
     {
       return new MathClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMath serviceImpl)
     #pragma warning restore 0618
@@ -186,7 +346,7 @@ namespace Math {
           .AddMethod(__Method_Sum, serviceImpl.Sum).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(MathBase serviceImpl)
     #pragma warning restore 0618
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index e2cdabf011..967d1170be 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -1,5 +1,35 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: health.proto
+// Original file comments:
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
 #region Designer generated code
 
 using System;
@@ -22,13 +52,13 @@ namespace Grpc.Health.V1 {
         __Marshaller_HealthCheckRequest,
         __Marshaller_HealthCheckResponse);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Grpc.Health.V1.HealthReflection.Descriptor.Services[0]; }
     }
 
-    // client interface
+    /// <summary>Client for Health</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface IHealthClient
     {
@@ -38,14 +68,14 @@ namespace Grpc.Health.V1 {
       AsyncUnaryCall<global::Grpc.Health.V1.HealthCheckResponse> CheckAsync(global::Grpc.Health.V1.HealthCheckRequest request, CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of Health</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IHealth
     {
       Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of Health</summary>
     public abstract class HealthBase
     {
       public virtual Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context)
@@ -55,7 +85,7 @@ namespace Grpc.Health.V1 {
 
     }
 
-    // client stub
+    /// <summary>Client for Health</summary>
     #pragma warning disable 0618
     public class HealthClient : ClientBase<HealthClient>, IHealthClient
     #pragma warning restore 0618
@@ -97,13 +127,13 @@ namespace Grpc.Health.V1 {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for Health</summary>
     public static HealthClient NewClient(Channel channel)
     {
       return new HealthClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IHealth serviceImpl)
     #pragma warning restore 0618
@@ -112,7 +142,7 @@ namespace Grpc.Health.V1 {
           .AddMethod(__Method_Check, serviceImpl.Check).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(HealthBase serviceImpl)
     #pragma warning restore 0618
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index 0f701a837f..aa4f1c5c3e 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -1,5 +1,41 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: src/proto/grpc/testing/metrics.proto
+// Original file comments:
+// Copyright 2015-2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Contains the definitions for a metrics service and the type of metrics
+// exposed by the service.
+//
+// Currently, 'Gauge' (i.e a metric that represents the measured value of
+// something at an instant of time) is the only metric type supported by the
+// service.
 #region Designer generated code
 
 using System;
@@ -30,40 +66,74 @@ namespace Grpc.Testing {
         __Marshaller_GaugeRequest,
         __Marshaller_GaugeResponse);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Grpc.Testing.MetricsReflection.Descriptor.Services[0]; }
     }
 
-    // client interface
+    /// <summary>Client for MetricsService</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface IMetricsServiceClient
     {
+      /// <summary>
+      ///  Returns the values of all the gauges that are currently being maintained by
+      ///  the service
+      /// </summary>
       AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Returns the values of all the gauges that are currently being maintained by
+      ///  the service
+      /// </summary>
       AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, CallOptions options);
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, CallOptions options);
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of MetricsService</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IMetricsService
     {
+      /// <summary>
+      ///  Returns the values of all the gauges that are currently being maintained by
+      ///  the service
+      /// </summary>
       Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context);
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of MetricsService</summary>
     public abstract class MetricsServiceBase
     {
+      /// <summary>
+      ///  Returns the values of all the gauges that are currently being maintained by
+      ///  the service
+      /// </summary>
       public virtual Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       public virtual Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
@@ -71,7 +141,7 @@ namespace Grpc.Testing {
 
     }
 
-    // client stub
+    /// <summary>Client for MetricsService</summary>
     #pragma warning disable 0618
     public class MetricsServiceClient : ClientBase<MetricsServiceClient>, IMetricsServiceClient
     #pragma warning restore 0618
@@ -91,26 +161,46 @@ namespace Grpc.Testing {
       {
       }
 
+      /// <summary>
+      ///  Returns the values of all the gauges that are currently being maintained by
+      ///  the service
+      /// </summary>
       public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetAllGauges(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Returns the values of all the gauges that are currently being maintained by
+      ///  the service
+      /// </summary>
       public virtual AsyncServerStreamingCall<global::Grpc.Testing.GaugeResponse> GetAllGauges(global::Grpc.Testing.EmptyMessage request, CallOptions options)
       {
         return CallInvoker.AsyncServerStreamingCall(__Method_GetAllGauges, null, options, request);
       }
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetGauge(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       public virtual global::Grpc.Testing.GaugeResponse GetGauge(global::Grpc.Testing.GaugeRequest request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_GetGauge, null, options, request);
       }
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetGaugeAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Returns the value of one gauge
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.GaugeResponse> GetGaugeAsync(global::Grpc.Testing.GaugeRequest request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_GetGauge, null, options, request);
@@ -121,13 +211,13 @@ namespace Grpc.Testing {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for MetricsService</summary>
     public static MetricsServiceClient NewClient(Channel channel)
     {
       return new MetricsServiceClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IMetricsService serviceImpl)
     #pragma warning restore 0618
@@ -137,7 +227,7 @@ namespace Grpc.Testing {
           .AddMethod(__Method_GetGauge, serviceImpl.GetGauge).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(MetricsServiceBase serviceImpl)
     #pragma warning restore 0618
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index 3f07a7aeb6..42bf5e0b58 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -1,5 +1,37 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: src/proto/grpc/testing/services.proto
+// Original file comments:
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
 #region Designer generated code
 
 using System;
@@ -29,40 +61,80 @@ namespace Grpc.Testing {
         __Marshaller_SimpleRequest,
         __Marshaller_SimpleResponse);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Grpc.Testing.ServicesReflection.Descriptor.Services[0]; }
     }
 
-    // client interface
+    /// <summary>Client for BenchmarkService</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface IBenchmarkServiceClient
     {
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of BenchmarkService</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IBenchmarkService
     {
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of BenchmarkService</summary>
     public abstract class BenchmarkServiceBase
     {
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
@@ -70,7 +142,7 @@ namespace Grpc.Testing {
 
     }
 
-    // client stub
+    /// <summary>Client for BenchmarkService</summary>
     #pragma warning disable 0618
     public class BenchmarkServiceClient : ClientBase<BenchmarkServiceClient>, IBenchmarkServiceClient
     #pragma warning restore 0618
@@ -90,26 +162,50 @@ namespace Grpc.Testing {
       {
       }
 
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UnaryCall(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_UnaryCall, null, options, request);
       }
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UnaryCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_UnaryCall, null, options, request);
       }
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return StreamingCall(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One request followed by one response.
+      ///  The server returns the client payload as-is.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.SimpleRequest, global::Grpc.Testing.SimpleResponse> StreamingCall(CallOptions options)
       {
         return CallInvoker.AsyncDuplexStreamingCall(__Method_StreamingCall, null, options);
@@ -120,13 +216,13 @@ namespace Grpc.Testing {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for BenchmarkService</summary>
     public static BenchmarkServiceClient NewClient(Channel channel)
     {
       return new BenchmarkServiceClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IBenchmarkService serviceImpl)
     #pragma warning restore 0618
@@ -136,7 +232,7 @@ namespace Grpc.Testing {
           .AddMethod(__Method_StreamingCall, serviceImpl.StreamingCall).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(BenchmarkServiceBase serviceImpl)
     #pragma warning restore 0618
@@ -187,58 +283,158 @@ namespace Grpc.Testing {
         __Marshaller_Void,
         __Marshaller_Void);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Grpc.Testing.ServicesReflection.Descriptor.Services[1]; }
     }
 
-    // client interface
+    /// <summary>Client for WorkerService</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface IWorkerServiceClient
     {
+      /// <summary>
+      ///  Start server with specified workload.
+      ///  First request sent specifies the ServerConfig followed by ServerStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test server
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Start server with specified workload.
+      ///  First request sent specifies the ServerConfig followed by ServerStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test server
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(CallOptions options);
+      /// <summary>
+      ///  Start client with specified workload.
+      ///  First request sent specifies the ClientConfig followed by ClientStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test client
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Start client with specified workload.
+      ///  First request sent specifies the ClientConfig followed by ClientStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test client
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(CallOptions options);
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, CallOptions options);
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, CallOptions options);
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, CallOptions options);
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of WorkerService</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IWorkerService
     {
+      /// <summary>
+      ///  Start server with specified workload.
+      ///  First request sent specifies the ServerConfig followed by ServerStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test server
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context);
+      /// <summary>
+      ///  Start client with specified workload.
+      ///  First request sent specifies the ClientConfig followed by ClientStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test client
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context);
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context);
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of WorkerService</summary>
     public abstract class WorkerServiceBase
     {
+      /// <summary>
+      ///  Start server with specified workload.
+      ///  First request sent specifies the ServerConfig followed by ServerStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test server
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       public virtual Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  Start client with specified workload.
+      ///  First request sent specifies the ClientConfig followed by ClientStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test client
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       public virtual Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       public virtual Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       public virtual Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
@@ -246,7 +442,7 @@ namespace Grpc.Testing {
 
     }
 
-    // client stub
+    /// <summary>Client for WorkerService</summary>
     #pragma warning disable 0618
     public class WorkerServiceClient : ClientBase<WorkerServiceClient>, IWorkerServiceClient
     #pragma warning restore 0618
@@ -266,50 +462,106 @@ namespace Grpc.Testing {
       {
       }
 
+      /// <summary>
+      ///  Start server with specified workload.
+      ///  First request sent specifies the ServerConfig followed by ServerStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test server
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return RunServer(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Start server with specified workload.
+      ///  First request sent specifies the ServerConfig followed by ServerStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test server
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ServerArgs, global::Grpc.Testing.ServerStatus> RunServer(CallOptions options)
       {
         return CallInvoker.AsyncDuplexStreamingCall(__Method_RunServer, null, options);
       }
+      /// <summary>
+      ///  Start client with specified workload.
+      ///  First request sent specifies the ClientConfig followed by ClientStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test client
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return RunClient(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Start client with specified workload.
+      ///  First request sent specifies the ClientConfig followed by ClientStatus
+      ///  response. After that, a "Mark" can be sent anytime to request the latest
+      ///  stats. Closing the stream will initiate shutdown of the test client
+      ///  and once the shutdown has finished, the OK status is sent to terminate
+      ///  this RPC.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.ClientArgs, global::Grpc.Testing.ClientStatus> RunClient(CallOptions options)
       {
         return CallInvoker.AsyncDuplexStreamingCall(__Method_RunClient, null, options);
       }
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CoreCount(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       public virtual global::Grpc.Testing.CoreResponse CoreCount(global::Grpc.Testing.CoreRequest request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_CoreCount, null, options, request);
       }
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CoreCountAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Just return the core count - unary call
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.CoreResponse> CoreCountAsync(global::Grpc.Testing.CoreRequest request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_CoreCount, null, options, request);
       }
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return QuitWorker(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       public virtual global::Grpc.Testing.Void QuitWorker(global::Grpc.Testing.Void request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_QuitWorker, null, options, request);
       }
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return QuitWorkerAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  Quit this worker
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.Void> QuitWorkerAsync(global::Grpc.Testing.Void request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_QuitWorker, null, options, request);
@@ -320,13 +572,13 @@ namespace Grpc.Testing {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for WorkerService</summary>
     public static WorkerServiceClient NewClient(Channel channel)
     {
       return new WorkerServiceClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IWorkerService serviceImpl)
     #pragma warning restore 0618
@@ -338,7 +590,7 @@ namespace Grpc.Testing {
           .AddMethod(__Method_QuitWorker, serviceImpl.QuitWorker).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(WorkerServiceBase serviceImpl)
     #pragma warning restore 0618
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index 4efd35f81f..f1878cbb55 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -1,5 +1,38 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: src/proto/grpc/testing/test.proto
+// Original file comments:
+// Copyright 2015-2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+//
 #region Designer generated code
 
 using System;
@@ -8,6 +41,10 @@ using System.Threading.Tasks;
 using Grpc.Core;
 
 namespace Grpc.Testing {
+  /// <summary>
+  ///  A simple service to test the various types of RPCs and experiment with
+  ///  performance with various types of payload.
+  /// </summary>
   public static class TestService
   {
     static readonly string __ServiceName = "grpc.testing.TestService";
@@ -62,74 +99,186 @@ namespace Grpc.Testing {
         __Marshaller_StreamingOutputCallRequest,
         __Marshaller_StreamingOutputCallResponse);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Grpc.Testing.TestReflection.Descriptor.Services[0]; }
     }
 
-    // client interface
+    /// <summary>Client for TestService</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface ITestServiceClient
     {
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, CallOptions options);
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, CallOptions options);
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options);
+      /// <summary>
+      ///  One request followed by a sequence of responses (streamed download).
+      ///  The server returns the payload with client desired type and sizes.
+      /// </summary>
       AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  One request followed by a sequence of responses (streamed download).
+      ///  The server returns the payload with client desired type and sizes.
+      /// </summary>
       AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, CallOptions options);
+      /// <summary>
+      ///  A sequence of requests followed by one response (streamed upload).
+      ///  The server returns the aggregated size of client payload as the result.
+      /// </summary>
       AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  A sequence of requests followed by one response (streamed upload).
+      ///  The server returns the aggregated size of client payload as the result.
+      /// </summary>
       AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(CallOptions options);
+      /// <summary>
+      ///  A sequence of requests with each request served by the server immediately.
+      ///  As one request could lead to multiple responses, this interface
+      ///  demonstrates the idea of full duplexing.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  A sequence of requests with each request served by the server immediately.
+      ///  As one request could lead to multiple responses, this interface
+      ///  demonstrates the idea of full duplexing.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(CallOptions options);
+      /// <summary>
+      ///  A sequence of requests followed by a sequence of responses.
+      ///  The server buffers all the client requests and then serves them in order. A
+      ///  stream of responses are returned to the client when the server starts with
+      ///  first request.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  A sequence of requests followed by a sequence of responses.
+      ///  The server buffers all the client requests and then serves them in order. A
+      ///  stream of responses are returned to the client when the server starts with
+      ///  first request.
+      /// </summary>
       AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of TestService</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface ITestService
     {
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context);
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
+      /// <summary>
+      ///  One request followed by a sequence of responses (streamed download).
+      ///  The server returns the payload with client desired type and sizes.
+      /// </summary>
       Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+      /// <summary>
+      ///  A sequence of requests followed by one response (streamed upload).
+      ///  The server returns the aggregated size of client payload as the result.
+      /// </summary>
       Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context);
+      /// <summary>
+      ///  A sequence of requests with each request served by the server immediately.
+      ///  As one request could lead to multiple responses, this interface
+      ///  demonstrates the idea of full duplexing.
+      /// </summary>
       Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+      /// <summary>
+      ///  A sequence of requests followed by a sequence of responses.
+      ///  The server buffers all the client requests and then serves them in order. A
+      ///  stream of responses are returned to the client when the server starts with
+      ///  first request.
+      /// </summary>
       Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of TestService</summary>
     public abstract class TestServiceBase
     {
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       public virtual Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       public virtual Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  One request followed by a sequence of responses (streamed download).
+      ///  The server returns the payload with client desired type and sizes.
+      /// </summary>
       public virtual Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  A sequence of requests followed by one response (streamed upload).
+      ///  The server returns the aggregated size of client payload as the result.
+      /// </summary>
       public virtual Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  A sequence of requests with each request served by the server immediately.
+      ///  As one request could lead to multiple responses, this interface
+      ///  demonstrates the idea of full duplexing.
+      /// </summary>
       public virtual Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
+      /// <summary>
+      ///  A sequence of requests followed by a sequence of responses.
+      ///  The server buffers all the client requests and then serves them in order. A
+      ///  stream of responses are returned to the client when the server starts with
+      ///  first request.
+      /// </summary>
       public virtual Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
@@ -137,7 +286,7 @@ namespace Grpc.Testing {
 
     }
 
-    // client stub
+    /// <summary>Client for TestService</summary>
     #pragma warning disable 0618
     public class TestServiceClient : ClientBase<TestServiceClient>, ITestServiceClient
     #pragma warning restore 0618
@@ -157,66 +306,128 @@ namespace Grpc.Testing {
       {
       }
 
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return EmptyCall(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       public virtual global::Grpc.Testing.Empty EmptyCall(global::Grpc.Testing.Empty request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_EmptyCall, null, options, request);
       }
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return EmptyCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One empty request followed by one empty response.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> EmptyCallAsync(global::Grpc.Testing.Empty request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_EmptyCall, null, options, request);
       }
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UnaryCall(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       public virtual global::Grpc.Testing.SimpleResponse UnaryCall(global::Grpc.Testing.SimpleRequest request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_UnaryCall, null, options, request);
       }
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UnaryCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One request followed by one response.
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.SimpleResponse> UnaryCallAsync(global::Grpc.Testing.SimpleRequest request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_UnaryCall, null, options, request);
       }
+      /// <summary>
+      ///  One request followed by a sequence of responses (streamed download).
+      ///  The server returns the payload with client desired type and sizes.
+      /// </summary>
       public virtual AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return StreamingOutputCall(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  One request followed by a sequence of responses (streamed download).
+      ///  The server returns the payload with client desired type and sizes.
+      /// </summary>
       public virtual AsyncServerStreamingCall<global::Grpc.Testing.StreamingOutputCallResponse> StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, CallOptions options)
       {
         return CallInvoker.AsyncServerStreamingCall(__Method_StreamingOutputCall, null, options, request);
       }
+      /// <summary>
+      ///  A sequence of requests followed by one response (streamed upload).
+      ///  The server returns the aggregated size of client payload as the result.
+      /// </summary>
       public virtual AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return StreamingInputCall(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  A sequence of requests followed by one response (streamed upload).
+      ///  The server returns the aggregated size of client payload as the result.
+      /// </summary>
       public virtual AsyncClientStreamingCall<global::Grpc.Testing.StreamingInputCallRequest, global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(CallOptions options)
       {
         return CallInvoker.AsyncClientStreamingCall(__Method_StreamingInputCall, null, options);
       }
+      /// <summary>
+      ///  A sequence of requests with each request served by the server immediately.
+      ///  As one request could lead to multiple responses, this interface
+      ///  demonstrates the idea of full duplexing.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return FullDuplexCall(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  A sequence of requests with each request served by the server immediately.
+      ///  As one request could lead to multiple responses, this interface
+      ///  demonstrates the idea of full duplexing.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> FullDuplexCall(CallOptions options)
       {
         return CallInvoker.AsyncDuplexStreamingCall(__Method_FullDuplexCall, null, options);
       }
+      /// <summary>
+      ///  A sequence of requests followed by a sequence of responses.
+      ///  The server buffers all the client requests and then serves them in order. A
+      ///  stream of responses are returned to the client when the server starts with
+      ///  first request.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return HalfDuplexCall(new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  A sequence of requests followed by a sequence of responses.
+      ///  The server buffers all the client requests and then serves them in order. A
+      ///  stream of responses are returned to the client when the server starts with
+      ///  first request.
+      /// </summary>
       public virtual AsyncDuplexStreamingCall<global::Grpc.Testing.StreamingOutputCallRequest, global::Grpc.Testing.StreamingOutputCallResponse> HalfDuplexCall(CallOptions options)
       {
         return CallInvoker.AsyncDuplexStreamingCall(__Method_HalfDuplexCall, null, options);
@@ -227,13 +438,13 @@ namespace Grpc.Testing {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for TestService</summary>
     public static TestServiceClient NewClient(Channel channel)
     {
       return new TestServiceClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(ITestService serviceImpl)
     #pragma warning restore 0618
@@ -247,7 +458,7 @@ namespace Grpc.Testing {
           .AddMethod(__Method_HalfDuplexCall, serviceImpl.HalfDuplexCall).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(TestServiceBase serviceImpl)
     #pragma warning restore 0618
@@ -262,6 +473,10 @@ namespace Grpc.Testing {
     }
 
   }
+  /// <summary>
+  ///  A simple service NOT implemented at servers so clients can test for
+  ///  that case.
+  /// </summary>
   public static class UnimplementedService
   {
     static readonly string __ServiceName = "grpc.testing.UnimplementedService";
@@ -275,32 +490,50 @@ namespace Grpc.Testing {
         __Marshaller_Empty,
         __Marshaller_Empty);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Grpc.Testing.TestReflection.Descriptor.Services[1]; }
     }
 
-    // client interface
+    /// <summary>Client for UnimplementedService</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface IUnimplementedServiceClient
     {
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, CallOptions options);
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken));
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of UnimplementedService</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IUnimplementedService
     {
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of UnimplementedService</summary>
     public abstract class UnimplementedServiceBase
     {
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       public virtual Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
@@ -308,7 +541,7 @@ namespace Grpc.Testing {
 
     }
 
-    // client stub
+    /// <summary>Client for UnimplementedService</summary>
     #pragma warning disable 0618
     public class UnimplementedServiceClient : ClientBase<UnimplementedServiceClient>, IUnimplementedServiceClient
     #pragma warning restore 0618
@@ -328,18 +561,30 @@ namespace Grpc.Testing {
       {
       }
 
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UnimplementedCall(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       public virtual global::Grpc.Testing.Empty UnimplementedCall(global::Grpc.Testing.Empty request, CallOptions options)
       {
         return CallInvoker.BlockingUnaryCall(__Method_UnimplementedCall, null, options, request);
       }
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UnimplementedCallAsync(request, new CallOptions(headers, deadline, cancellationToken));
       }
+      /// <summary>
+      ///  A call that no server should implement
+      /// </summary>
       public virtual AsyncUnaryCall<global::Grpc.Testing.Empty> UnimplementedCallAsync(global::Grpc.Testing.Empty request, CallOptions options)
       {
         return CallInvoker.AsyncUnaryCall(__Method_UnimplementedCall, null, options, request);
@@ -350,13 +595,13 @@ namespace Grpc.Testing {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for UnimplementedService</summary>
     public static UnimplementedServiceClient NewClient(Channel channel)
     {
       return new UnimplementedServiceClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IUnimplementedService serviceImpl)
     #pragma warning restore 0618
@@ -365,7 +610,7 @@ namespace Grpc.Testing {
           .AddMethod(__Method_UnimplementedCall, serviceImpl.UnimplementedCall).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(UnimplementedServiceBase serviceImpl)
     #pragma warning restore 0618
@@ -375,6 +620,9 @@ namespace Grpc.Testing {
     }
 
   }
+  /// <summary>
+  ///  A service used to control reconnect server.
+  /// </summary>
   public static class ReconnectService
   {
     static readonly string __ServiceName = "grpc.testing.ReconnectService";
@@ -397,13 +645,13 @@ namespace Grpc.Testing {
         __Marshaller_Empty,
         __Marshaller_ReconnectInfo);
 
-    // service descriptor
+    /// <summary>Service descriptor</summary>
     public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor
     {
       get { return global::Grpc.Testing.TestReflection.Descriptor.Services[2]; }
     }
 
-    // client interface
+    /// <summary>Client for ReconnectService</summary>
     [System.Obsolete("Client side interfaced will be removed in the next release. Use client class directly.")]
     public interface IReconnectServiceClient
     {
@@ -417,7 +665,7 @@ namespace Grpc.Testing {
       AsyncUnaryCall<global::Grpc.Testing.ReconnectInfo> StopAsync(global::Grpc.Testing.Empty request, CallOptions options);
     }
 
-    // server-side interface
+    /// <summary>Interface of server-side implementations of ReconnectService</summary>
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IReconnectService
     {
@@ -425,7 +673,7 @@ namespace Grpc.Testing {
       Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context);
     }
 
-    // server-side abstract class
+    /// <summary>Base class for server-side implementations of ReconnectService</summary>
     public abstract class ReconnectServiceBase
     {
       public virtual Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context)
@@ -440,7 +688,7 @@ namespace Grpc.Testing {
 
     }
 
-    // client stub
+    /// <summary>Client for ReconnectService</summary>
     #pragma warning disable 0618
     public class ReconnectServiceClient : ClientBase<ReconnectServiceClient>, IReconnectServiceClient
     #pragma warning restore 0618
@@ -498,13 +746,13 @@ namespace Grpc.Testing {
       }
     }
 
-    // creates a new client
+    /// <summary>Creates a new client for ReconnectService</summary>
     public static ReconnectServiceClient NewClient(Channel channel)
     {
       return new ReconnectServiceClient(channel);
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(IReconnectService serviceImpl)
     #pragma warning restore 0618
@@ -514,7 +762,7 @@ namespace Grpc.Testing {
           .AddMethod(__Method_Stop, serviceImpl.Stop).Build();
     }
 
-    // creates service definition that can be registered with a server
+    /// <summary>Creates service definition that can be registered with a server</summary>
     #pragma warning disable 0618
     public static ServerServiceDefinition BindService(ReconnectServiceBase serviceImpl)
     #pragma warning restore 0618
-- 
GitLab


From 0c6070f68d5dbac069fd19e1ddc394c2ea3c4775 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Thu, 28 Apr 2016 11:26:34 -0700
Subject: [PATCH 242/525] Mark stream as cancelled if we exceed the metadata
 size limit. Also take this opportunity to convert the seen_error field to a
 bool.

---
 .../chttp2/transport/chttp2_transport.c       | 31 ++++++++++++++-----
 .../ext/transport/chttp2/transport/internal.h |  6 ++--
 .../ext/transport/chttp2/transport/parsing.c  | 14 ++++++---
 test/core/end2end/tests/large_metadata.c      |  8 ++---
 4 files changed, 40 insertions(+), 19 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index c24950a189..b73ec2a7e9 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -858,7 +858,7 @@ static void perform_stream_op_locked(
         add_closure_barrier(on_complete);
     stream_global->send_initial_metadata = op->send_initial_metadata;
     if (contains_non_ok_status(transport_global, op->send_initial_metadata)) {
-      stream_global->seen_error = 1;
+      stream_global->seen_error = true;
       grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
     }
     if (!stream_global->write_closed) {
@@ -899,7 +899,7 @@ static void perform_stream_op_locked(
         add_closure_barrier(on_complete);
     stream_global->send_trailing_metadata = op->send_trailing_metadata;
     if (contains_non_ok_status(transport_global, op->send_trailing_metadata)) {
-      stream_global->seen_error = 1;
+      stream_global->seen_error = true;
       grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
     }
     if (stream_global->write_closed) {
@@ -1076,6 +1076,16 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
       grpc_chttp2_list_pop_check_read_ops(transport_global, &stream_global)) {
     if (stream_global->recv_initial_metadata_ready != NULL &&
         stream_global->published_initial_metadata) {
+      if (stream_global->seen_error) {
+        while ((bs = grpc_chttp2_incoming_frame_queue_pop(
+                    &stream_global->incoming_frames)) != NULL) {
+          grpc_byte_stream_destroy(exec_ctx, bs);
+        }
+        if (stream_global->exceeded_metadata_size) {
+          cancel_from_api(exec_ctx, transport_global, stream_global,
+                          GRPC_STATUS_RESOURCE_EXHAUSTED);
+        }
+      }
       grpc_chttp2_incoming_metadata_buffer_publish(
           &stream_global->received_initial_metadata,
           stream_global->recv_initial_metadata);
@@ -1105,10 +1115,15 @@ static void check_read_ops(grpc_exec_ctx *exec_ctx,
     }
     if (stream_global->recv_trailing_metadata_finished != NULL &&
         stream_global->read_closed && stream_global->write_closed) {
-      while (stream_global->seen_error &&
-             (bs = grpc_chttp2_incoming_frame_queue_pop(
-                  &stream_global->incoming_frames)) != NULL) {
-        grpc_byte_stream_destroy(exec_ctx, bs);
+      if (stream_global->seen_error) {
+        while ((bs = grpc_chttp2_incoming_frame_queue_pop(
+                    &stream_global->incoming_frames)) != NULL) {
+          grpc_byte_stream_destroy(exec_ctx, bs);
+        }
+        if (stream_global->exceeded_metadata_size) {
+          cancel_from_api(exec_ctx, transport_global, stream_global,
+                          GRPC_STATUS_RESOURCE_EXHAUSTED);
+        }
       }
       if (stream_global->incoming_frames.head == NULL) {
         grpc_chttp2_incoming_metadata_buffer_publish(
@@ -1175,7 +1190,7 @@ static void cancel_from_api(grpc_exec_ctx *exec_ctx,
                             NULL);
   }
   if (status != GRPC_STATUS_OK && !stream_global->seen_error) {
-    stream_global->seen_error = 1;
+    stream_global->seen_error = true;
     grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
   }
   grpc_chttp2_mark_stream_closed(exec_ctx, transport_global, stream_global, 1,
@@ -1187,7 +1202,7 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx,
                              grpc_chttp2_stream_global *stream_global,
                              grpc_status_code status, gpr_slice *slice) {
   if (status != GRPC_STATUS_OK) {
-    stream_global->seen_error = 1;
+    stream_global->seen_error = true;
     grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
   }
   /* stream_global->recv_trailing_metadata_finished gives us a
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index d547a6e9c1..be38ffda1f 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -410,7 +410,8 @@ typedef struct {
   uint8_t in_stream_map;
   /** has this stream seen an error? if 1, then pending incoming frames
       can be thrown away */
-  uint8_t seen_error;
+  bool seen_error;
+  bool exceeded_metadata_size;
 
   uint8_t published_initial_metadata;
   uint8_t published_trailing_metadata;
@@ -457,7 +458,8 @@ struct grpc_chttp2_stream_parsing {
   /** which metadata did we get (on this parse) */
   uint8_t got_metadata_on_parse[2];
   /** should we raise the seen_error flag in transport_global */
-  uint8_t seen_error;
+  bool seen_error;
+  bool exceeded_metadata_size;
   /** window available for peer to send to us */
   int64_t incoming_window;
   /** parsing state for data frames */
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index 0cf4d87f3c..11cbb80ca8 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -167,7 +167,9 @@ void grpc_chttp2_publish_reads(
   while (grpc_chttp2_list_pop_parsing_seen_stream(
       transport_global, transport_parsing, &stream_global, &stream_parsing)) {
     if (stream_parsing->seen_error) {
-      stream_global->seen_error = 1;
+      stream_global->seen_error = true;
+      stream_global->exceeded_metadata_size =
+          stream_parsing->exceeded_metadata_size;
       grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
     }
 
@@ -603,7 +605,7 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
 
   if (md->key == GRPC_MDSTR_GRPC_STATUS && md != GRPC_MDELEM_GRPC_STATUS_0) {
     /* TODO(ctiller): check for a status like " 0" */
-    stream_parsing->seen_error = 1;
+    stream_parsing->seen_error = true;
   }
 
   if (md->key == GRPC_MDSTR_GRPC_TIMEOUT) {
@@ -627,7 +629,8 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
     const size_t new_size = stream_parsing->metadata_buffer[0].size +
                             GRPC_MDELEM_LENGTH(md);
     if (new_size > transport_parsing->max_metadata_size) {
-      stream_parsing->seen_error = 1;
+      stream_parsing->seen_error = true;
+      stream_parsing->exceeded_metadata_size = true;
       GRPC_MDELEM_UNREF(md);
     } else {
       grpc_chttp2_incoming_metadata_buffer_add(
@@ -656,13 +659,14 @@ static void on_trailing_header(void *tp, grpc_mdelem *md) {
 
   if (md->key == GRPC_MDSTR_GRPC_STATUS && md != GRPC_MDELEM_GRPC_STATUS_0) {
     /* TODO(ctiller): check for a status like " 0" */
-    stream_parsing->seen_error = 1;
+    stream_parsing->seen_error = true;
   }
 
   const size_t new_size = stream_parsing->metadata_buffer[1].size +
                           GRPC_MDELEM_LENGTH(md);
   if (new_size > transport_parsing->max_metadata_size) {
-    stream_parsing->seen_error = 1;
+    stream_parsing->seen_error = true;
+    stream_parsing->exceeded_metadata_size = true;
     GRPC_MDELEM_UNREF(md);
   } else {
     grpc_chttp2_incoming_metadata_buffer_add(
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c
index f09b55a2c0..2aa6381e9e 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.c
@@ -199,7 +199,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
   error = grpc_call_start_batch(s, ops, (size_t)(op - ops), tag(102), NULL);
   GPR_ASSERT(GRPC_CALL_OK == error);
 
-  cq_expect_completion(cqv, tag(102), 1);
+  cq_expect_completion(cqv, tag(102), allow_large_metadata);
   cq_verify(cqv);
 
   op = ops;
@@ -222,13 +222,13 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
   cq_expect_completion(cqv, tag(1), 1);
   cq_verify(cqv);
 
-// FIXME: why is this assert passing with allow_large_metadata=false?
-  GPR_ASSERT(status == GRPC_STATUS_OK);
-  GPR_ASSERT(0 == strcmp(details, "xyz"));
+  GPR_ASSERT(status == (allow_large_metadata ? GRPC_STATUS_OK
+                        : GRPC_STATUS_RESOURCE_EXHAUSTED));
   GPR_ASSERT(0 == strcmp(call_details.method, "/foo"));
   GPR_ASSERT(0 == strcmp(call_details.host, "foo.test.google.fr"));
   GPR_ASSERT(was_cancelled == 0);
   if (allow_large_metadata) {
+    GPR_ASSERT(0 == strcmp(details, "xyz"));
     GPR_ASSERT(byte_buffer_eq_string(request_payload_recv, "hello world"));
     GPR_ASSERT(contains_metadata(&request_metadata_recv, "key", meta.value));
   } else {
-- 
GitLab


From 9e3538c57df9855ff2f5c6384a00b740c2bec49a Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Thu, 28 Apr 2016 13:27:19 -0700
Subject: [PATCH 243/525] Load default roots.pem in Ruby via
 grpc_set_ssl_roots_override_callback

---
 src/ruby/ext/grpc/rb_channel_credentials.c | 28 ++++++++++++++++++++++
 src/ruby/lib/grpc.rb                       | 11 ++++++---
 2 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/src/ruby/ext/grpc/rb_channel_credentials.c b/src/ruby/ext/grpc/rb_channel_credentials.c
index 10391bc963..4c01859db7 100644
--- a/src/ruby/ext/grpc/rb_channel_credentials.c
+++ b/src/ruby/ext/grpc/rb_channel_credentials.c
@@ -31,6 +31,8 @@
  *
  */
 
+#include <string.h>
+
 #include <ruby/ruby.h>
 #include "rb_grpc_imports.generated.h"
 #include "rb_channel_credentials.h"
@@ -39,6 +41,7 @@
 
 #include <grpc/grpc.h>
 #include <grpc/grpc_security.h>
+#include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 
 #include "rb_call_credentials.h"
@@ -48,6 +51,8 @@
    grpc_channel_credentials. */
 static VALUE grpc_rb_cChannelCredentials = Qnil;
 
+static char *pem_root_certs = NULL;
+
 /* grpc_rb_channel_credentials wraps a grpc_channel_credentials.  It provides a
  * mark object that is used to hold references to any objects used to create
  * the credentials. */
@@ -236,6 +241,24 @@ static VALUE grpc_rb_channel_credentials_compose(int argc, VALUE *argv,
   return grpc_rb_wrap_channel_credentials(creds, mark);
 }
 
+static grpc_ssl_roots_override_result get_ssl_roots_override(
+    char **pem_root_certs_ptr) {
+  *pem_root_certs_ptr = pem_root_certs;
+  if (pem_root_certs == NULL) {
+    return GRPC_SSL_ROOTS_OVERRIDE_FAIL;
+  } else {
+    return GRPC_SSL_ROOTS_OVERRIDE_OK;
+  }
+}
+
+static VALUE grpc_rb_set_default_roots_pem(VALUE self, VALUE roots) {
+  char *roots_ptr = StringValueCStr(roots);
+  size_t length = strlen(roots_ptr);
+  pem_root_certs = gpr_malloc((length + 1) * sizeof(char));
+  memcpy(pem_root_certs, roots_ptr, length + 1);
+  return Qnil;
+}
+
 void Init_grpc_channel_credentials() {
   grpc_rb_cChannelCredentials =
       rb_define_class_under(grpc_rb_mGrpcCore, "ChannelCredentials", rb_cObject);
@@ -251,6 +274,11 @@ void Init_grpc_channel_credentials() {
                    grpc_rb_channel_credentials_init_copy, 1);
   rb_define_method(grpc_rb_cChannelCredentials, "compose",
                    grpc_rb_channel_credentials_compose, -1);
+  rb_define_module_function(grpc_rb_cChannelCredentials,
+                            "set_default_roots_pem",
+                            grpc_rb_set_default_roots_pem, 1);
+
+  grpc_set_ssl_roots_override_callback(get_ssl_roots_override);
 
   id_pem_cert_chain = rb_intern("__pem_cert_chain");
   id_pem_private_key = rb_intern("__pem_private_key");
diff --git a/src/ruby/lib/grpc.rb b/src/ruby/lib/grpc.rb
index a56c49ff59..79fa705b1c 100644
--- a/src/ruby/lib/grpc.rb
+++ b/src/ruby/lib/grpc.rb
@@ -28,9 +28,6 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ssl_roots_path = File.expand_path('../../../../etc/roots.pem', __FILE__)
-unless ENV['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH']
-  ENV['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH'] = ssl_roots_path
-end
 
 require_relative 'grpc/errors'
 require_relative 'grpc/grpc'
@@ -42,3 +39,11 @@ require_relative 'grpc/generic/active_call'
 require_relative 'grpc/generic/client_stub'
 require_relative 'grpc/generic/service'
 require_relative 'grpc/generic/rpc_server'
+
+begin
+  file = File.open(ssl_roots_path)
+  roots = file.read
+  GRPC::Core::ChannelCredentials.set_default_roots_pem roots
+ensure
+  file.close
+end
-- 
GitLab


From 9003768b0af8dd3f51a534cb50baf7081f3caeb0 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Thu, 28 Apr 2016 15:40:45 -0700
Subject: [PATCH 244/525] Fixed unused parameter error

---
 src/ruby/ext/grpc/rb_channel_credentials.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/ruby/ext/grpc/rb_channel_credentials.c b/src/ruby/ext/grpc/rb_channel_credentials.c
index 4c01859db7..09bd3093a9 100644
--- a/src/ruby/ext/grpc/rb_channel_credentials.c
+++ b/src/ruby/ext/grpc/rb_channel_credentials.c
@@ -254,6 +254,7 @@ static grpc_ssl_roots_override_result get_ssl_roots_override(
 static VALUE grpc_rb_set_default_roots_pem(VALUE self, VALUE roots) {
   char *roots_ptr = StringValueCStr(roots);
   size_t length = strlen(roots_ptr);
+  (void)self;
   pem_root_certs = gpr_malloc((length + 1) * sizeof(char));
   memcpy(pem_root_certs, roots_ptr, length + 1);
   return Qnil;
-- 
GitLab


From d0b3ae40f70d89a74a70cc6fc2fb0935bef7a99b Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 28 Apr 2016 16:20:03 -0700
Subject: [PATCH 245/525] Fix double delete

---
 test/core/util/passthru_endpoint.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index 168ae59e91..159155886d 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -83,11 +83,15 @@ static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
   if (m->parent->shutdown) {
     ok = false;
   } else if (m->on_read != NULL) {
-    gpr_slice_buffer_addn(m->on_read_out, slices->slices, slices->count);
+    for (size_t i = 0; i < slices->count; i++) {
+      gpr_slice_buffer_add(&m->read_buffer, gpr_slice_ref(slices->slices[i]));
+    }
     grpc_exec_ctx_enqueue(exec_ctx, m->on_read, true, NULL);
     m->on_read = NULL;
   } else {
-    gpr_slice_buffer_addn(&m->read_buffer, slices->slices, slices->count);
+    for (size_t i = 0; i < slices->count; i++) {
+      gpr_slice_buffer_add(&m->read_buffer, gpr_slice_ref(slices->slices[i]));
+    }
   }
   gpr_mu_unlock(&m->parent->mu);
   grpc_exec_ctx_enqueue(exec_ctx, cb, ok, NULL);
-- 
GitLab


From 904e0a50866f6700dba74f31e1734be448d481f1 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 28 Apr 2016 16:38:01 -0700
Subject: [PATCH 246/525] Fix typo

---
 test/core/util/passthru_endpoint.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c
index 159155886d..ae955b1f68 100644
--- a/test/core/util/passthru_endpoint.c
+++ b/test/core/util/passthru_endpoint.c
@@ -84,7 +84,7 @@ static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
     ok = false;
   } else if (m->on_read != NULL) {
     for (size_t i = 0; i < slices->count; i++) {
-      gpr_slice_buffer_add(&m->read_buffer, gpr_slice_ref(slices->slices[i]));
+      gpr_slice_buffer_add(m->on_read_out, gpr_slice_ref(slices->slices[i]));
     }
     grpc_exec_ctx_enqueue(exec_ctx, m->on_read, true, NULL);
     m->on_read = NULL;
-- 
GitLab


From 0482c1046b837be17c3a056af6569d84b8f52c23 Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Tue, 19 Apr 2016 12:08:34 -0700
Subject: [PATCH 247/525] Python QPS Worker/initial scenarios

---
 src/python/grpcio/tests/qps/__init__.py       |  28 +++
 .../grpcio/tests/qps/benchmark_client.py      | 186 ++++++++++++++++++
 .../grpcio/tests/qps/benchmark_server.py      |  58 ++++++
 src/python/grpcio/tests/qps/client_runner.py  | 104 ++++++++++
 src/python/grpcio/tests/qps/histogram.py      |  85 ++++++++
 src/python/grpcio/tests/qps/qps_worker.py     |  60 ++++++
 src/python/grpcio/tests/qps/worker_server.py  | 184 +++++++++++++++++
 tools/gce/linux_performance_worker_init.sh    |   2 +
 tools/jenkins/run_performance.sh              |   2 +-
 .../performance/run_worker_python.sh          |  35 ++++
 .../run_tests/performance/scenario_config.py  | 123 ++++++++++++
 tools/run_tests/run_performance_tests.py      |   6 +-
 12 files changed, 869 insertions(+), 4 deletions(-)
 create mode 100644 src/python/grpcio/tests/qps/__init__.py
 create mode 100644 src/python/grpcio/tests/qps/benchmark_client.py
 create mode 100644 src/python/grpcio/tests/qps/benchmark_server.py
 create mode 100644 src/python/grpcio/tests/qps/client_runner.py
 create mode 100644 src/python/grpcio/tests/qps/histogram.py
 create mode 100644 src/python/grpcio/tests/qps/qps_worker.py
 create mode 100644 src/python/grpcio/tests/qps/worker_server.py
 create mode 100755 tools/run_tests/performance/run_worker_python.sh

diff --git a/src/python/grpcio/tests/qps/__init__.py b/src/python/grpcio/tests/qps/__init__.py
new file mode 100644
index 0000000000..100a624dc9
--- /dev/null
+++ b/src/python/grpcio/tests/qps/__init__.py
@@ -0,0 +1,28 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/python/grpcio/tests/qps/benchmark_client.py b/src/python/grpcio/tests/qps/benchmark_client.py
new file mode 100644
index 0000000000..eed0b0c6da
--- /dev/null
+++ b/src/python/grpcio/tests/qps/benchmark_client.py
@@ -0,0 +1,186 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Defines test client behaviors (UNARY/STREAMING) (SYNC/ASYNC)."""
+
+import abc
+import time
+try:
+  import Queue as queue  # Python 2.x
+except ImportError:
+  import queue  # Python 3
+
+from concurrent import futures
+
+from grpc.beta import implementations
+from src.proto.grpc.testing import messages_pb2
+from src.proto.grpc.testing import services_pb2
+from tests.unit import resources
+from tests.unit.beta import test_utilities
+
+_TIMEOUT = 60 * 60 * 24
+
+
+class BenchmarkClient:
+  """Benchmark client interface that exposes a non-blocking send_request()."""
+
+  __metaclass__ = abc.ABCMeta
+
+  def __init__(self, server, config, hist):
+    # Create the stub
+    host, port = server.split(':')
+    port = int(port)
+    if config.HasField('security_params'):
+      creds = implementations.ssl_channel_credentials(
+          resources.test_root_certificates())
+      channel = test_utilities.not_really_secure_channel(
+          host, port, creds, config.security_params.server_host_override)
+    else:
+      channel = implementations.insecure_channel(host, port)
+
+    if config.payload_config.WhichOneof('payload') == 'simple_params':
+      self._generic = False
+      self._stub = services_pb2.beta_create_BenchmarkService_stub(channel)
+      payload = messages_pb2.Payload(
+          body='\0' * config.payload_config.simple_params.req_size)
+      self._request = messages_pb2.SimpleRequest(
+          payload=payload,
+          response_size=config.payload_config.simple_params.resp_size)
+    else:
+      self._generic = True
+      self._stub = implementations.generic_stub(channel)
+      self._request = '\0' * config.payload_config.bytebuf_params.req_size
+
+    self._hist = hist
+    self._response_callbacks = []
+
+  def add_response_callback(self, callback):
+    self._response_callbacks.append(callback)
+
+  @abc.abstractmethod
+  def send_request(self):
+    """Non-blocking wrapper for a client's request operation."""
+    raise NotImplementedError()
+
+  def start(self):
+    pass
+
+  def stop(self):
+    pass
+
+  def _handle_response(self, query_time):
+    self._hist.add(query_time * 1e9)  # Report times in nanoseconds
+    for callback in self._response_callbacks:
+      callback(query_time)
+
+
+class UnarySyncBenchmarkClient(BenchmarkClient):
+
+  def __init__(self, server, config, hist):
+    super(UnarySyncBenchmarkClient, self).__init__(server, config, hist)
+    self._pool = futures.ThreadPoolExecutor(
+        max_workers=config.outstanding_rpcs_per_channel)
+
+  def send_request(self):
+    # Send requests in seperate threads to support multiple outstanding rpcs
+    # (See src/proto/grpc/testing/control.proto)
+    self._pool.submit(self._dispatch_request)
+
+  def stop(self):
+    self._pool.shutdown(wait=True)
+    self._stub = None
+
+  def _dispatch_request(self):
+    start_time = time.time()
+    self._stub.UnaryCall(self._request, _TIMEOUT)
+    end_time = time.time()
+    self._handle_response(end_time - start_time)
+
+
+class UnaryAsyncBenchmarkClient(BenchmarkClient):
+
+  def send_request(self):
+    # Use the Future callback api to support multiple outstanding rpcs
+    start_time = time.time()
+    response_future = self._stub.UnaryCall.future(self._request, _TIMEOUT)
+    response_future.add_done_callback(
+        lambda resp: self._response_received(start_time, resp))
+
+  def _response_received(self, start_time, resp):
+    resp.result()
+    end_time = time.time()
+    self._handle_response(end_time - start_time)
+
+  def stop(self):
+    self._stub = None
+
+
+class StreamingAsyncBenchmarkClient(BenchmarkClient):
+
+  def __init__(self, server, config, hist):
+    super(StreamingAsyncBenchmarkClient, self).__init__(server, config, hist)
+    self._is_streaming = False
+    self._pool = futures.ThreadPoolExecutor(max_workers=1)
+    # Use a thread-safe queue to put requests on the stream
+    self._request_queue = queue.Queue()
+    self._send_time_queue = queue.Queue()
+
+  def send_request(self):
+    self._send_time_queue.put(time.time())
+    self._request_queue.put(self._request)
+
+  def start(self):
+    self._is_streaming = True
+    self._pool.submit(self._request_stream)
+
+  def stop(self):
+    self._is_streaming = False
+    self._pool.shutdown(wait=True)
+    self._stub = None
+
+  def _request_stream(self):
+    self._is_streaming = True
+    if self._generic:
+      response_stream = self._stub.inline_stream_stream(
+          'grpc.testing.BenchmarkService', 'StreamingCall',
+          self._request_generator(), _TIMEOUT)
+    else:
+      response_stream = self._stub.StreamingCall(self._request_generator(),
+                                                 _TIMEOUT)
+    for _ in response_stream:
+      end_time = time.time()
+      self._handle_response(end_time - self._send_time_queue.get_nowait())
+
+  def _request_generator(self):
+    while self._is_streaming:
+      try:
+        request = self._request_queue.get(block=True, timeout=1.0)
+        yield request
+      except queue.Empty:
+        pass
diff --git a/src/python/grpcio/tests/qps/benchmark_server.py b/src/python/grpcio/tests/qps/benchmark_server.py
new file mode 100644
index 0000000000..8cbf480d58
--- /dev/null
+++ b/src/python/grpcio/tests/qps/benchmark_server.py
@@ -0,0 +1,58 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from src.proto.grpc.testing import messages_pb2
+from src.proto.grpc.testing import services_pb2
+
+
+class BenchmarkServer(services_pb2.BetaBenchmarkServiceServicer):
+  """Synchronous Server implementation for the Benchmark service."""
+
+  def UnaryCall(self, request, context):
+    payload = messages_pb2.Payload(body='\0' * request.response_size)
+    return messages_pb2.SimpleResponse(payload=payload)
+
+  def StreamingCall(self, request_iterator, context):
+    for request in request_iterator:
+      payload = messages_pb2.Payload(body='\0' * request.response_size)
+      yield messages_pb2.SimpleResponse(payload=payload)
+
+
+class GenericBenchmarkServer(services_pb2.BetaBenchmarkServiceServicer):
+  """Generic Server implementation for the Benchmark service."""
+
+  def __init__(self, resp_size):
+    self._response = '\0' * resp_size
+
+  def UnaryCall(self, request, context):
+    return self._response
+
+  def StreamingCall(self, request_iterator, context):
+    for request in request_iterator:
+      yield self._response
diff --git a/src/python/grpcio/tests/qps/client_runner.py b/src/python/grpcio/tests/qps/client_runner.py
new file mode 100644
index 0000000000..a36c30ccc0
--- /dev/null
+++ b/src/python/grpcio/tests/qps/client_runner.py
@@ -0,0 +1,104 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Defines behavior for WHEN clients send requests.
+
+Each client exposes a non-blocking send_request() method that the
+ClientRunner invokes either periodically or in response to some event.
+"""
+
+import abc
+import thread
+import time
+
+
+class ClientRunner:
+  """Abstract interface for sending requests from clients."""
+
+  __metaclass__ = abc.ABCMeta
+
+  def __init__(self, client):
+    self._client = client
+
+  @abc.abstractmethod
+  def start(self):
+    raise NotImplementedError()
+
+  @abc.abstractmethod
+  def stop(self):
+    raise NotImplementedError()
+
+
+class OpenLoopClientRunner(ClientRunner):
+
+  def __init__(self, client, interval_generator):
+    super(OpenLoopClientRunner, self).__init__(client)
+    self._is_running = False
+    self._interval_generator = interval_generator
+
+  def start(self):
+    self._is_running = True
+    self._client.start()
+    thread.start_new_thread(self._dispatch_requests, ())
+
+  def stop(self):
+    self._is_running = False
+    self._client.stop()
+    self._client = None
+
+  def _dispatch_requests(self):
+    while self._is_running:
+      self._client.send_request()
+      time.sleep(next(self._interval_generator))
+
+
+class ClosedLoopClientRunner(ClientRunner):
+
+  def __init__(self, client, request_count):
+    super(ClosedLoopClientRunner, self).__init__(client)
+    self._is_running = False
+    self._request_count = request_count
+    # Send a new request on each response for closed loop
+    self._client.add_response_callback(self._send_request)
+
+  def start(self):
+    self._is_running = True
+    for _ in xrange(self._request_count):
+      self._client.send_request()
+    self._client.start()
+
+  def stop(self):
+    self._is_running = False
+    self._client.stop()
+    self._client = None
+
+  def _send_request(self, response_time):
+    if self._is_running:
+      self._client.send_request()
+
diff --git a/src/python/grpcio/tests/qps/histogram.py b/src/python/grpcio/tests/qps/histogram.py
new file mode 100644
index 0000000000..9a7b5eb2ba
--- /dev/null
+++ b/src/python/grpcio/tests/qps/histogram.py
@@ -0,0 +1,85 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import math
+import threading
+
+from src.proto.grpc.testing import stats_pb2
+
+
+class Histogram(object):
+  """Histogram class used for recording performance testing data.
+
+  This class is thread safe.
+  """
+
+  def __init__(self, resolution, max_possible):
+    self._lock = threading.Lock()
+    self._resolution = resolution
+    self._max_possible = max_possible
+    self._sum = 0
+    self._sum_of_squares = 0
+    self.multiplier = 1.0 + self._resolution
+    self._count = 0
+    self._min = self._max_possible
+    self._max = 0
+    self._buckets = [0] * (self._bucket_for(self._max_possible) + 1)
+
+  def reset(self):
+    with self._lock:
+      self._sum = 0
+      self._sum_of_squares = 0
+      self._count = 0
+      self._min = self._max_possible
+      self._max = 0
+      self._buckets = [0] * (self._bucket_for(self._max_possible) + 1)
+
+  def add(self, val):
+    with self._lock:
+      self._sum += val
+      self._sum_of_squares += val * val
+      self._count += 1
+      self._min = min(self._min, val)
+      self._max = max(self._max, val)
+      self._buckets[self._bucket_for(val)] += 1
+
+  def get_data(self):
+    with self._lock:
+      data = stats_pb2.HistogramData()
+      data.bucket.extend(self._buckets)
+      data.min_seen = self._min
+      data.max_seen = self._max
+      data.sum = self._sum
+      data.sum_of_squares = self._sum_of_squares
+      data.count = self._count
+      return data
+
+  def _bucket_for(self, val):
+    val = min(val, self._max_possible)
+    return int(math.log(val, self.multiplier))
diff --git a/src/python/grpcio/tests/qps/qps_worker.py b/src/python/grpcio/tests/qps/qps_worker.py
new file mode 100644
index 0000000000..3dda718638
--- /dev/null
+++ b/src/python/grpcio/tests/qps/qps_worker.py
@@ -0,0 +1,60 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""The entry point for the qps worker."""
+
+import argparse
+import time
+
+from src.proto.grpc.testing import services_pb2
+
+from tests.qps import worker_server
+
+
+def run_worker_server(port):
+  servicer = worker_server.WorkerServer()
+  server = services_pb2.beta_create_WorkerService_server(servicer)
+  server.add_insecure_port('[::]:{}'.format(port))
+  server.start()
+  servicer.wait_for_quit()
+  # Drain outstanding requests for clean exit
+  time.sleep(2)
+  server.stop(0)
+
+
+if __name__ == '__main__':
+  parser = argparse.ArgumentParser(
+      description='gRPC Python performance testing worker')
+  parser.add_argument('--driver_port',
+                      type=int,
+                      dest='port',
+                      help='The port the worker should listen on')
+  args = parser.parse_args()
+
+  run_worker_server(args.port)
diff --git a/src/python/grpcio/tests/qps/worker_server.py b/src/python/grpcio/tests/qps/worker_server.py
new file mode 100644
index 0000000000..0b3acc14e7
--- /dev/null
+++ b/src/python/grpcio/tests/qps/worker_server.py
@@ -0,0 +1,184 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import multiprocessing
+import random
+import threading
+import time
+
+from grpc.beta import implementations
+from grpc.framework.interfaces.face import utilities
+from src.proto.grpc.testing import control_pb2
+from src.proto.grpc.testing import services_pb2
+from src.proto.grpc.testing import stats_pb2
+
+from tests.qps import benchmark_client
+from tests.qps import benchmark_server
+from tests.qps import client_runner
+from tests.qps import histogram
+from tests.unit import resources
+
+
+class WorkerServer(services_pb2.BetaWorkerServiceServicer):
+  """Python Worker Server implementation."""
+
+  def __init__(self):
+    self._quit_event = threading.Event()
+
+  def RunServer(self, request_iterator, context):
+    config = next(request_iterator).setup
+    server, port = self._create_server(config)
+    cores = multiprocessing.cpu_count()
+    server.start()
+    start_time = time.time()
+    yield self._get_server_status(start_time, start_time, port, cores)
+
+    for request in request_iterator:
+      end_time = time.time()
+      status = self._get_server_status(start_time, end_time, port, cores)
+      if request.mark.reset:
+        start_time = end_time
+      yield status
+    server.stop(0)
+
+  def _get_server_status(self, start_time, end_time, port, cores):
+    end_time = time.time()
+    elapsed_time = end_time - start_time
+    stats = stats_pb2.ServerStats(time_elapsed=elapsed_time,
+                                  time_user=elapsed_time,
+                                  time_system=elapsed_time)
+    return control_pb2.ServerStatus(stats=stats, port=port, cores=cores)
+
+  def _create_server(self, config):
+    if config.server_type == control_pb2.SYNC_SERVER:
+      servicer = benchmark_server.BenchmarkServer()
+      server = services_pb2.beta_create_BenchmarkService_server(servicer)
+    elif config.server_type == control_pb2.ASYNC_GENERIC_SERVER:
+      resp_size = config.payload_config.bytebuf_params.resp_size
+      servicer = benchmark_server.GenericBenchmarkServer(resp_size)
+      method_implementations = {
+          ('grpc.testing.BenchmarkService', 'StreamingCall'):
+          utilities.stream_stream_inline(servicer.StreamingCall),
+          ('grpc.testing.BenchmarkService', 'UnaryCall'):
+          utilities.unary_unary_inline(servicer.UnaryCall),
+      }
+      server = implementations.server(method_implementations)
+    else:
+      raise Exception('Unsupported server type {}'.format(config.server_type))
+
+    if config.HasField('security_params'):  # Use SSL
+      server_creds = implementations.ssl_server_credentials([(
+          resources.private_key(), resources.certificate_chain())])
+      port = server.add_secure_port('[::]:{}'.format(config.port), server_creds)
+    else:
+      port = server.add_insecure_port('[::]:{}'.format(config.port))
+
+    return (server, port)
+
+  def RunClient(self, request_iterator, context):
+    config = next(request_iterator).setup
+    client_runners = []
+    qps_data = histogram.Histogram(config.histogram_params.resolution,
+                                   config.histogram_params.max_possible)
+    start_time = time.time()
+
+    # Create a client for each channel
+    for i in xrange(config.client_channels):
+      server = config.server_targets[i % len(config.server_targets)]
+      runner = self._create_client_runner(server, config, qps_data)
+      client_runners.append(runner)
+      runner.start()
+
+    end_time = time.time()
+    yield self._get_client_status(start_time, end_time, qps_data)
+
+    # Respond to stat requests
+    for request in request_iterator:
+      end_time = time.time()
+      status = self._get_client_status(start_time, end_time, qps_data)
+      if request.mark.reset:
+        qps_data.reset()
+        start_time = time.time()
+      yield status
+
+    # Cleanup the clients
+    for runner in client_runners:
+      runner.stop()
+
+  def _get_client_status(self, start_time, end_time, qps_data):
+    latencies = qps_data.get_data()
+    end_time = time.time()
+    elapsed_time = end_time - start_time
+    stats = stats_pb2.ClientStats(latencies=latencies,
+                                  time_elapsed=elapsed_time,
+                                  time_user=elapsed_time,
+                                  time_system=elapsed_time)
+    return control_pb2.ClientStatus(stats=stats)
+
+  def _create_client_runner(self, server, config, qps_data):
+    if config.client_type == control_pb2.SYNC_CLIENT:
+      if config.rpc_type == control_pb2.UNARY:
+        client = benchmark_client.UnarySyncBenchmarkClient(
+            server, config, qps_data)
+      else:
+        raise Exception('STREAMING SYNC client not supported')
+    elif config.client_type == control_pb2.ASYNC_CLIENT:
+      if config.rpc_type == control_pb2.UNARY:
+        client = benchmark_client.UnaryAsyncBenchmarkClient(
+            server, config, qps_data)
+      elif config.rpc_type == control_pb2.STREAMING:
+        client = benchmark_client.StreamingAsyncBenchmarkClient(
+            server, config, qps_data)
+    else:
+      raise Exception('Unsupported client type {}'.format(config.client_type))
+
+    # In multi-channel tests, we split the load across all channels
+    load_factor = float(config.client_channels)
+    if config.load_params.WhichOneof('load') == 'closed_loop':
+      runner = client_runner.ClosedLoopClientRunner(
+          client, config.outstanding_rpcs_per_channel)
+    else:  # Open loop Poisson
+      alpha = config.load_params.poisson.offered_load / load_factor
+      def poisson():
+        while True:
+          yield random.expovariate(alpha)
+
+      runner = client_runner.OpenLoopClientRunner(client, poisson())
+
+    return runner
+
+  def CoreCount(self, request, context):
+    return control_pb2.CoreResponse(cores=multiprocessing.cpu_count())
+
+  def QuitWorker(self, request, context):
+    self._quit_event.set()
+    return control_pb2.Void()
+
+  def wait_for_quit(self):
+    self._quit_event.wait()
diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh
index 478e04ef37..25ac3bcede 100755
--- a/tools/gce/linux_performance_worker_init.sh
+++ b/tools/gce/linux_performance_worker_init.sh
@@ -83,11 +83,13 @@ sudo apt-get install -y libgflags-dev libgtest-dev libc++-dev clang
 # Python dependencies
 sudo pip install tabulate
 sudo pip install google-api-python-client
+sudo pip install tox
 
 curl -O https://bootstrap.pypa.io/get-pip.py
 sudo pypy get-pip.py
 sudo pypy -m pip install tabulate
 sudo pip install google-api-python-client
+sudo pip install tox
 
 # Node dependencies (nvm has to be installed under user jenkins)
 touch .profile
diff --git a/tools/jenkins/run_performance.sh b/tools/jenkins/run_performance.sh
index 903a144215..13a332751b 100755
--- a/tools/jenkins/run_performance.sh
+++ b/tools/jenkins/run_performance.sh
@@ -34,4 +34,4 @@ set -ex
 # Enter the gRPC repo root
 cd $(dirname $0)/../..
 
-tools/run_tests/run_performance_tests.py -l c++ node ruby csharp
+tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python
diff --git a/tools/run_tests/performance/run_worker_python.sh b/tools/run_tests/performance/run_worker_python.sh
new file mode 100755
index 0000000000..0da8deda58
--- /dev/null
+++ b/tools/run_tests/performance/run_worker_python.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+cd $(dirname $0)/../../..
+
+PYTHONPATH=src/python/grpcio:src/python/gens .tox/py27/bin/python src/python/grpcio/tests/qps/qps_worker.py $@
diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 55657f8d8a..ddbe237569 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -456,6 +456,128 @@ class NodeLanguage:
   def __str__(self):
     return 'node'
 
+class PythonLanguage:
+
+  def __init__(self):
+    self.safename = 'python'
+
+  def worker_cmdline(self):
+    return ['tools/run_tests/performance/run_worker_python.sh']
+
+  def worker_port_offset(self):
+    return 500
+
+  def scenarios(self):
+    yield {
+        'name': 'python_to_cpp_protobuf_streaming_ping_pong',
+        'num_servers': 1,
+        'num_clients': 1,
+        'client_config': {
+          'client_type': 'ASYNC_CLIENT',
+          'security_params': SECURE_SECARGS,
+          'outstanding_rpcs_per_channel': 1,
+          'client_channels': 1,
+          'async_client_threads': 1,
+          'rpc_type': 'STREAMING',
+          'load_params': {
+            'closed_loop': {}
+          },
+          'payload_config': EMPTY_PROTO_PAYLOAD,
+          'histogram_params': HISTOGRAM_PARAMS,
+        },
+        'server_config': {
+          'server_type': 'SYNC_SERVER',
+          'security_params': SECURE_SECARGS,
+          'core_limit': 0,
+          'async_server_threads': 1,
+        },
+        'warmup_seconds': WARMUP_SECONDS,
+        'benchmark_seconds': BENCHMARK_SECONDS,
+        'SERVER_LANGUAGE': 'c++' 
+    }
+    yield {
+        'name': 'python_protobuf_sync_unary_ping_pong',
+        'num_servers': 1,
+        'num_clients': 1,
+        'client_config': {
+          'client_type': 'SYNC_CLIENT',
+          'security_params': SECURE_SECARGS,
+          'outstanding_rpcs_per_channel': 1,
+          'client_channels': 1,
+          'async_client_threads': 1,
+          'rpc_type': 'UNARY',
+          'load_params': {
+            'closed_loop': {}
+          },
+          'payload_config': EMPTY_PROTO_PAYLOAD,
+          'histogram_params': HISTOGRAM_PARAMS,
+        },
+        'server_config': {
+          'server_type': 'SYNC_SERVER',
+          'security_params': SECURE_SECARGS,
+          'core_limit': 0,
+          'async_server_threads': 1,
+        },
+        'warmup_seconds': WARMUP_SECONDS,
+        'benchmark_seconds': BENCHMARK_SECONDS,
+    }
+    yield {
+        'name': 'python_protobuf_async_unary_ping_pong',
+        'num_servers': 1,
+        'num_clients': 1,
+        'client_config': {
+          'client_type': 'ASYNC_CLIENT',
+          'security_params': SECURE_SECARGS,
+          'outstanding_rpcs_per_channel': 1,
+          'client_channels': 1,
+          'async_client_threads': 1,
+            'rpc_type': 'UNARY',
+            'load_params': {
+              'closed_loop': {}
+            },
+            'payload_config': EMPTY_PROTO_PAYLOAD,
+            'histogram_params': HISTOGRAM_PARAMS,
+          },
+          'server_config': {
+            'server_type': 'SYNC_SERVER',
+            'security_params': SECURE_SECARGS,
+            'core_limit': 0,
+            'async_server_threads': 1,
+          },
+          'warmup_seconds': WARMUP_SECONDS,
+          'benchmark_seconds': BENCHMARK_SECONDS,
+    }
+    yield {
+        'name': 'python_to_cpp_single_channel_throughput',
+        'num_servers': 1,
+        'num_clients': 1,
+        'client_config': {
+          'client_type': 'ASYNC_CLIENT',
+          'security_params': SECURE_SECARGS,
+          'outstanding_rpcs_per_channel': 1,
+          'client_channels': 1,
+          'async_client_threads': 1,
+          'rpc_type': 'STREAMING',
+          'load_params': {
+            'closed_loop': {}
+          },
+          'payload_config': BIG_GENERIC_PAYLOAD,
+          'histogram_params': HISTOGRAM_PARAMS,
+        },
+        'server_config': {
+          'server_type': 'ASYNC_GENERIC_SERVER',
+          'security_params': SECURE_SECARGS,
+          'core_limit': SINGLE_MACHINE_CORES/2,
+          'async_server_threads': 1,
+          'payload_config': BIG_GENERIC_PAYLOAD,
+        },
+        'warmup_seconds': WARMUP_SECONDS,
+        'benchmark_seconds': BENCHMARK_SECONDS,
+        'SERVER_LANGUAGE': 'c++'
+    }
+      
+  def __str__(self):
+    return 'python'
 
 class RubyLanguage:
 
@@ -562,4 +684,5 @@ LANGUAGES = {
     'node' : NodeLanguage(),
     'ruby' : RubyLanguage(),
     'java' : JavaLanguage(),
+    'python' : PythonLanguage(),
 }
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index ada341abf5..485265311e 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -238,6 +238,9 @@ def start_qpsworkers(languages, worker_hosts):
 def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
                      bq_result_table=None):
   """Create jobspecs for scenarios to run."""
+  all_workers = [worker
+                 for workers in workers_by_lang.values()
+                 for worker in workers]
   scenarios = []
   for language in languages:
     for scenario_json in language.scenarios():
@@ -263,9 +266,6 @@ def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
         scenarios.append(scenario)
 
   # the very last scenario requests shutting down the workers.
-  all_workers = [worker
-                 for workers in workers_by_lang.values()
-                 for worker in workers]
   scenarios.append(create_quit_jobspec(all_workers, remote_host=remote_host))
   return scenarios
 
-- 
GitLab


From 5c123fd22b06ddf16d3abea3983d3c998d758bfe Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 28 Apr 2016 20:48:24 -0700
Subject: [PATCH 248/525] Add a shard channel arg to client channel
 construction

C core automatically shares subchannels between channels. Therefore our
multiple channel performance tests were really testing single channel
performance.
---
 test/cpp/qps/client.h | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/test/cpp/qps/client.h b/test/cpp/qps/client.h
index 5a9027a4a2..63fc3156e5 100644
--- a/test/cpp/qps/client.h
+++ b/test/cpp/qps/client.h
@@ -40,6 +40,7 @@
 
 #include <grpc++/support/byte_buffer.h>
 #include <grpc++/support/slice.h>
+#include <grpc++/support/channel_arguments.h>
 #include <grpc/support/log.h>
 #include <grpc/support/time.h>
 
@@ -280,7 +281,7 @@ class ClientImpl : public Client {
         create_stub_(create_stub) {
     for (int i = 0; i < config.client_channels(); i++) {
       channels_[i].init(config.server_targets(i % config.server_targets_size()),
-                        config, create_stub_);
+                        config, create_stub_, i);
     }
 
     ClientRequestCreator<RequestType> create_req(&request_,
@@ -303,14 +304,16 @@ class ClientImpl : public Client {
     }
     void init(const grpc::string& target, const ClientConfig& config,
               std::function<std::unique_ptr<StubType>(std::shared_ptr<Channel>)>
-                  create_stub) {
+                  create_stub, int shard) {
       // We have to use a 2-phase init like this with a default
       // constructor followed by an initializer function to make
       // old compilers happy with using this in std::vector
+      ChannelArguments args;
+      args.SetInt("shard", shard);
       channel_ = CreateTestChannel(
           target, config.security_params().server_host_override(),
           config.has_security_params(),
-          !config.security_params().use_test_ca());
+          !config.security_params().use_test_ca(), std::shared_ptr<CallCredentials>(), args);
       stub_ = create_stub(channel_);
     }
     Channel* get_channel() { return channel_.get(); }
-- 
GitLab


From 97244d5810e2b0c2b5733094d46d13a061a94424 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 29 Apr 2016 08:05:57 -0700
Subject: [PATCH 249/525] clang-format, make code more self-documenting

---
 test/cpp/qps/client.h | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/test/cpp/qps/client.h b/test/cpp/qps/client.h
index 63fc3156e5..175529f01b 100644
--- a/test/cpp/qps/client.h
+++ b/test/cpp/qps/client.h
@@ -39,8 +39,8 @@
 #include <vector>
 
 #include <grpc++/support/byte_buffer.h>
-#include <grpc++/support/slice.h>
 #include <grpc++/support/channel_arguments.h>
+#include <grpc++/support/slice.h>
 #include <grpc/support/log.h>
 #include <grpc/support/time.h>
 
@@ -304,16 +304,17 @@ class ClientImpl : public Client {
     }
     void init(const grpc::string& target, const ClientConfig& config,
               std::function<std::unique_ptr<StubType>(std::shared_ptr<Channel>)>
-                  create_stub, int shard) {
+                  create_stub,
+              int shard) {
       // We have to use a 2-phase init like this with a default
       // constructor followed by an initializer function to make
       // old compilers happy with using this in std::vector
       ChannelArguments args;
-      args.SetInt("shard", shard);
+      args.SetInt("shard_to_ensure_no_subchannel_merges", shard);
       channel_ = CreateTestChannel(
           target, config.security_params().server_host_override(),
-          config.has_security_params(),
-          !config.security_params().use_test_ca(), std::shared_ptr<CallCredentials>(), args);
+          config.has_security_params(), !config.security_params().use_test_ca(),
+          std::shared_ptr<CallCredentials>(), args);
       stub_ = create_stub(channel_);
     }
     Channel* get_channel() { return channel_.get(); }
-- 
GitLab


From 40f11aa5dc706892d1a5b848ac9f9d85a0cf12cd Mon Sep 17 00:00:00 2001
From: Paul Querna <pquerna@apache.org>
Date: Thu, 3 Mar 2016 23:09:06 -0800
Subject: [PATCH 250/525] Objective-C: Add ChannelCredentials to gRPC Call.

GRPCHost now has a property channelCreds which is used when creating a GRPCChannel.
---
 .../GRPCClient/GRPCCall+ChannelCredentials.h  | 56 +++++++++++
 .../GRPCClient/GRPCCall+ChannelCredentials.m  | 66 +++++++++++++
 src/objective-c/GRPCClient/GRPCCall+Tests.m   | 12 ++-
 .../GRPCClient/private/GRPCChannel.h          | 12 ---
 .../GRPCClient/private/GRPCChannel.m          | 52 -----------
 src/objective-c/GRPCClient/private/GRPCHost.h |  7 +-
 src/objective-c/GRPCClient/private/GRPCHost.m | 92 +++++++++++++++++--
 7 files changed, 224 insertions(+), 73 deletions(-)
 create mode 100644 src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h
 create mode 100644 src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m

diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h
new file mode 100644
index 0000000000..343dd48a14
--- /dev/null
+++ b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.h
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import "GRPCCall.h"
+
+/** Helpers for setting TLS Trusted Roots, Client Certificates, and Private Key */
+@interface GRPCCall (ChannelCredentials)
+
+/**
+ * Use the provided @c pemRootCert as the set of trusted root Certificate Authorities for @c host.
+ */
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCert
+                   forHost:(nonnull NSString *)host
+                     error:(NSError **)errorPtr;
+/**
+ * Configures @c host with TLS/SSL Client Credentials and optionally trusted root Certificate
+ * Authorities. If @c pemRootCerts is nil, the default CA Certificates bundled with gRPC will be
+ * used.
+ */
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+            withPrivateKey:(nullable NSString *)pemPrivateKey
+             withCertChain:(nullable NSString *)pemCertChain
+                   forHost:(nonnull NSString *)host
+                     error:(NSError **)errorPtr;
+
+@end
diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m
new file mode 100644
index 0000000000..a8bcd0aab4
--- /dev/null
+++ b/src/objective-c/GRPCClient/GRPCCall+ChannelCredentials.m
@@ -0,0 +1,66 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#import "GRPCCall+ChannelCredentials.h"
+
+#import "private/GRPCHost.h"
+
+@implementation GRPCCall (ChannelCredentials)
+
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+            withPrivateKey:(nullable NSString *)pemPrivateKey
+             withCertChain:(nullable NSString *)pemCertChain
+                   forHost:(nonnull NSString *)host
+                     error:(NSError **)errorPtr {
+  if (!host) {
+    [NSException raise:NSInvalidArgumentException
+                format:@"host must be provided."];
+  }
+  GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
+  return [hostConfig setTLSPEMRootCerts:pemRootCerts
+                 withPrivateKey:pemPrivateKey
+                  withCertChain:pemCertChain
+                          error:errorPtr];
+}
+
++ (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+                   forHost:(nonnull NSString *)host
+                     error:(NSError **)errorPtr {
+  return [GRPCCall setTLSPEMRootCerts:pemRootCerts
+               withPrivateKey:nil
+                withCertChain:nil
+                      forHost:host
+                      error:errorPtr];
+}
+
+@end
diff --git a/src/objective-c/GRPCClient/GRPCCall+Tests.m b/src/objective-c/GRPCClient/GRPCCall+Tests.m
index c8e8133703..b9456691bd 100644
--- a/src/objective-c/GRPCClient/GRPCCall+Tests.m
+++ b/src/objective-c/GRPCClient/GRPCCall+Tests.m
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,8 +43,16 @@
   if (!host || !certsPath || !testName) {
     [NSException raise:NSInvalidArgumentException format:@"host, path and name must be provided."];
   }
+  NSError *error = nil;
+  NSString *certs = [NSString stringWithContentsOfFile:certsPath
+                                                      encoding:NSUTF8StringEncoding
+                                                      error:&error];
+  if (error != nil) {
+      [NSException raise:[error localizedDescription] format:@"failed to load certs"];
+  }
+
   GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
-  hostConfig.pathToCertificates = certsPath;
+  [hostConfig setTLSPEMRootCerts:certs withPrivateKey:nil withCertChain:nil error:nil];
   hostConfig.hostNameOverride = testName;
 }
 
diff --git a/src/objective-c/GRPCClient/private/GRPCChannel.h b/src/objective-c/GRPCClient/private/GRPCChannel.h
index 73bf8d95e7..70d1a9bd2f 100644
--- a/src/objective-c/GRPCClient/private/GRPCChannel.h
+++ b/src/objective-c/GRPCClient/private/GRPCChannel.h
@@ -55,18 +55,6 @@ struct grpc_channel_credentials;
  */
 + (nullable GRPCChannel *)secureChannelWithHost:(nonnull NSString *)host;
 
-/**
- * Creates a secure channel to the specified @c host using the specified @c pathToCertificates and 
- * @c channelArgs. Only in tests should @c pathToCertificates be nil or
- * @c GRPC_SSL_TARGET_NAME_OVERRIDE_ARG channel arg be set. Passing nil for @c pathToCertificates
- * results in using the default root certificates distributed with the library. If certificates
- * could not be found in any case, then @c nil is returned.
- */
-+ (nullable GRPCChannel *)secureChannelWithHost:(nonnull NSString *)host
-                             pathToCertificates:(nullable NSString *)pathToCertificates
-                                    channelArgs:(nullable NSDictionary *)channelArgs;
-
-
 /**
  * Creates a secure channel to the specified @c host using the specified @c credentials and
  * @c channelArgs. Only in tests should @c GRPC_SSL_TARGET_NAME_OVERRIDE_ARG channel arg be set.
diff --git a/src/objective-c/GRPCClient/private/GRPCChannel.m b/src/objective-c/GRPCClient/private/GRPCChannel.m
index 926f55048d..203ef58c0d 100644
--- a/src/objective-c/GRPCClient/private/GRPCChannel.m
+++ b/src/objective-c/GRPCClient/private/GRPCChannel.m
@@ -40,26 +40,6 @@
 
 #import "GRPCCompletionQueue.h"
 
-/**
- * Returns @c grpc_channel_credentials from the specified @c path. If the file at the path could not
- * be read then NULL is returned. If NULL is returned, @c errorPtr may not be NULL if there are
- * details available describing what went wrong.
- */
-static grpc_channel_credentials *CertificatesAtPath(NSString *path, NSError **errorPtr) {
-  // Files in PEM format can have non-ASCII characters in their comments (e.g. for the name of the
-  // issuer). Load them as UTF8 and produce an ASCII equivalent.
-  NSString *contentInUTF8 = [NSString stringWithContentsOfFile:path
-                                                      encoding:NSUTF8StringEncoding
-                                                         error:errorPtr];
-  NSData *contentInASCII = [contentInUTF8 dataUsingEncoding:NSASCIIStringEncoding
-                                       allowLossyConversion:YES];
-  if (!contentInASCII.bytes) {
-    // Passing NULL to grpc_ssl_credentials_create produces behavior we don't want, so return.
-    return NULL;
-  }
-  return grpc_ssl_credentials_create(contentInASCII.bytes, NULL, NULL);
-}
-
 void freeChannelArgs(grpc_channel_args *channel_args) {
   for (size_t i = 0; i < channel_args->num_args; ++i) {
     grpc_arg *arg = &channel_args->args[i];
@@ -157,38 +137,6 @@ grpc_channel_args * buildChannelArgs(NSDictionary *dictionary) {
   return [[GRPCChannel alloc] initWithHost:host secure:YES credentials:NULL channelArgs:NULL];
 }
 
-+ (GRPCChannel *)secureChannelWithHost:(NSString *)host
-                    pathToCertificates:(NSString *)path
-                           channelArgs:(NSDictionary *)channelArgs {
-  // Load default SSL certificates once.
-  static grpc_channel_credentials *kDefaultCertificates;
-  static dispatch_once_t loading;
-  dispatch_once(&loading, ^{
-    NSString *defaultPath = @"gRPCCertificates.bundle/roots"; // .pem
-    // Do not use NSBundle.mainBundle, as it's nil for tests of library projects.
-    NSBundle *bundle = [NSBundle bundleForClass:self.class];
-    NSString *path = [bundle pathForResource:defaultPath ofType:@"pem"];
-    NSError *error;
-    kDefaultCertificates = CertificatesAtPath(path, &error);
-    NSAssert(kDefaultCertificates, @"Could not read %@/%@.pem. This file, with the root "
-             "certificates, is needed to establish secure (TLS) connections. Because the file is "
-             "distributed with the gRPC library, this error is usually a sign that the library "
-             "wasn't configured correctly for your project. Error: %@",
-             bundle.bundlePath, defaultPath, error);
-  });
-
-  //TODO(jcanizales): Add NSError** parameter to the initializer.
-  grpc_channel_credentials *certificates = path
-      ? CertificatesAtPath(path, NULL)
-      : kDefaultCertificates;
-
-  return [[GRPCChannel alloc] initWithHost:host
-                                    secure:YES
-                               credentials:certificates
-                               channelArgs:channelArgs];
-}
-
-
 + (GRPCChannel *)secureChannelWithHost:(NSString *)host
                            credentials:(struct grpc_channel_credentials *)credentials
                            channelArgs:(NSDictionary *)channelArgs {
diff --git a/src/objective-c/GRPCClient/private/GRPCHost.h b/src/objective-c/GRPCClient/private/GRPCHost.h
index e58bb7a2d9..9220e2a33d 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.h
+++ b/src/objective-c/GRPCClient/private/GRPCHost.h
@@ -37,23 +37,28 @@ NS_ASSUME_NONNULL_BEGIN
 
 @class GRPCCompletionQueue;
 struct grpc_call;
+struct grpc_channel_credentials;
 
 @interface GRPCHost : NSObject
 
 @property(nonatomic, readonly) NSString *address;
 @property(nonatomic, copy, nullable) NSString *userAgentPrefix;
+@property(nonatomic, nullable) struct grpc_channel_credentials *channelCreds;
 
 /** The following properties should only be modified for testing: */
 
 @property(nonatomic, getter=isSecure) BOOL secure;
 
-@property(nonatomic, copy, nullable) NSString *pathToCertificates;
 @property(nonatomic, copy, nullable) NSString *hostNameOverride;
 
 - (nullable instancetype)init NS_UNAVAILABLE;
 /** Host objects initialized with the same address are the same. */
 + (nullable instancetype)hostWithAddress:(NSString *)address;
 - (nullable instancetype)initWithAddress:(NSString *)address NS_DESIGNATED_INITIALIZER;
+- (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+            withPrivateKey:(nullable NSString *)pemPrivateKey
+             withCertChain:(nullable NSString *)pemCertChain
+                     error:(NSError **)errorPtr;
 
 /** Create a grpc_call object to the provided path on this host. */
 - (nullable struct grpc_call *)unmanagedCallWithPath:(NSString *)path
diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m
index 739d808c53..43166cbb52 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.m
+++ b/src/objective-c/GRPCClient/private/GRPCHost.m
@@ -34,6 +34,7 @@
 #import "GRPCHost.h"
 
 #include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
 #import <GRPCClient/GRPCCall.h>
 #import <GRPCClient/GRPCCall+ChannelArg.h>
 
@@ -56,6 +57,12 @@ NS_ASSUME_NONNULL_BEGIN
   return [[self alloc] initWithAddress:address];
 }
 
+- (void)dealloc {
+  if (_channelCreds != nil) {
+    grpc_channel_credentials_release(_channelCreds);
+  }
+}
+
 // Default initializer.
 - (nullable instancetype)initWithAddress:(NSString *)address {
   if (!address) {
@@ -105,6 +112,75 @@ NS_ASSUME_NONNULL_BEGIN
   return [channel unmanagedCallWithPath:path completionQueue:queue];
 }
 
+- (BOOL)setTLSPEMRootCerts:(nullable NSString *)pemRootCerts
+            withPrivateKey:(nullable NSString *)pemPrivateKey
+             withCertChain:(nullable NSString *)pemCertChain
+                     error:(NSError **)errorPtr {
+  static NSData *kDefaultRootsASCII;
+  static NSError *kDefaultRootsError;
+  static dispatch_once_t loading;
+  dispatch_once(&loading, ^{
+    NSString *defaultPath = @"gRPCCertificates.bundle/roots"; // .pem
+    // Do not use NSBundle.mainBundle, as it's nil for tests of library projects.
+    NSBundle *bundle = [NSBundle bundleForClass:self.class];
+    NSString *path = [bundle pathForResource:defaultPath ofType:@"pem"];
+    NSError *error;
+    // Files in PEM format can have non-ASCII characters in their comments (e.g. for the name of the
+    // issuer). Load them as UTF8 and produce an ASCII equivalent.
+    NSString *contentInUTF8 = [NSString stringWithContentsOfFile:path
+                                                        encoding:NSUTF8StringEncoding
+                                                           error:&error];
+    if (contentInUTF8 == nil) {
+      kDefaultRootsError = error;
+      return;
+    }
+    kDefaultRootsASCII = [contentInUTF8 dataUsingEncoding:NSASCIIStringEncoding
+                                     allowLossyConversion:YES];
+  });
+
+  NSData *rootsASCII;
+  if (pemRootCerts != nil) {
+    rootsASCII = [pemRootCerts dataUsingEncoding:NSASCIIStringEncoding
+                     allowLossyConversion:YES];
+  } else {
+    if (kDefaultRootsASCII == nil) {
+      if (errorPtr) {
+        *errorPtr = kDefaultRootsError;
+      }
+      NSAssert(kDefaultRootsASCII, @"Could not read gRPCCertificates.bundle/roots.pem. This file, "
+               "with the root certificates, is needed to establish secure (TLS) connections. "
+               "Because the file is distributed with the gRPC library, this error is usually a sign "
+               "that the library wasn't configured correctly for your project. Error: %@",
+                kDefaultRootsError);
+      return NO;
+    }
+    rootsASCII = kDefaultRootsASCII;
+  }
+
+  grpc_channel_credentials *creds;
+  if (pemPrivateKey == nil && pemCertChain == nil) {
+    creds = grpc_ssl_credentials_create(rootsASCII.bytes, NULL, NULL);
+  } else {
+    grpc_ssl_pem_key_cert_pair key_cert_pair;
+    NSData *privateKeyASCII = [pemPrivateKey dataUsingEncoding:NSASCIIStringEncoding
+                                       allowLossyConversion:YES];
+    NSData *certChainASCII = [pemCertChain dataUsingEncoding:NSASCIIStringEncoding
+                                     allowLossyConversion:YES];
+    key_cert_pair.private_key = privateKeyASCII.bytes;
+    key_cert_pair.cert_chain = certChainASCII.bytes;
+    creds = grpc_ssl_credentials_create(rootsASCII.bytes, &key_cert_pair, NULL);
+  }
+
+  @synchronized(self) {
+    if (_channelCreds != nil) {
+      grpc_channel_credentials_release(_channelCreds);
+    }
+    _channelCreds = creds;
+  }
+
+  return YES;
+}
+
 - (NSDictionary *)channelArgs {
   NSMutableDictionary *args = [NSMutableDictionary dictionary];
 
@@ -125,9 +201,16 @@ NS_ASSUME_NONNULL_BEGIN
 - (GRPCChannel *)newChannel {
   NSDictionary *args = [self channelArgs];
   if (_secure) {
-    return [GRPCChannel secureChannelWithHost:_address
-                           pathToCertificates:_pathToCertificates
-                                  channelArgs:args];
+      GRPCChannel *channel;
+      @synchronized(self) {
+        if (_channelCreds == nil) {
+          [self setTLSPEMRootCerts:nil withPrivateKey:nil withCertChain:nil error:nil];
+        }
+        channel = [GRPCChannel secureChannelWithHost:_address
+                                          credentials:_channelCreds
+                                          channelArgs:args];
+      }
+      return channel;
   } else {
     return [GRPCChannel insecureChannelWithHost:_address channelArgs:args];
   }
@@ -145,9 +228,6 @@ NS_ASSUME_NONNULL_BEGIN
   }
 }
 
-// TODO(jcanizales): Don't let set |secure| to |NO| if |pathToCertificates| or |hostNameOverride|
-// have been set. Don't let set either of the latter if |secure| has been set to |NO|.
-
 @end
 
 NS_ASSUME_NONNULL_END
-- 
GitLab


From 1b9c0a2123bc8e2e3c4a6a7b35e22a7b2b17a69f Mon Sep 17 00:00:00 2001
From: Paul Querna <pquerna@apache.org>
Date: Fri, 29 Apr 2016 08:28:48 -0700
Subject: [PATCH 251/525] Remove duplicate instance of grpc_global_wakeup_fd

---
 src/core/lib/iomgr/ev_posix.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/core/lib/iomgr/ev_posix.c b/src/core/lib/iomgr/ev_posix.c
index 0eb95a2e09..7df1751352 100644
--- a/src/core/lib/iomgr/ev_posix.c
+++ b/src/core/lib/iomgr/ev_posix.c
@@ -44,7 +44,6 @@
 static const grpc_event_engine_vtable *g_event_engine;
 
 grpc_poll_function_type grpc_poll_function = poll;
-grpc_wakeup_fd grpc_global_wakeup_fd;
 
 void grpc_event_engine_init(void) {
   if ((g_event_engine = grpc_init_poll_and_epoll_posix())) {
-- 
GitLab


From 501ca5766560d891adeb1a3d27dcdba52862f3bc Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 29 Apr 2016 09:35:44 -0700
Subject: [PATCH 252/525] kill pending python workers on start

---
 tools/run_tests/performance/kill_workers.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/run_tests/performance/kill_workers.sh b/tools/run_tests/performance/kill_workers.sh
index 3eae8c31cb..7a8763424d 100755
--- a/tools/run_tests/performance/kill_workers.sh
+++ b/tools/run_tests/performance/kill_workers.sh
@@ -47,5 +47,8 @@ ps -C ruby -o pid=,cmd= | grep 'qps/worker.rb' | awk '{print $1}' | xargs kill -
 # Node
 ps -C node -o pid=,cmd= | grep 'performance/worker.js' | awk '{print $1}' | xargs kill -9
 
+# Python
+ps -C python -o pid=,cmd= | grep 'qps_worker.py' | awk '{print $1}' | xargs kill -9
+
 # Java
 jps | grep LoadWorker | awk '{print $1}' | xargs kill -9
-- 
GitLab


From c2de452309c91b934382c2ea77eff5d9e53caad1 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Fri, 29 Apr 2016 10:25:27 -0700
Subject: [PATCH 253/525] Fix header-size computation to comply with the HTTP/2
 RFC.

---
 src/core/lib/transport/metadata.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index 277c257933..77c32c72de 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -146,8 +146,10 @@ void grpc_mdelem_unref(grpc_mdelem *md);
 const char *grpc_mdstr_as_c_string(grpc_mdstr *s);
 
 #define GRPC_MDSTR_LENGTH(s) (GPR_SLICE_LENGTH(s->slice))
+
+/* We add 32 bytes of padding as per RFC-7540 section 6.5.2. */
 #define GRPC_MDELEM_LENGTH(e) (GRPC_MDSTR_LENGTH(e->key) + \
-                               GRPC_MDSTR_LENGTH(e->value))
+                               GRPC_MDSTR_LENGTH(e->value) + 32)
 
 int grpc_mdstr_is_legal_header(grpc_mdstr *s);
 int grpc_mdstr_is_legal_nonbin_header(grpc_mdstr *s);
-- 
GitLab


From ad9d06effe37bf9c99a8b2aad8f52657b30e7abf Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Thu, 28 Apr 2016 22:15:04 -0700
Subject: [PATCH 254/525] Create Python stress test

---
 src/python/grpcio/tests/stress/__init__.py    |  28 ++++
 src/python/grpcio/tests/stress/client.py      | 132 ++++++++++++++++++
 .../grpcio/tests/stress/metrics_server.py     |  60 ++++++++
 src/python/grpcio/tests/stress/test_runner.py |  73 ++++++++++
 4 files changed, 293 insertions(+)
 create mode 100644 src/python/grpcio/tests/stress/__init__.py
 create mode 100644 src/python/grpcio/tests/stress/client.py
 create mode 100644 src/python/grpcio/tests/stress/metrics_server.py
 create mode 100644 src/python/grpcio/tests/stress/test_runner.py

diff --git a/src/python/grpcio/tests/stress/__init__.py b/src/python/grpcio/tests/stress/__init__.py
new file mode 100644
index 0000000000..100a624dc9
--- /dev/null
+++ b/src/python/grpcio/tests/stress/__init__.py
@@ -0,0 +1,28 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/python/grpcio/tests/stress/client.py b/src/python/grpcio/tests/stress/client.py
new file mode 100644
index 0000000000..a733741b73
--- /dev/null
+++ b/src/python/grpcio/tests/stress/client.py
@@ -0,0 +1,132 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Entry point for running stress tests."""
+
+import argparse
+import Queue
+import threading
+
+from grpc.beta import implementations
+from src.proto.grpc.testing import metrics_pb2
+from src.proto.grpc.testing import test_pb2
+
+from tests.interop import methods
+from tests.qps import histogram
+from tests.stress import metrics_server
+from tests.stress import test_runner
+
+
+def _args():
+  parser = argparse.ArgumentParser(description='gRPC Python stress test client')
+  parser.add_argument(
+      '--server_addresses',
+      help='comma seperated list of hostname:port to run servers on',
+      default='localhost:8080', type=str)
+  parser.add_argument(
+      '--test_cases',
+      help='comma seperated list of testcase:weighting of tests to run',
+      default='large_unary:100',
+      type=str)
+  parser.add_argument(
+      '--test_duration_secs',
+      help='number of seconds to run the stress test',
+      default=-1, type=int)
+  parser.add_argument(
+      '--num_channels_per_server',
+      help='number of channels per server',
+      default=1, type=int)
+  parser.add_argument(
+      '--num_stubs_per_channel',
+      help='number of stubs to create per channel',
+      default=1, type=int)
+  parser.add_argument(
+      '--metrics_port',
+      help='the port to listen for metrics requests on',
+      default=8081, type=int)
+  return parser.parse_args()
+
+
+def _test_case_from_arg(test_case_arg):
+  for test_case in methods.TestCase:
+    if test_case_arg == test_case.value:
+      return test_case
+  else:
+    raise ValueError('No test case {}!'.format(test_case_arg))
+
+
+def _parse_weighted_test_cases(test_case_args):
+  weighted_test_cases = {}
+  for test_case_arg in test_case_args.split(','):
+    name, weight = test_case_arg.split(':', 1)
+    test_case = _test_case_from_arg(name)
+    weighted_test_cases[test_case] = int(weight)
+  return weighted_test_cases
+
+
+def run_test(args):
+  test_cases = _parse_weighted_test_cases(args.test_cases)
+  test_servers = args.server_addresses.split(',')
+  # Propagate any client exceptions with a queue
+  exception_queue = Queue.Queue()
+  stop_event = threading.Event()
+  hist = histogram.Histogram(1, 1)
+  runners = []
+
+  server = metrics_pb2.beta_create_MetricsService_server(
+      metrics_server.MetricsServer(hist))
+  server.add_insecure_port('[::]:{}'.format(args.metrics_port))
+  server.start()
+
+  for test_server in test_servers:
+    host, port = test_server.split(':', 1)
+    for _ in xrange(args.num_channels_per_server):
+      channel = implementations.insecure_channel(host, int(port))
+      for _ in xrange(args.num_stubs_per_channel):
+        stub = test_pb2.beta_create_TestService_stub(channel)
+        runner = test_runner.TestRunner(stub, test_cases, hist,
+                                        exception_queue, stop_event)
+        runners.append(runner)
+
+  for runner in runners:
+    runner.start()
+  try:
+    raise exception_queue.get(block=True, timeout=args.test_duration_secs)
+  except Queue.Empty:
+    # No exceptions thrown, success
+    pass
+  finally:
+    stop_event.set()
+    for runner in runners:
+      runner.join()
+      runner = None
+    server.stop(0)
+
+if __name__ == '__main__':
+  run_test(_args())
diff --git a/src/python/grpcio/tests/stress/metrics_server.py b/src/python/grpcio/tests/stress/metrics_server.py
new file mode 100644
index 0000000000..b994e4643e
--- /dev/null
+++ b/src/python/grpcio/tests/stress/metrics_server.py
@@ -0,0 +1,60 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""MetricsService for publishing stress test qps data."""
+
+import time
+
+from src.proto.grpc.testing import metrics_pb2
+
+GAUGE_NAME = 'python_overall_qps'
+
+
+class MetricsServer(metrics_pb2.BetaMetricsServiceServicer):
+
+  def __init__(self, histogram):
+    self._start_time = time.time()
+    self._histogram = histogram
+
+  def _get_qps(self):
+    count = self._histogram.get_data().count
+    delta = time.time() - self._start_time
+    self._histogram.reset()
+    self._start_time = time.time()
+    return int(count/delta)
+
+  def GetAllGauges(self, request, context):
+    qps = self._get_qps()
+    return [metrics_pb2.GaugeResponse(name=GAUGE_NAME, long_value=qps)]
+
+  def GetGauge(self, request, context):
+    if request.name != GAUGE_NAME:
+      raise Exception('Gauge {} does not exist'.format(request.name))
+    qps = self._get_qps()
+    return metrics_pb2.GaugeResponse(name=GAUGE_NAME, long_value=qps)
diff --git a/src/python/grpcio/tests/stress/test_runner.py b/src/python/grpcio/tests/stress/test_runner.py
new file mode 100644
index 0000000000..88f13727e3
--- /dev/null
+++ b/src/python/grpcio/tests/stress/test_runner.py
@@ -0,0 +1,73 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Thread that sends random weighted requests on a TestService stub."""
+
+import random
+import threading
+import time
+import traceback
+
+
+def _weighted_test_case_generator(weighted_cases):
+  weight_sum = sum(weighted_cases.itervalues())
+
+  while True:
+    val = random.uniform(0, weight_sum)
+    partial_sum = 0
+    for case in weighted_cases:
+      partial_sum += weighted_cases[case]
+      if val <= partial_sum:
+        yield case
+        break
+
+
+class TestRunner(threading.Thread):
+
+  def __init__(self, stub, test_cases, hist, exception_queue, stop_event):
+    super(TestRunner, self).__init__()
+    self._exception_queue = exception_queue
+    self._stop_event = stop_event
+    self._stub = stub
+    self._test_cases = _weighted_test_case_generator(test_cases)
+    self._histogram = hist
+
+  def run(self):
+    while not self._stop_event.is_set():
+      try:
+        test_case = next(self._test_cases)
+        start_time = time.time()
+        test_case.test_interoperability(self._stub, None)
+        end_time = time.time()
+        self._histogram.add((end_time - start_time)*1e9)
+      except Exception as e:
+        traceback.print_exc()
+        self._exception_queue.put(
+            Exception("An exception occured during test {}"
+                      .format(test_case), e))
-- 
GitLab


From 1b409a02a23fdf2bcb027e7cec13a92f54af2d29 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 29 Apr 2016 11:26:38 -0700
Subject: [PATCH 255/525] Ensure minimum size of alt stack (to please vtune)

---
 test/core/util/test_config.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c
index 62468a5a61..270d16600d 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.c
@@ -210,7 +210,7 @@ static void install_crash_handler() {
 #include <stdio.h>
 #include <string.h>
 
-static char g_alt_stack[MINSIGSTKSZ];
+static char g_alt_stack[GPR_MAX(MINSIGSTKSZ, 65536)];
 
 #define MAX_FRAMES 32
 
-- 
GitLab


From 3b293253d41627e3816167ef8ec3cf9bd0dcc48f Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 29 Apr 2016 11:36:57 -0700
Subject: [PATCH 256/525] Created grpc-tools ruby gem for distributing protoc
 and the plugin

---
 src/ruby/tools/README.md                      | 12 +++++
 src/ruby/tools/bin/protoc.rb                  | 46 +++++++++++++++++++
 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb | 46 +++++++++++++++++++
 src/ruby/tools/grpc-tools.gemspec             | 20 ++++++++
 src/ruby/tools/os_check.rb                    | 45 ++++++++++++++++++
 src/ruby/tools/version.rb                     | 34 ++++++++++++++
 templates/src/ruby/tools/version.rb.template  | 36 +++++++++++++++
 7 files changed, 239 insertions(+)
 create mode 100644 src/ruby/tools/README.md
 create mode 100755 src/ruby/tools/bin/protoc.rb
 create mode 100644 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
 create mode 100644 src/ruby/tools/grpc-tools.gemspec
 create mode 100644 src/ruby/tools/os_check.rb
 create mode 100644 src/ruby/tools/version.rb
 create mode 100644 templates/src/ruby/tools/version.rb.template

diff --git a/src/ruby/tools/README.md b/src/ruby/tools/README.md
new file mode 100644
index 0000000000..e43f223c89
--- /dev/null
+++ b/src/ruby/tools/README.md
@@ -0,0 +1,12 @@
+# Ruby gRPC Tools
+
+This package distributes protoc and the Ruby gRPC protoc plugin for Windows, Linux, and Mac.
+
+Before this package is published, the following directories should be filled with the corresponding `protoc` and `grpc_ruby_plugin` executables.
+
+ - `bin/x86-linux`
+ - `bin/x86_64-linux`
+ - `bin/x86-macos`
+ - `bin/x86_64-macos`
+ - `bin/x86-windows`
+ - `bin/x86_64-windows`
diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/protoc.rb
new file mode 100755
index 0000000000..68cbc852fd
--- /dev/null
+++ b/src/ruby/tools/bin/protoc.rb
@@ -0,0 +1,46 @@
+#!/usr/bin/env ruby
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'rbconfig'
+
+require_relative '../os_check'
+
+protoc_name = case OS.os_name
+              when 'windows'
+                'protoc.exe'
+              else
+                'protoc'
+              end
+
+protoc_path = File.join(File.dirname(__FILE__),
+                        RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name,
+                        protoc_name)
+
+exec([ protoc_path, protoc_path ], *ARGV)
diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
new file mode 100644
index 0000000000..04cf435b58
--- /dev/null
+++ b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
@@ -0,0 +1,46 @@
+#!/usr/bin/env ruby
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'rbconfig'
+
+require_relative '../os_check'
+
+plugin_name = 'grpc_ruby_plugin' + case OS.os_name
+                                   when 'windows'
+                                     '.exe'
+                                   else
+                                     ''
+                                   end
+
+plugin_path = File.join(File.dirname(__FILE__),
+                        RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name,
+                        plugin_name)
+
+exec([ plugin_path, plugin_path ], *ARGV)
diff --git a/src/ruby/tools/grpc-tools.gemspec b/src/ruby/tools/grpc-tools.gemspec
new file mode 100644
index 0000000000..f56f2f58ce
--- /dev/null
+++ b/src/ruby/tools/grpc-tools.gemspec
@@ -0,0 +1,20 @@
+# -*- ruby -*-
+# encoding: utf-8
+require_relative 'version.rb'
+Gem::Specification.new do |s|
+  s.name = 'grpc-tools'
+  s.version = GRPC::Tools::VERSION
+  s.homepage = 'https://github.com/google/grpc/tree/master/src/ruby/tools'
+  s.summary = 'Development tools for Ruby gRPC'
+  s.description = 'protoc and the Ruby gRPC protoc plugin'
+  s.license = 'BSD-3-Clause'
+
+  s.files = %w( version.rb os_check.rb README.md )
+  s.files += Dir.glob('bin/**/*')
+
+  s.bindir = 'bin'
+
+  s.platform = Gem::Platform::RUBY
+
+  s.executables = %w( protoc.rb protoc_grpc_ruby_plugin.rb )
+end
diff --git a/src/ruby/tools/os_check.rb b/src/ruby/tools/os_check.rb
new file mode 100644
index 0000000000..2677306457
--- /dev/null
+++ b/src/ruby/tools/os_check.rb
@@ -0,0 +1,45 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# This is based on http://stackoverflow.com/a/171011/159388 by Aaron Hinni
+
+require 'rbconfig'
+
+module OS
+  def OS.os_name
+    case RbConfig::CONFIG['host_os']
+    when /cygwin|mswin|mingw|bccwin|wince|emx/
+      'windows'
+    when /darwin/
+      'macos'
+    else
+      'linux'
+    end
+  end
+end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
new file mode 100644
index 0000000000..12ad21b80e
--- /dev/null
+++ b/src/ruby/tools/version.rb
@@ -0,0 +1,34 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+module GRPC
+  module Tools
+    VERSION = '0.14.0.dev'
+  end
+end
diff --git a/templates/src/ruby/tools/version.rb.template b/templates/src/ruby/tools/version.rb.template
new file mode 100644
index 0000000000..dbc5f48cf5
--- /dev/null
+++ b/templates/src/ruby/tools/version.rb.template
@@ -0,0 +1,36 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+  module GRPC
+    module Tools
+      VERSION = '${settings.ruby_version.ruby()}'
+    end
+  end
-- 
GitLab


From f238194b25549cd97d19f8c785347e2d2f3d3c89 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 29 Apr 2016 11:37:21 -0700
Subject: [PATCH 257/525] Updated build_package_ruby to build the grpc-tools
 gem

---
 tools/run_tests/build_package_ruby.sh | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tools/run_tests/build_package_ruby.sh b/tools/run_tests/build_package_ruby.sh
index 1a5b94348d..cde05181c7 100755
--- a/tools/run_tests/build_package_ruby.sh
+++ b/tools/run_tests/build_package_ruby.sh
@@ -32,6 +32,8 @@ set -ex
 
 cd $(dirname $0)/../..
 
+base=$(pwd)
+
 mkdir -p artifacts/
 
 # All the ruby packages have been built in the artifact phase already
@@ -41,3 +43,25 @@ cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=ruby,platform={windows,
 # TODO: all the artifact builder configurations generate a grpc-VERSION.gem
 # source distribution package, and only one of them will end up
 # in the artifacts/ directory. They should be all equivalent though.
+
+for arch in {x86,x64}; do
+  case arch in
+    x64)
+      ruby_arch=x86_64
+      ;;
+    *)
+      ruby_arch=$arch
+      ;;
+  esac
+  for plat in {windows,linux,macos}; do
+    input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
+    output_dir="$base/src/ruby/tools/bin/${ruby_arch}-${plat}"
+    mkdir -p output_dir
+    cp $input_dir/protoc* output_dir/
+    cp $input_dir/grpc_ruby_plugin* output_dir/
+  done
+done
+
+cd $base/src/ruby/tools
+gem build grpc-tools.gemspec
+cp ./grpc-tools*.gem $base/artifacts/
-- 
GitLab


From faf3bfca82c88b1bf08995fdfb26a152c90bf0a5 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 29 Apr 2016 12:39:05 -0700
Subject: [PATCH 258/525] Fixed grpc-tools.gemspec

---
 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb | 0
 src/ruby/tools/grpc-tools.gemspec             | 2 ++
 2 files changed, 2 insertions(+)
 mode change 100644 => 100755 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb

diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
old mode 100644
new mode 100755
diff --git a/src/ruby/tools/grpc-tools.gemspec b/src/ruby/tools/grpc-tools.gemspec
index f56f2f58ce..af904de4a9 100644
--- a/src/ruby/tools/grpc-tools.gemspec
+++ b/src/ruby/tools/grpc-tools.gemspec
@@ -4,6 +4,8 @@ require_relative 'version.rb'
 Gem::Specification.new do |s|
   s.name = 'grpc-tools'
   s.version = GRPC::Tools::VERSION
+  s.authors = ['grpc Authors']
+  s.email = 'grpc-io@googlegroups.com'
   s.homepage = 'https://github.com/google/grpc/tree/master/src/ruby/tools'
   s.summary = 'Development tools for Ruby gRPC'
   s.description = 'protoc and the Ruby gRPC protoc plugin'
-- 
GitLab


From f897fec0dbd8814b3717b88058cdcaf6965a2d50 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 29 Apr 2016 12:43:19 -0700
Subject: [PATCH 259/525] Fixed build_package_ruby's use of variables

---
 tools/run_tests/build_package_ruby.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/run_tests/build_package_ruby.sh b/tools/run_tests/build_package_ruby.sh
index cde05181c7..5725a19e62 100755
--- a/tools/run_tests/build_package_ruby.sh
+++ b/tools/run_tests/build_package_ruby.sh
@@ -56,9 +56,9 @@ for arch in {x86,x64}; do
   for plat in {windows,linux,macos}; do
     input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts"
     output_dir="$base/src/ruby/tools/bin/${ruby_arch}-${plat}"
-    mkdir -p output_dir
-    cp $input_dir/protoc* output_dir/
-    cp $input_dir/grpc_ruby_plugin* output_dir/
+    mkdir -p $output_dir
+    cp $input_dir/protoc* $output_dir/
+    cp $input_dir/grpc_ruby_plugin* $output_dir/
   done
 done
 
-- 
GitLab


From 8cb5f2f413853829f75bc256ee93fec812d357a1 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 29 Apr 2016 12:55:28 -0700
Subject: [PATCH 260/525] Fixed build_package_ruby's use of variables

---
 tools/run_tests/build_package_ruby.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/build_package_ruby.sh b/tools/run_tests/build_package_ruby.sh
index 5725a19e62..e44428bf7e 100755
--- a/tools/run_tests/build_package_ruby.sh
+++ b/tools/run_tests/build_package_ruby.sh
@@ -45,7 +45,7 @@ cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=ruby,platform={windows,
 # in the artifacts/ directory. They should be all equivalent though.
 
 for arch in {x86,x64}; do
-  case arch in
+  case $arch in
     x64)
       ruby_arch=x86_64
       ;;
-- 
GitLab


From 2a932daaafbec9874d9fb594419f68f9cb8f9187 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 29 Apr 2016 13:04:53 -0700
Subject: [PATCH 261/525] Spell out fail fast semantics

---
 doc/fail_fast.md | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
 create mode 100644 doc/fail_fast.md

diff --git a/doc/fail_fast.md b/doc/fail_fast.md
new file mode 100644
index 0000000000..3ed4297194
--- /dev/null
+++ b/doc/fail_fast.md
@@ -0,0 +1,15 @@
+gRPC Fail Fast Semantics
+========================
+
+Fail fast requests allow terminating requests (with status UNAVAILABLE) prior
+to the deadline of the request being met.
+
+gRPC implementations of fail fast can terminate requests whenever a channel is
+in the TRANSIENT_FAILURE or SHUTDOWN states. If the channel is in any other
+state (CONNECTING, READY, or IDLE) the request should not be terminated.
+
+Fail fast SHOULD be the default for gRPC implementations, with an option to
+switch to non fail fast.
+
+The opposite of fail fast is 'ignore connectivity'.
+
-- 
GitLab


From a42ec2134117f4a4db994467edcff52e6f347f3d Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 29 Apr 2016 13:03:06 -0700
Subject: [PATCH 262/525] Server builder plugin

---
 BUILD                                         |   4 +
 Makefile                                      |  51 ++++
 build.yaml                                    |  15 ++
 include/grpc++/impl/server_builder_option.h   |   8 +
 include/grpc++/impl/server_builder_plugin.h   |  79 ++++++
 include/grpc++/impl/server_initializer.h      |  70 ++++++
 include/grpc++/server.h                       |   8 +
 include/grpc++/server_builder.h               |   9 +
 src/cpp/server/server.cc                      |  19 +-
 src/cpp/server/server_builder.cc              |  16 ++
 test/cpp/end2end/async_end2end_test.cc        |  28 +++
 .../cpp/end2end/server_builder_plugin_test.cc | 234 ++++++++++++++++++
 tools/doxygen/Doxyfile.c++                    |   2 +
 tools/doxygen/Doxyfile.c++.internal           |   2 +
 tools/run_tests/sources_and_headers.json      |  22 ++
 tools/run_tests/tests.json                    |  21 ++
 vsprojects/vcxproj/grpc++/grpc++.vcxproj      |   2 +
 .../vcxproj/grpc++/grpc++.vcxproj.filters     |   6 +
 .../grpc++_unsecure/grpc++_unsecure.vcxproj   |   2 +
 .../grpc++_unsecure.vcxproj.filters           |   6 +
 .../server_builder_plugin_test.vcxproj        | 207 ++++++++++++++++
 ...server_builder_plugin_test.vcxproj.filters |  21 ++
 22 files changed, 831 insertions(+), 1 deletion(-)
 create mode 100644 include/grpc++/impl/server_builder_plugin.h
 create mode 100644 include/grpc++/impl/server_initializer.h
 create mode 100644 test/cpp/end2end/server_builder_plugin_test.cc
 create mode 100644 vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj
 create mode 100644 vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj.filters

diff --git a/BUILD b/BUILD
index b4b10b535e..30f0b5028c 100644
--- a/BUILD
+++ b/BUILD
@@ -890,6 +890,8 @@ cc_library(
     "include/grpc++/impl/rpc_service_method.h",
     "include/grpc++/impl/serialization_traits.h",
     "include/grpc++/impl/server_builder_option.h",
+    "include/grpc++/impl/server_builder_plugin.h",
+    "include/grpc++/impl/server_initializer.h",
     "include/grpc++/impl/service_type.h",
     "include/grpc++/impl/sync.h",
     "include/grpc++/impl/sync_cxx11.h",
@@ -1035,6 +1037,8 @@ cc_library(
     "include/grpc++/impl/rpc_service_method.h",
     "include/grpc++/impl/serialization_traits.h",
     "include/grpc++/impl/server_builder_option.h",
+    "include/grpc++/impl/server_builder_plugin.h",
+    "include/grpc++/impl/server_initializer.h",
     "include/grpc++/impl/service_type.h",
     "include/grpc++/impl/sync.h",
     "include/grpc++/impl/sync_cxx11.h",
diff --git a/Makefile b/Makefile
index 922e0b0568..38228259cd 100644
--- a/Makefile
+++ b/Makefile
@@ -1035,6 +1035,7 @@ reconnect_interop_client: $(BINDIR)/$(CONFIG)/reconnect_interop_client
 reconnect_interop_server: $(BINDIR)/$(CONFIG)/reconnect_interop_server
 secure_auth_context_test: $(BINDIR)/$(CONFIG)/secure_auth_context_test
 secure_sync_unary_ping_pong_test: $(BINDIR)/$(CONFIG)/secure_sync_unary_ping_pong_test
+server_builder_plugin_test: $(BINDIR)/$(CONFIG)/server_builder_plugin_test
 server_crash_test: $(BINDIR)/$(CONFIG)/server_crash_test
 server_crash_test_client: $(BINDIR)/$(CONFIG)/server_crash_test_client
 shutdown_test: $(BINDIR)/$(CONFIG)/shutdown_test
@@ -1401,6 +1402,7 @@ buildtests_cxx: buildtests_zookeeper privatelibs_cxx \
   $(BINDIR)/$(CONFIG)/reconnect_interop_server \
   $(BINDIR)/$(CONFIG)/secure_auth_context_test \
   $(BINDIR)/$(CONFIG)/secure_sync_unary_ping_pong_test \
+  $(BINDIR)/$(CONFIG)/server_builder_plugin_test \
   $(BINDIR)/$(CONFIG)/server_crash_test \
   $(BINDIR)/$(CONFIG)/server_crash_test_client \
   $(BINDIR)/$(CONFIG)/shutdown_test \
@@ -1732,6 +1734,8 @@ test_cxx: test_zookeeper buildtests_cxx
 	$(Q) $(BINDIR)/$(CONFIG)/secure_auth_context_test || ( echo test secure_auth_context_test failed ; exit 1 )
 	$(E) "[RUN]     Testing secure_sync_unary_ping_pong_test"
 	$(Q) $(BINDIR)/$(CONFIG)/secure_sync_unary_ping_pong_test || ( echo test secure_sync_unary_ping_pong_test failed ; exit 1 )
+	$(E) "[RUN]     Testing server_builder_plugin_test"
+	$(Q) $(BINDIR)/$(CONFIG)/server_builder_plugin_test || ( echo test server_builder_plugin_test failed ; exit 1 )
 	$(E) "[RUN]     Testing server_crash_test"
 	$(Q) $(BINDIR)/$(CONFIG)/server_crash_test || ( echo test server_crash_test failed ; exit 1 )
 	$(E) "[RUN]     Testing shutdown_test"
@@ -3200,6 +3204,8 @@ PUBLIC_HEADERS_CXX += \
     include/grpc++/impl/rpc_service_method.h \
     include/grpc++/impl/serialization_traits.h \
     include/grpc++/impl/server_builder_option.h \
+    include/grpc++/impl/server_builder_plugin.h \
+    include/grpc++/impl/server_initializer.h \
     include/grpc++/impl/service_type.h \
     include/grpc++/impl/sync.h \
     include/grpc++/impl/sync_cxx11.h \
@@ -3503,6 +3509,8 @@ PUBLIC_HEADERS_CXX += \
     include/grpc++/impl/rpc_service_method.h \
     include/grpc++/impl/serialization_traits.h \
     include/grpc++/impl/server_builder_option.h \
+    include/grpc++/impl/server_builder_plugin.h \
+    include/grpc++/impl/server_initializer.h \
     include/grpc++/impl/service_type.h \
     include/grpc++/impl/sync.h \
     include/grpc++/impl/sync_cxx11.h \
@@ -11479,6 +11487,49 @@ endif
 endif
 
 
+SERVER_BUILDER_PLUGIN_TEST_SRC = \
+    test/cpp/end2end/server_builder_plugin_test.cc \
+
+SERVER_BUILDER_PLUGIN_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SERVER_BUILDER_PLUGIN_TEST_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/server_builder_plugin_test: openssl_dep_error
+
+else
+
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/server_builder_plugin_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/server_builder_plugin_test: $(PROTOBUF_DEP) $(SERVER_BUILDER_PLUGIN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LDXX) $(LDFLAGS) $(SERVER_BUILDER_PLUGIN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/server_builder_plugin_test
+
+endif
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/cpp/end2end/server_builder_plugin_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_server_builder_plugin_test: $(SERVER_BUILDER_PLUGIN_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(SERVER_BUILDER_PLUGIN_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
 SERVER_CRASH_TEST_SRC = \
     test/cpp/end2end/server_crash_test.cc \
 
diff --git a/build.yaml b/build.yaml
index 441752dc3d..928efdee03 100644
--- a/build.yaml
+++ b/build.yaml
@@ -590,6 +590,8 @@ filegroups:
   - include/grpc++/impl/rpc_service_method.h
   - include/grpc++/impl/serialization_traits.h
   - include/grpc++/impl/server_builder_option.h
+  - include/grpc++/impl/server_builder_plugin.h
+  - include/grpc++/impl/server_initializer.h
   - include/grpc++/impl/service_type.h
   - include/grpc++/impl/sync.h
   - include/grpc++/impl/sync_cxx11.h
@@ -2914,6 +2916,19 @@ targets:
   - mac
   - linux
   - posix
+- name: server_builder_plugin_test
+  gtest: true
+  build: test
+  language: c++
+  src:
+  - test/cpp/end2end/server_builder_plugin_test.cc
+  deps:
+  - grpc++_test_util
+  - grpc_test_util
+  - grpc++
+  - grpc
+  - gpr_test_util
+  - gpr
 - name: server_crash_test
   gtest: true
   cpu_cost: 0.1
diff --git a/include/grpc++/impl/server_builder_option.h b/include/grpc++/impl/server_builder_option.h
index bcb19824fd..2b7e89f5e5 100644
--- a/include/grpc++/impl/server_builder_option.h
+++ b/include/grpc++/impl/server_builder_option.h
@@ -34,6 +34,10 @@
 #ifndef GRPCXX_IMPL_SERVER_BUILDER_OPTION_H
 #define GRPCXX_IMPL_SERVER_BUILDER_OPTION_H
 
+#include <map>
+#include <memory>
+
+#include <grpc++/impl/server_builder_plugin.h>
 #include <grpc++/support/channel_arguments.h>
 
 namespace grpc {
@@ -44,6 +48,10 @@ class ServerBuilderOption {
   virtual ~ServerBuilderOption() {}
   /// Alter the \a ChannelArguments used to create the gRPC server.
   virtual void UpdateArguments(ChannelArguments* args) = 0;
+  /// Alter the ServerBuilderPlugin map that will be added into ServerBuilder.
+  virtual void UpdatePlugins(
+      std::map<grpc::string, std::unique_ptr<ServerBuilderPlugin> >*
+          plugins) = 0;
 };
 
 }  // namespace grpc
diff --git a/include/grpc++/impl/server_builder_plugin.h b/include/grpc++/impl/server_builder_plugin.h
new file mode 100644
index 0000000000..2cf1dfdbec
--- /dev/null
+++ b/include/grpc++/impl/server_builder_plugin.h
@@ -0,0 +1,79 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H
+#define GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H
+
+#include <memory>
+
+#include <grpc++/support/config.h>
+
+namespace grpc {
+
+class ServerInitializer;
+
+class ServerBuilderPlugin {
+ public:
+  virtual ~ServerBuilderPlugin() {}
+  virtual grpc::string name() = 0;
+
+  // InitServer will be called in ServerBuilder::BuildAndStart(), after the
+  // Server instance is created.
+  virtual void InitServer(ServerInitializer* si) = 0;
+
+  // Finish will be called at the end of ServerBuilder::BuildAndStart().
+  virtual void Finish(ServerInitializer* si) = 0;
+
+  // ChangeArguments is an interface that can be used in
+  // ServerBuilderOption::UpdatePlugins
+  virtual void ChangeArguments(const grpc::string& name, void* value) = 0;
+
+  virtual bool has_sync_methods() const { return false; }
+  virtual bool has_async_methods() const { return false; }
+};
+
+}  // namespace grpc
+
+#define DECLARE_PLUGIN(plugin_name)                                    \
+  namespace sBP##plugin_name {                                         \
+    extern std::unique_ptr<ServerBuilderPlugin> Create##plugin_name(); \
+  }
+
+#define INIT_PLUGIN(map, plugin_name)             \
+  {                                               \
+    std::unique_ptr<ServerBuilderPlugin> plugin = \
+        sBP##plugin_name::Create##plugin_name();  \
+    map[plugin->name()] = std::move(plugin);      \
+  }
+
+#endif  // GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H
diff --git a/include/grpc++/impl/server_initializer.h b/include/grpc++/impl/server_initializer.h
new file mode 100644
index 0000000000..dbcecc7026
--- /dev/null
+++ b/include/grpc++/impl/server_initializer.h
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPCXX_IMPL_SERVER_INITIALIZER_H
+#define GRPCXX_IMPL_SERVER_INITIALIZER_H
+
+#include <memory>
+#include <vector>
+
+#include <grpc++/server.h>
+
+namespace grpc {
+
+class Server;
+class Service;
+
+class ServerInitializer {
+ public:
+  ServerInitializer(Server* server) : server_(server) {}
+
+  bool RegisterService(std::shared_ptr<Service> service) {
+    if (!server_->RegisterService(nullptr, service.get())) {
+      return false;
+    }
+    default_services_.push_back(service);
+    return true;
+  }
+
+  const std::vector<grpc::string>* GetServiceList() {
+    return &server_->services_;
+  }
+
+ private:
+  Server* server_;
+  std::vector<std::shared_ptr<Service> > default_services_;
+};
+
+}  // namespace grpc
+
+#endif  // GRPCXX_IMPL_SERVER_INITIALIZER_H
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index 729a5143bf..a0ee0e98e4 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -36,6 +36,7 @@
 
 #include <list>
 #include <memory>
+#include <vector>
 
 #include <grpc++/completion_queue.h>
 #include <grpc++/impl/call.h>
@@ -57,6 +58,7 @@ class GenericServerContext;
 class AsyncGenericService;
 class ServerAsyncStreamingInterface;
 class ServerContext;
+class ServerInitializer;
 class ThreadPoolInterface;
 
 /// Models a gRPC server.
@@ -94,6 +96,7 @@ class Server GRPC_FINAL : public ServerInterface, private GrpcLibraryCodegen {
  private:
   friend class AsyncGenericService;
   friend class ServerBuilder;
+  friend class ServerInitializer;
 
   class SyncRequest;
   class AsyncRequest;
@@ -159,6 +162,8 @@ class Server GRPC_FINAL : public ServerInterface, private GrpcLibraryCodegen {
 
   grpc_server* server() GRPC_OVERRIDE { return server_; };
 
+  ServerInitializer* initializer();
+
   const int max_message_size_;
 
   // Completion queue.
@@ -175,6 +180,7 @@ class Server GRPC_FINAL : public ServerInterface, private GrpcLibraryCodegen {
   std::shared_ptr<GlobalCallbacks> global_callbacks_;
 
   std::list<SyncRequest>* sync_methods_;
+  std::vector<grpc::string> services_;
   std::unique_ptr<RpcServiceMethod> unknown_method_;
   bool has_generic_service_;
 
@@ -184,6 +190,8 @@ class Server GRPC_FINAL : public ServerInterface, private GrpcLibraryCodegen {
   ThreadPoolInterface* thread_pool_;
   // Whether the thread pool is created and owned by the server.
   bool thread_pool_owned_;
+
+  std::unique_ptr<ServerInitializer> server_initializer_;
 };
 
 }  // namespace grpc
diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index 86c7fecef5..a47b5c71cf 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -34,10 +34,12 @@
 #ifndef GRPCXX_SERVER_BUILDER_H
 #define GRPCXX_SERVER_BUILDER_H
 
+#include <map>
 #include <memory>
 #include <vector>
 
 #include <grpc++/impl/server_builder_option.h>
+#include <grpc++/impl/server_builder_plugin.h>
 #include <grpc++/support/config.h>
 #include <grpc/compression.h>
 
@@ -51,6 +53,10 @@ class ServerCompletionQueue;
 class ServerCredentials;
 class Service;
 
+namespace testing {
+class ServerBuilderPluginTest;
+}  // namespace testing
+
 /// A builder class for the creation and startup of \a grpc::Server instances.
 class ServerBuilder {
  public:
@@ -108,6 +114,8 @@ class ServerBuilder {
   std::unique_ptr<Server> BuildAndStart();
 
  private:
+  friend class ::grpc::testing::ServerBuilderPluginTest;
+
   struct Port {
     grpc::string addr;
     std::shared_ptr<ServerCredentials> creds;
@@ -130,6 +138,7 @@ class ServerBuilder {
   std::vector<Port> ports_;
   std::vector<ServerCompletionQueue*> cqs_;
   std::shared_ptr<ServerCredentials> creds_;
+  std::map<grpc::string, std::unique_ptr<ServerBuilderPlugin>> plugins_;
   AsyncGenericService* generic_service_;
 };
 
diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index fafe31e84c..f955a31494 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -33,6 +33,7 @@
 
 #include <grpc++/server.h>
 
+#include <sstream>
 #include <utility>
 
 #include <grpc++/completion_queue.h>
@@ -41,6 +42,7 @@
 #include <grpc++/impl/grpc_library.h>
 #include <grpc++/impl/method_handler_impl.h>
 #include <grpc++/impl/rpc_service_method.h>
+#include <grpc++/impl/server_initializer.h>
 #include <grpc++/impl/service_type.h>
 #include <grpc++/security/server_credentials.h>
 #include <grpc++/server_context.h>
@@ -284,7 +286,8 @@ Server::Server(ThreadPoolInterface* thread_pool, bool thread_pool_owned,
       has_generic_service_(false),
       server_(nullptr),
       thread_pool_(thread_pool),
-      thread_pool_owned_(thread_pool_owned) {
+      thread_pool_owned_(thread_pool_owned),
+      server_initializer_(new ServerInitializer(this)) {
   g_gli_initializer.summon();
   gpr_once_init(&g_once_init_callbacks, InitGlobalCallbacks);
   global_callbacks_ = g_callbacks;
@@ -341,6 +344,7 @@ bool Server::RegisterService(const grpc::string* host, Service* service) {
                "Can only register an asynchronous service against one server.");
     service->server_ = this;
   }
+  const char* method_name = nullptr;
   for (auto it = service->methods_.begin(); it != service->methods_.end();
        ++it) {
     if (it->get() == nullptr) {  // Handled by generic service if any.
@@ -360,6 +364,17 @@ bool Server::RegisterService(const grpc::string* host, Service* service) {
     } else {
       sync_methods_->emplace_back(method, tag);
     }
+    method_name = method->name();
+  }
+
+  // Parse service name.
+  if (method_name != nullptr) {
+    std::stringstream ss(method_name);
+    grpc::string service_name;
+    if (std::getline(ss, service_name, '/') &&
+        std::getline(ss, service_name, '/')) {
+      services_.push_back(service_name);
+    }
   }
   return true;
 }
@@ -598,4 +613,6 @@ void Server::RunRpc() {
   }
 }
 
+ServerInitializer* Server::initializer() { return server_initializer_.get(); }
+
 }  // namespace grpc
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index 68cc38258c..5dc73ed1e4 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -96,6 +96,15 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
   ChannelArguments args;
   for (auto option = options_.begin(); option != options_.end(); ++option) {
     (*option)->UpdateArguments(&args);
+    (*option)->UpdatePlugins(&plugins_);
+  }
+  if (thread_pool == nullptr) {
+    for (auto plugin = plugins_.begin(); plugin != plugins_.end(); plugin++) {
+      if ((*plugin).second->has_sync_methods()) {
+        thread_pool.reset(CreateDefaultThreadPool());
+        break;
+      }
+    }
   }
   if (max_message_size_ > 0) {
     args.SetInt(GRPC_ARG_MAX_MESSAGE_LENGTH, max_message_size_);
@@ -104,6 +113,7 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
               compression_options_.enabled_algorithms_bitset);
   std::unique_ptr<Server> server(
       new Server(thread_pool.release(), true, max_message_size_, &args));
+  ServerInitializer* initializer = server->initializer();
   for (auto cq = cqs_.begin(); cq != cqs_.end(); ++cq) {
     grpc_server_register_completion_queue(server->server_, (*cq)->cq(),
                                           nullptr);
@@ -114,6 +124,9 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
       return nullptr;
     }
   }
+  for (auto plugin = plugins_.begin(); plugin != plugins_.end(); plugin++) {
+    (*plugin).second->InitServer(initializer);
+  }
   if (generic_service_) {
     server->RegisterAsyncGenericService(generic_service_);
   } else {
@@ -137,6 +150,9 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
   if (!server->Start(cqs_data, cqs_.size())) {
     return nullptr;
   }
+  for (auto plugin = plugins_.begin(); plugin != plugins_.end(); plugin++) {
+    (*plugin).second->Finish(initializer);
+  }
   return server;
 }
 
diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc
index 7e4d6046d6..0de6c74c47 100644
--- a/test/cpp/end2end/async_end2end_test.cc
+++ b/test/cpp/end2end/async_end2end_test.cc
@@ -197,6 +197,28 @@ class Verifier {
   bool spin_;
 };
 
+// This class disables the server builder plugins that may add sync services to
+// the server. If there are sync services, UnimplementedRpc test will triger
+// the sync unkown rpc routine on the server side, rather than the async one
+// that needs to be tested here.
+class ServerBuilderSyncPluginDisabler : public ::grpc::ServerBuilderOption {
+ public:
+  void UpdateArguments(ChannelArguments* arg) GRPC_OVERRIDE {}
+
+  void UpdatePlugins(
+      std::map<grpc::string, std::unique_ptr<ServerBuilderPlugin>>* plugins)
+      GRPC_OVERRIDE {
+    auto plugin = plugins->begin();
+    while (plugin != plugins->end()) {
+      if ((*plugin).second->has_sync_methods()) {
+        plugins->erase(plugin++);
+      } else {
+        plugin++;
+      }
+    }
+  }
+};
+
 class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
  protected:
   AsyncEnd2endTest() {}
@@ -213,6 +235,12 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
                              grpc::InsecureServerCredentials());
     builder.RegisterService(&service_);
     cq_ = builder.AddCompletionQueue();
+
+    // TODO(zyc): make a test option to choose wheather sync plugins should be
+    // deleted
+    std::unique_ptr<ServerBuilderOption> sync_plugin_disabler(
+        new ServerBuilderSyncPluginDisabler());
+    builder.SetOption(move(sync_plugin_disabler));
     server_ = builder.BuildAndStart();
 
     gpr_tls_set(&g_is_async_end2end_test, 1);
diff --git a/test/cpp/end2end/server_builder_plugin_test.cc b/test/cpp/end2end/server_builder_plugin_test.cc
new file mode 100644
index 0000000000..e42bd10832
--- /dev/null
+++ b/test/cpp/end2end/server_builder_plugin_test.cc
@@ -0,0 +1,234 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc++/channel.h>
+#include <grpc++/client_context.h>
+#include <grpc++/create_channel.h>
+#include <grpc++/impl/server_builder_option.h>
+#include <grpc++/impl/server_builder_plugin.h>
+#include <grpc++/impl/server_initializer.h>
+#include <grpc++/security/credentials.h>
+#include <grpc++/security/server_credentials.h>
+#include <grpc++/server.h>
+#include <grpc++/server_builder.h>
+#include <grpc++/server_context.h>
+#include <grpc/grpc.h>
+#include <gtest/gtest.h>
+
+#include "src/proto/grpc/testing/echo.grpc.pb.h"
+#include "test/core/util/port.h"
+#include "test/core/util/test_config.h"
+#include "test/cpp/end2end/test_service_impl.h"
+
+#define PLUGIN_NAME "TestServerBuilderPlugin"
+
+namespace grpc {
+namespace testing {
+
+class TestServerBuilderPlugin : public ServerBuilderPlugin {
+ public:
+  TestServerBuilderPlugin() : service_(new TestServiceImpl()) {
+    init_server_is_called_ = false;
+    finish_is_called_ = false;
+    change_arguments_is_called_ = false;
+  }
+
+  grpc::string name() GRPC_OVERRIDE { return PLUGIN_NAME; }
+
+  void InitServer(ServerInitializer* si) GRPC_OVERRIDE {
+    init_server_is_called_ = true;
+    if (register_service_) {
+      si->RegisterService(service_);
+    }
+  }
+
+  void Finish(ServerInitializer* si) GRPC_OVERRIDE { finish_is_called_ = true; }
+
+  void ChangeArguments(const grpc::string& name, void* value) GRPC_OVERRIDE {
+    change_arguments_is_called_ = true;
+  }
+
+  bool has_async_methods() const GRPC_OVERRIDE { return register_service_; }
+
+  bool has_sync_methods() const GRPC_OVERRIDE { return register_service_; }
+
+  void SetRegisterService() { register_service_ = true; }
+
+  bool init_server_is_called() { return init_server_is_called_; }
+  bool finish_is_called() { return finish_is_called_; }
+  bool change_arguments_is_called() { return change_arguments_is_called_; }
+
+ private:
+  bool init_server_is_called_;
+  bool finish_is_called_;
+  bool change_arguments_is_called_;
+  bool register_service_;
+  std::shared_ptr<TestServiceImpl> service_;
+};
+
+class InsertPluginServerBuilderOption : public ServerBuilderOption {
+ public:
+  InsertPluginServerBuilderOption() { register_service_ = false; }
+
+  void UpdateArguments(ChannelArguments* arg) GRPC_OVERRIDE {}
+
+  void UpdatePlugins(
+      std::map<grpc::string, std::unique_ptr<ServerBuilderPlugin>>* plugins)
+      GRPC_OVERRIDE {
+    std::unique_ptr<TestServerBuilderPlugin> plugin(
+        new TestServerBuilderPlugin());
+    if (register_service_) plugin->SetRegisterService();
+    (*plugins)[plugin->name()] = std::move(plugin);
+  }
+
+  void SetRegisterService() { register_service_ = true; }
+
+ private:
+  bool register_service_;
+};
+
+namespace sBPTestServerBuilderPlugin {
+
+std::unique_ptr<ServerBuilderPlugin> CreateTestServerBuilderPlugin() {
+  return std::unique_ptr<ServerBuilderPlugin>(new TestServerBuilderPlugin());
+}
+
+}  // namespace sBPTestServerBuilderPlugin
+
+class ServerBuilderPluginTest : public ::testing::TestWithParam<bool> {
+ public:
+  ServerBuilderPluginTest() {}
+
+  void SetUp() GRPC_OVERRIDE {
+    port_ = grpc_pick_unused_port_or_die();
+    builder_.reset(new ServerBuilder());
+  }
+
+  void InsertPlugin() {
+    if (GetParam()) {
+      // Add ServerBuilder plugin directly
+      INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
+      EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
+    } else {
+      // Add ServerBuilder plugin using ServerBuilder::SetOption()
+      builder_->SetOption(std::unique_ptr<ServerBuilderOption>(
+          new InsertPluginServerBuilderOption()));
+    }
+  }
+
+  void InsertPluginWithTestService() {
+    if (GetParam()) {
+      // Add ServerBuilder plugin directly
+      INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
+      EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
+      auto plugin = static_cast<TestServerBuilderPlugin*>(
+          builder_->plugins_[PLUGIN_NAME].get());
+      EXPECT_TRUE(plugin != nullptr);
+      plugin->SetRegisterService();
+    } else {
+      // Add ServerBuilder plugin using ServerBuilder::SetOption()
+      std::unique_ptr<InsertPluginServerBuilderOption> option(
+          new InsertPluginServerBuilderOption());
+      option->SetRegisterService();
+      builder_->SetOption(std::move(option));
+    }
+  }
+
+  void StartServer() {
+    grpc::string server_address = "localhost:" + to_string(port_);
+    builder_->AddListeningPort(server_address, InsecureServerCredentials());
+    server_ = builder_->BuildAndStart();
+    EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
+  }
+
+  void ResetStub() {
+    string target = "dns:localhost:" + to_string(port_);
+    channel_ = CreateChannel(target, InsecureChannelCredentials());
+    stub_ = grpc::testing::EchoTestService::NewStub(channel_);
+  }
+
+  void TearDown() GRPC_OVERRIDE {
+    EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
+    auto plugin = static_cast<TestServerBuilderPlugin*>(
+        builder_->plugins_[PLUGIN_NAME].get());
+    EXPECT_TRUE(plugin != nullptr);
+    EXPECT_TRUE(plugin->init_server_is_called());
+    EXPECT_TRUE(plugin->finish_is_called());
+  }
+
+  string to_string(const int number) {
+    std::stringstream strs;
+    strs << number;
+    return strs.str();
+  }
+
+ protected:
+  std::shared_ptr<Channel> channel_;
+  std::unique_ptr<ServerBuilder> builder_;
+  std::unique_ptr<grpc::testing::EchoTestService::Stub> stub_;
+  std::unique_ptr<Server> server_;
+  TestServiceImpl service_;
+  int port_;
+};
+
+TEST_P(ServerBuilderPluginTest, PluginWithoutServiceTest) {
+  InsertPlugin();
+  StartServer();
+}
+
+TEST_P(ServerBuilderPluginTest, PluginWithServiceTest) {
+  InsertPluginWithTestService();
+  StartServer();
+  ResetStub();
+
+  EchoRequest request;
+  EchoResponse response;
+  request.set_message("Hello hello hello hello");
+  ClientContext context;
+  context.set_compression_algorithm(GRPC_COMPRESS_GZIP);
+  Status s = stub_->Echo(&context, request, &response);
+  EXPECT_EQ(response.message(), request.message());
+  EXPECT_TRUE(s.ok());
+}
+
+INSTANTIATE_TEST_CASE_P(ServerBuilderPluginTest, ServerBuilderPluginTest,
+                        ::testing::Values(false, true));
+
+}  // namespace testing
+}  // namespace grpc
+
+int main(int argc, char** argv) {
+  grpc_test_init(argc, argv);
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 7dc0496047..3fff7bcd50 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -777,6 +777,8 @@ include/grpc++/impl/rpc_method.h \
 include/grpc++/impl/rpc_service_method.h \
 include/grpc++/impl/serialization_traits.h \
 include/grpc++/impl/server_builder_option.h \
+include/grpc++/impl/server_builder_plugin.h \
+include/grpc++/impl/server_initializer.h \
 include/grpc++/impl/service_type.h \
 include/grpc++/impl/sync.h \
 include/grpc++/impl/sync_cxx11.h \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 312fd17cb2..56f51f61cb 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -777,6 +777,8 @@ include/grpc++/impl/rpc_method.h \
 include/grpc++/impl/rpc_service_method.h \
 include/grpc++/impl/serialization_traits.h \
 include/grpc++/impl/server_builder_option.h \
+include/grpc++/impl/server_builder_plugin.h \
+include/grpc++/impl/server_initializer.h \
 include/grpc++/impl/service_type.h \
 include/grpc++/impl/sync.h \
 include/grpc++/impl/sync_cxx11.h \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index f546f3b995..d2931269b2 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -2588,6 +2588,24 @@
     "third_party": false, 
     "type": "target"
   }, 
+  {
+    "deps": [
+      "gpr", 
+      "gpr_test_util", 
+      "grpc", 
+      "grpc++", 
+      "grpc++_test_util", 
+      "grpc_test_util"
+    ], 
+    "headers": [], 
+    "language": "c++", 
+    "name": "server_builder_plugin_test", 
+    "src": [
+      "test/cpp/end2end/server_builder_plugin_test.cc"
+    ], 
+    "third_party": false, 
+    "type": "target"
+  }, 
   {
     "deps": [
       "gpr", 
@@ -6326,6 +6344,8 @@
       "include/grpc++/impl/rpc_service_method.h", 
       "include/grpc++/impl/serialization_traits.h", 
       "include/grpc++/impl/server_builder_option.h", 
+      "include/grpc++/impl/server_builder_plugin.h", 
+      "include/grpc++/impl/server_initializer.h", 
       "include/grpc++/impl/service_type.h", 
       "include/grpc++/impl/sync.h", 
       "include/grpc++/impl/sync_cxx11.h", 
@@ -6376,6 +6396,8 @@
       "include/grpc++/impl/rpc_service_method.h", 
       "include/grpc++/impl/serialization_traits.h", 
       "include/grpc++/impl/server_builder_option.h", 
+      "include/grpc++/impl/server_builder_plugin.h", 
+      "include/grpc++/impl/server_initializer.h", 
       "include/grpc++/impl/service_type.h", 
       "include/grpc++/impl/sync.h", 
       "include/grpc++/impl/sync_cxx11.h", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 0fd77854d2..c7b85de4d2 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -2448,6 +2448,27 @@
       "posix"
     ]
   }, 
+  {
+    "args": [], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "gtest": true, 
+    "language": "c++", 
+    "name": "server_builder_plugin_test", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ]
+  }, 
   {
     "args": [], 
     "ci_platforms": [
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index 29cab37d52..729631d28d 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -275,6 +275,8 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\rpc_service_method.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\serialization_traits.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_option.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_plugin.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_initializer.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\service_type.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\sync.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\sync_cxx11.h" />
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index 15e2807fd4..6c135b22f3 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -147,6 +147,12 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_option.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_plugin.h">
+      <Filter>include\grpc++\impl</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_initializer.h">
+      <Filter>include\grpc++\impl</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\service_type.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index fcda361ef1..9465d2ac42 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -275,6 +275,8 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\rpc_service_method.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\serialization_traits.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_option.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_plugin.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_initializer.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\service_type.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\sync.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\sync_cxx11.h" />
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 1dc95f985a..6cb4a6c89d 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -132,6 +132,12 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_option.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_builder_plugin.h">
+      <Filter>include\grpc++\impl</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\server_initializer.h">
+      <Filter>include\grpc++\impl</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\service_type.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
diff --git a/vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj b/vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj
new file mode 100644
index 0000000000..0ebdd98817
--- /dev/null
+++ b/vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{86751DC8-C8D9-57B6-2C8A-BB33021C773C}</ProjectGuid>
+    <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+    <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+    <PlatformToolset>v100</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(SolutionDir)\..\vsprojects\cpptest.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\openssl.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\protobuf.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\zlib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <TargetName>server_builder_plugin_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <TargetName>server_builder_plugin_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Release</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Release</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\test\cpp\end2end\server_builder_plugin_test.cc">
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_util\grpc++_test_util.vcxproj">
+      <Project>{0BE77741-552A-929B-A497-4EF7ECE17A64}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
+      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  </ImportGroup>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
+  </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj.filters b/vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj.filters
new file mode 100644
index 0000000000..629b913fc6
--- /dev/null
+++ b/vsprojects/vcxproj/test/server_builder_plugin_test/server_builder_plugin_test.vcxproj.filters
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\test\cpp\end2end\server_builder_plugin_test.cc">
+      <Filter>test\cpp\end2end</Filter>
+    </ClCompile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Filter Include="test">
+      <UniqueIdentifier>{37b2ebc1-b2f2-ecb9-37b7-f6d757bb99e3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\cpp">
+      <UniqueIdentifier>{39400fed-f7b7-0f44-0ef3-ba3693d42011}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\cpp\end2end">
+      <UniqueIdentifier>{dab9dd19-3e5b-005e-4b5a-456de6111d71}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
+
-- 
GitLab


From 00598719bcf40a95505f2deeb53906c5944373fd Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Fri, 29 Apr 2016 13:38:50 -0700
Subject: [PATCH 263/525] Use HTTP/2 MAX_HEADER_LIST_SIZE setting instead of
 adding a new member in the grpc_chttp2_transport_parsing struct.

---
 .../transport/chttp2/transport/chttp2_transport.c  | 11 ++++-------
 .../transport/chttp2/transport/frame_settings.c    |  3 ++-
 src/core/ext/transport/chttp2/transport/internal.h |  3 ---
 src/core/ext/transport/chttp2/transport/parsing.c  | 14 ++++++++++++--
 4 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index b73ec2a7e9..6314786525 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -56,8 +56,6 @@
 #define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
 #define MAX_WINDOW 0x7fffffffu
 
-#define DEFAULT_MAX_METADATA_SIZE 16 * 1024
-
 #define MAX_CLIENT_STREAM_ID 0x7fffffffu
 
 int grpc_http_trace = 0;
@@ -67,8 +65,8 @@ int grpc_flowctl_trace = 0;
   ((grpc_chttp2_transport *)((char *)(tw)-offsetof(grpc_chttp2_transport, \
                                                    writing)))
 
-#define TRANSPORT_FROM_PARSING(tw)                                        \
-  ((grpc_chttp2_transport *)((char *)(tw)-offsetof(grpc_chttp2_transport, \
+#define TRANSPORT_FROM_PARSING(tp)                                        \
+  ((grpc_chttp2_transport *)((char *)(tp)-offsetof(grpc_chttp2_transport, \
                                                    parsing)))
 
 #define TRANSPORT_FROM_GLOBAL(tg)                                         \
@@ -252,7 +250,6 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
   t->global.ping_counter = 1;
   t->global.pings.next = t->global.pings.prev = &t->global.pings;
   t->parsing.is_client = is_client;
-  t->parsing.max_metadata_size = DEFAULT_MAX_METADATA_SIZE;
   t->parsing.deframe_state =
       is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0;
   t->writing.is_client = is_client;
@@ -384,8 +381,8 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
           gpr_log(GPR_ERROR, "%s: must be non-negative",
                   GRPC_ARG_MAX_METADATA_SIZE);
         } else {
-          t->parsing.max_metadata_size =
-              (uint32_t)channel_args->args[i].value.integer;
+          push_setting(t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
+                       (uint32_t)channel_args->args[i].value.integer);
         }
       }
     }
diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.c b/src/core/ext/transport/chttp2/transport/frame_settings.c
index a3c1e15f35..7fa66247e4 100644
--- a/src/core/ext/transport/chttp2/transport/frame_settings.c
+++ b/src/core/ext/transport/chttp2/transport/frame_settings.c
@@ -44,6 +44,7 @@
 #include "src/core/ext/transport/chttp2/transport/http2_errors.h"
 #include "src/core/lib/debug/trace.h"
 
+#define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
 #define MAX_MAX_HEADER_LIST_SIZE (1024 * 1024 * 1024)
 
 /* HTTP/2 mandated initial connection settings */
@@ -62,7 +63,7 @@ const grpc_chttp2_setting_parameters
          GRPC_CHTTP2_FLOW_CONTROL_ERROR},
         {"MAX_FRAME_SIZE", 16384, 16384, 16777215,
          GRPC_CHTTP2_DISCONNECT_ON_INVALID_VALUE, GRPC_CHTTP2_PROTOCOL_ERROR},
-        {"MAX_HEADER_LIST_SIZE", MAX_MAX_HEADER_LIST_SIZE, 0,
+        {"MAX_HEADER_LIST_SIZE", DEFAULT_MAX_HEADER_LIST_SIZE, 0,
          MAX_MAX_HEADER_LIST_SIZE, GRPC_CHTTP2_CLAMP_INVALID_VALUE,
          GRPC_CHTTP2_PROTOCOL_ERROR},
 };
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index be38ffda1f..2884b3be9b 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -229,9 +229,6 @@ struct grpc_chttp2_transport_parsing {
   /** is this transport a client? (boolean) */
   uint8_t is_client;
 
-  /** max metadata size */
-  uint32_t max_metadata_size;
-
   /** were settings updated? */
   uint8_t settings_updated;
   /** was a settings ack received? */
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index 11cbb80ca8..f101873337 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -45,6 +45,10 @@
 #include "src/core/lib/profiling/timers.h"
 #include "src/core/lib/transport/static_metadata.h"
 
+#define TRANSPORT_FROM_PARSING(tp)                                        \
+  ((grpc_chttp2_transport *)((char *)(tp)-offsetof(grpc_chttp2_transport, \
+                                                   parsing)))
+
 static int init_frame_parser(grpc_exec_ctx *exec_ctx,
                              grpc_chttp2_transport_parsing *transport_parsing);
 static int init_header_frame_parser(
@@ -628,7 +632,10 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
   } else {
     const size_t new_size = stream_parsing->metadata_buffer[0].size +
                             GRPC_MDELEM_LENGTH(md);
-    if (new_size > transport_parsing->max_metadata_size) {
+    grpc_chttp2_transport_global *transport_global =
+        &TRANSPORT_FROM_PARSING(transport_parsing)->global;
+    if (new_size > transport_global->settings
+            [GRPC_LOCAL_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE]) {
       stream_parsing->seen_error = true;
       stream_parsing->exceeded_metadata_size = true;
       GRPC_MDELEM_UNREF(md);
@@ -664,7 +671,10 @@ static void on_trailing_header(void *tp, grpc_mdelem *md) {
 
   const size_t new_size = stream_parsing->metadata_buffer[1].size +
                           GRPC_MDELEM_LENGTH(md);
-  if (new_size > transport_parsing->max_metadata_size) {
+  grpc_chttp2_transport_global *transport_global =
+      &TRANSPORT_FROM_PARSING(transport_parsing)->global;
+  if (new_size > transport_global->settings
+          [GRPC_LOCAL_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE]) {
     stream_parsing->seen_error = true;
     stream_parsing->exceeded_metadata_size = true;
     GRPC_MDELEM_UNREF(md);
-- 
GitLab


From 018bf1a8649e5036dba04343db6e4cd668eb3e24 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 29 Apr 2016 13:39:17 -0700
Subject: [PATCH 264/525] modified has_async_methods and has_sync_methods of
 TestServerBuilderPlugin

---
 test/cpp/end2end/server_builder_plugin_test.cc | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/test/cpp/end2end/server_builder_plugin_test.cc b/test/cpp/end2end/server_builder_plugin_test.cc
index e42bd10832..bebf1d1979 100644
--- a/test/cpp/end2end/server_builder_plugin_test.cc
+++ b/test/cpp/end2end/server_builder_plugin_test.cc
@@ -78,9 +78,19 @@ class TestServerBuilderPlugin : public ServerBuilderPlugin {
     change_arguments_is_called_ = true;
   }
 
-  bool has_async_methods() const GRPC_OVERRIDE { return register_service_; }
+  bool has_async_methods() const GRPC_OVERRIDE {
+    if (register_service_) {
+      return service_->has_async_methods();
+    }
+    return false;
+  }
 
-  bool has_sync_methods() const GRPC_OVERRIDE { return register_service_; }
+  bool has_sync_methods() const GRPC_OVERRIDE {
+    if (register_service_) {
+      return service_->has_synchronous_methods();
+    }
+    return false;
+  }
 
   void SetRegisterService() { register_service_ = true; }
 
-- 
GitLab


From c049035bedad8e013a439bf2934d01e616da4227 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 29 Apr 2016 14:05:08 -0700
Subject: [PATCH 265/525] Add GRPC_ prefix for macros

---
 include/grpc++/impl/server_builder_plugin.h    | 4 ++--
 test/cpp/end2end/server_builder_plugin_test.cc | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/grpc++/impl/server_builder_plugin.h b/include/grpc++/impl/server_builder_plugin.h
index 2cf1dfdbec..7cf369e346 100644
--- a/include/grpc++/impl/server_builder_plugin.h
+++ b/include/grpc++/impl/server_builder_plugin.h
@@ -64,12 +64,12 @@ class ServerBuilderPlugin {
 
 }  // namespace grpc
 
-#define DECLARE_PLUGIN(plugin_name)                                    \
+#define GRPC_DECLARE_PLUGIN(plugin_name)                               \
   namespace sBP##plugin_name {                                         \
     extern std::unique_ptr<ServerBuilderPlugin> Create##plugin_name(); \
   }
 
-#define INIT_PLUGIN(map, plugin_name)             \
+#define GRPC_INIT_PLUGIN(map, plugin_name)        \
   {                                               \
     std::unique_ptr<ServerBuilderPlugin> plugin = \
         sBP##plugin_name::Create##plugin_name();  \
diff --git a/test/cpp/end2end/server_builder_plugin_test.cc b/test/cpp/end2end/server_builder_plugin_test.cc
index bebf1d1979..9ed176d29d 100644
--- a/test/cpp/end2end/server_builder_plugin_test.cc
+++ b/test/cpp/end2end/server_builder_plugin_test.cc
@@ -147,7 +147,7 @@ class ServerBuilderPluginTest : public ::testing::TestWithParam<bool> {
   void InsertPlugin() {
     if (GetParam()) {
       // Add ServerBuilder plugin directly
-      INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
+      GRPC_INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
       EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
     } else {
       // Add ServerBuilder plugin using ServerBuilder::SetOption()
@@ -159,7 +159,7 @@ class ServerBuilderPluginTest : public ::testing::TestWithParam<bool> {
   void InsertPluginWithTestService() {
     if (GetParam()) {
       // Add ServerBuilder plugin directly
-      INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
+      GRPC_INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
       EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
       auto plugin = static_cast<TestServerBuilderPlugin*>(
           builder_->plugins_[PLUGIN_NAME].get());
-- 
GitLab


From eadcb89b7ac37207a945a520b99eb24de1513bc8 Mon Sep 17 00:00:00 2001
From: "David G. Quintas" <dgq@google.com>
Date: Fri, 29 Apr 2016 14:54:31 -0700
Subject: [PATCH 266/525] Fixed name of test config for h2_census

---
 test/core/end2end/fixtures/h2_census.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/core/end2end/fixtures/h2_census.c b/test/core/end2end/fixtures/h2_census.c
index ff2f028f09..e46b39e476 100644
--- a/test/core/end2end/fixtures/h2_census.c
+++ b/test/core/end2end/fixtures/h2_census.c
@@ -111,7 +111,7 @@ void chttp2_tear_down_fullstack(grpc_end2end_test_fixture *f) {
 
 /* All test configurations */
 static grpc_end2end_test_config configs[] = {
-    {"chttp2/fullstack", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION,
+    {"chttp2/fullstack+census", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION,
      chttp2_create_fixture_fullstack, chttp2_init_client_fullstack,
      chttp2_init_server_fullstack, chttp2_tear_down_fullstack},
 };
-- 
GitLab


From 9fab4386695eb5575b943b0d1fec8141aec72ea1 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 29 Apr 2016 15:05:00 -0700
Subject: [PATCH 267/525] Made Node tests support multiple versions and set the
 Node default version to 4 everywhere possible

---
 templates/tools/dockerfile/node_deps.include         |  4 ++++
 .../interoptest/grpc_interop_node/Dockerfile         |  5 ++++-
 .../interoptest/grpc_interop_node/build_interop.sh   |  2 --
 .../stress_test/grpc_interop_stress_node/Dockerfile  |  5 ++++-
 .../grpc_interop_stress_node/build_interop_stress.sh |  2 --
 .../dockerfile/test/multilang_jessie_x64/Dockerfile  |  5 ++++-
 tools/dockerfile/test/node_jessie_x64/Dockerfile     |  5 ++++-
 tools/run_tests/run_tests.py                         | 12 +++++++++---
 8 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/templates/tools/dockerfile/node_deps.include b/templates/tools/dockerfile/node_deps.include
index 7d37d67146..7855fbfee3 100644
--- a/templates/tools/dockerfile/node_deps.include
+++ b/templates/tools/dockerfile/node_deps.include
@@ -4,4 +4,8 @@
 # Install nvm
 RUN touch .profile
 RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
 RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
\ No newline at end of file
diff --git a/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile b/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
index 64314f8864..2a8d35a5dc 100644
--- a/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
+++ b/tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
@@ -69,8 +69,11 @@ RUN apt-get update && apt-get install -y time && apt-get clean
 # Install nvm
 RUN touch .profile
 RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
 RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
-
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
 # Prepare ccache
 RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
 RUN ln -s /usr/bin/ccache /usr/local/bin/g++
diff --git a/tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh b/tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh
index b99fd444ee..976f55d9ab 100755
--- a/tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh
+++ b/tools/dockerfile/interoptest/grpc_interop_node/build_interop.sh
@@ -38,8 +38,6 @@ git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
 cp -r /var/local/jenkins/service_account $HOME || true
 
 cd /var/local/git/grpc
-nvm use 0.12
-nvm alias default 0.12  # prevent the need to run 'nvm use' in every shell
 
 # build Node interop client & server
 npm install -g node-gyp
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile
index f70add4e31..4fd7cc29a3 100644
--- a/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_node/Dockerfile
@@ -69,8 +69,11 @@ RUN apt-get update && apt-get install -y time && apt-get clean
 # Install nvm
 RUN touch .profile
 RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
 RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
-
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
 # Google Cloud platform API libraries
 RUN apt-get update && apt-get install -y python-pip && apt-get clean
 RUN pip install --upgrade google-api-python-client
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh
index b99fd444ee..976f55d9ab 100755
--- a/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_node/build_interop_stress.sh
@@ -38,8 +38,6 @@ git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
 cp -r /var/local/jenkins/service_account $HOME || true
 
 cd /var/local/git/grpc
-nvm use 0.12
-nvm alias default 0.12  # prevent the need to run 'nvm use' in every shell
 
 # build Node interop client & server
 npm install -g node-gyp
diff --git a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
index 71ebf2bf71..5c3f77405e 100644
--- a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
+++ b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile
@@ -90,8 +90,11 @@ RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev c
 # Install nvm
 RUN touch .profile
 RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
 RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
-
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
 #=================
 # PHP dependencies
 
diff --git a/tools/dockerfile/test/node_jessie_x64/Dockerfile b/tools/dockerfile/test/node_jessie_x64/Dockerfile
index 64314f8864..2a8d35a5dc 100644
--- a/tools/dockerfile/test/node_jessie_x64/Dockerfile
+++ b/tools/dockerfile/test/node_jessie_x64/Dockerfile
@@ -69,8 +69,11 @@ RUN apt-get update && apt-get install -y time && apt-get clean
 # Install nvm
 RUN touch .profile
 RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+# Install all versions of node that we want to test
 RUN /bin/bash -l -c "nvm install 0.12 && npm config set cache /tmp/npm-cache"
-
+RUN /bin/bash -l -c "nvm install 4 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm install 5 && npm config set cache /tmp/npm-cache"
+RUN /bin/bash -l -c "nvm alias default 4"
 # Prepare ccache
 RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
 RUN ln -s /usr/bin/ccache /usr/local/bin/g++
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index dea481ef90..d50d5aac95 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -272,12 +272,17 @@ class NodeLanguage(object):
 
   def __init__(self):
     self.platform = platform_string()
-    self.node_version = '0.12'
 
   def configure(self, config, args):
     self.config = config
     self.args = args
-    _check_compiler(self.args.compiler, ['default'])
+    _check_compiler(self.args.compiler, ['default', 'node0.12',
+                                         'node4', 'node5'])
+    if self.args.compiler == 'default':
+      self.node_version = '4'
+    else:
+      # Take off the word "node"
+      self.node_version = self.args.compiler[4:]
 
   def test_specs(self):
     if self.platform == 'windows':
@@ -802,7 +807,8 @@ argp.add_argument('--compiler',
                            'gcc4.4', 'gcc4.9', 'gcc5.3',
                            'clang3.4', 'clang3.6',
                            'vs2010', 'vs2013', 'vs2015',
-                           'python2.7', 'python3.4'],
+                           'python2.7', 'python3.4',
+                           'node0.12', 'node4', 'node5'],
                   default='default',
                   help='Selects compiler to use. Allowed values depend on the platform and language.')
 argp.add_argument('--build_only',
-- 
GitLab


From c7edb0ee1022bd31104e2fff4d5d4fb1ef776a20 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 29 Apr 2016 15:33:31 -0700
Subject: [PATCH 268/525] Reverted 'Rewrite Node greeter example to use
 generated code'

---
 examples/node/greeter_client.js     |  22 +-
 examples/node/greeter_server.js     |  12 +-
 examples/node/helloworld_grpc_pb.js |  39 ----
 examples/node/helloworld_pb.js      | 332 ----------------------------
 examples/node/package.json          |   1 -
 5 files changed, 12 insertions(+), 394 deletions(-)
 delete mode 100644 examples/node/helloworld_grpc_pb.js
 delete mode 100644 examples/node/helloworld_pb.js

diff --git a/examples/node/greeter_client.js b/examples/node/greeter_client.js
index 7125c2fec5..2820acbbb7 100644
--- a/examples/node/greeter_client.js
+++ b/examples/node/greeter_client.js
@@ -31,30 +31,22 @@
  *
  */
 
-var grpc = require('grpc');
+var PROTO_PATH = __dirname + '/../protos/helloworld.proto';
 
-var hello_messages = require('./helloworld_pb');
-var hello_service = require('./helloworld_grpc_pb');
+var grpc = require('grpc');
+var hello_proto = grpc.load(PROTO_PATH).helloworld;
 
 function main() {
-  var client = new hello_service.GreeterClient('localhost:50051',
-                                               grpc.credentials.createInsecure());
+  var client = new hello_proto.Greeter('localhost:50051',
+                                       grpc.credentials.createInsecure());
   var user;
   if (process.argv.length >= 3) {
     user = process.argv[2];
   } else {
     user = 'world';
   }
-
-  var request = new hello_messages.HelloRequest();
-  request.setName(user);
-
-  client.sayHello(request, function(err, response) {
-    if (err) {
-      debugger;
-      throw err;
-    }
-    console.log('Greeting:', response.getMessage());
+  client.sayHello({name: user}, function(err, response) {
+    console.log('Greeting:', response.message);
   });
 }
 
diff --git a/examples/node/greeter_server.js b/examples/node/greeter_server.js
index a4aebf6d09..e7ad51f600 100644
--- a/examples/node/greeter_server.js
+++ b/examples/node/greeter_server.js
@@ -31,18 +31,16 @@
  *
  */
 
-var grpc = require('grpc');
+var PROTO_PATH = __dirname + '/../protos/helloworld.proto';
 
-var hello_messages = require('./helloworld_pb');
-var hello_service = require('./helloworld_grpc_pb');
+var grpc = require('grpc');
+var hello_proto = grpc.load(PROTO_PATH).helloworld;
 
 /**
  * Implements the SayHello RPC method.
  */
 function sayHello(call, callback) {
-  var reply = new hello_messages.HelloReply();
-  reply.setMessage("Hello " + call.request.getName());
-  callback(null, reply);
+  callback(null, {message: 'Hello ' + call.request.name});
 }
 
 /**
@@ -51,7 +49,7 @@ function sayHello(call, callback) {
  */
 function main() {
   var server = new grpc.Server();
-  server.addService(hello_service.GreeterService, {sayHello: sayHello});
+  server.addProtoService(hello_proto.Greeter.service, {sayHello: sayHello});
   server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
   server.start();
 }
diff --git a/examples/node/helloworld_grpc_pb.js b/examples/node/helloworld_grpc_pb.js
deleted file mode 100644
index 3d070d7de0..0000000000
--- a/examples/node/helloworld_grpc_pb.js
+++ /dev/null
@@ -1,39 +0,0 @@
-// GENERATED CODE -- DO NOT EDIT!
-
-var grpc = require('grpc');
-var helloworld_pb = require('./helloworld_pb.js');
-
-function serialize_HelloReply(arg) {
-  if (!(arg instanceof helloworld_pb.HelloReply)) {
-    throw new Error('Expected argument of type HelloReply');
-  }
-  return new Buffer(arg.serializeBinary());
-}
-function deserialize_HelloReply(buffer_arg) {
-  return helloworld_pb.HelloReply.deserializeBinary(new Uint8Array(buffer_arg));
-}
-function serialize_HelloRequest(arg) {
-  if (!(arg instanceof helloworld_pb.HelloRequest)) {
-    throw new Error('Expected argument of type HelloRequest');
-  }
-  return new Buffer(arg.serializeBinary());
-}
-function deserialize_HelloRequest(buffer_arg) {
-  return helloworld_pb.HelloRequest.deserializeBinary(new Uint8Array(buffer_arg));
-}
-
-var GreeterService = exports.GreeterService = {
-  sayHello: {
-    path: '/helloworld.Greeter/SayHello',
-    requestStream: false,
-    responseStream: false,
-    requestType: helloworld_pb.HelloRequest,
-    responseType: helloworld_pb.HelloReply,
-    requestSerialize: serialize_HelloRequest,
-    requestDeserialize: deserialize_HelloRequest,
-    responseSerialize: serialize_HelloReply,
-    responseDeserialize: deserialize_HelloReply,
-  },
-};
-
-exports.GreeterClient = grpc.makeGenericClientConstructor(GreeterService);
diff --git a/examples/node/helloworld_pb.js b/examples/node/helloworld_pb.js
deleted file mode 100644
index 6405bd90f1..0000000000
--- a/examples/node/helloworld_pb.js
+++ /dev/null
@@ -1,332 +0,0 @@
-/**
- * @fileoverview
- * @enhanceable
- * @public
- */
-// GENERATED CODE -- DO NOT EDIT!
-
-var jspb = require('google-protobuf');
-var goog = jspb;
-var global = Function('return this')();
-
-goog.exportSymbol('proto.helloworld.HelloReply', null, global);
-goog.exportSymbol('proto.helloworld.HelloRequest', null, global);
-
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.helloworld.HelloRequest = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.helloworld.HelloRequest, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  proto.helloworld.HelloRequest.displayName = 'proto.helloworld.HelloRequest';
-}
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.helloworld.HelloRequest.prototype.toObject = function(opt_includeInstance) {
-  return proto.helloworld.HelloRequest.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.helloworld.HelloRequest} msg The msg instance to transform.
- * @return {!Object}
- */
-proto.helloworld.HelloRequest.toObject = function(includeInstance, msg) {
-  var f, obj = {
-    name: msg.getName()
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.helloworld.HelloRequest}
- */
-proto.helloworld.HelloRequest.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.helloworld.HelloRequest;
-  return proto.helloworld.HelloRequest.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.helloworld.HelloRequest} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.helloworld.HelloRequest}
- */
-proto.helloworld.HelloRequest.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setName(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.helloworld.HelloRequest} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.helloworld.HelloRequest.serializeBinaryToWriter = function(message, writer) {
-  message.serializeBinaryToWriter(writer);
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.helloworld.HelloRequest.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  this.serializeBinaryToWriter(writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
- * @param {!jspb.BinaryWriter} writer
- */
-proto.helloworld.HelloRequest.prototype.serializeBinaryToWriter = function (writer) {
-  var f = undefined;
-  f = this.getName();
-  if (f.length > 0) {
-    writer.writeString(
-      1,
-      f
-    );
-  }
-};
-
-
-/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.helloworld.HelloRequest} The clone.
- */
-proto.helloworld.HelloRequest.prototype.cloneMessage = function() {
-  return /** @type {!proto.helloworld.HelloRequest} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
- * optional string name = 1;
- * @return {string}
- */
-proto.helloworld.HelloRequest.prototype.getName = function() {
-  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
-};
-
-
-/** @param {string} value  */
-proto.helloworld.HelloRequest.prototype.setName = function(value) {
-  jspb.Message.setField(this, 1, value);
-};
-
-
-
-/**
- * Generated by JsPbCodeGenerator.
- * @param {Array=} opt_data Optional initial data array, typically from a
- * server response, or constructed directly in Javascript. The array is used
- * in place and becomes part of the constructed object. It is not cloned.
- * If no data is provided, the constructed object will be empty, but still
- * valid.
- * @extends {jspb.Message}
- * @constructor
- */
-proto.helloworld.HelloReply = function(opt_data) {
-  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
-};
-goog.inherits(proto.helloworld.HelloReply, jspb.Message);
-if (goog.DEBUG && !COMPILED) {
-  proto.helloworld.HelloReply.displayName = 'proto.helloworld.HelloReply';
-}
-
-
-if (jspb.Message.GENERATE_TO_OBJECT) {
-/**
- * Creates an object representation of this proto suitable for use in Soy templates.
- * Field names that are reserved in JavaScript and will be renamed to pb_name.
- * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
- * For the list of reserved names please see:
- *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
- * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
- *     for transitional soy proto support: http://goto/soy-param-migration
- * @return {!Object}
- */
-proto.helloworld.HelloReply.prototype.toObject = function(opt_includeInstance) {
-  return proto.helloworld.HelloReply.toObject(opt_includeInstance, this);
-};
-
-
-/**
- * Static version of the {@see toObject} method.
- * @param {boolean|undefined} includeInstance Whether to include the JSPB
- *     instance for transitional soy proto support:
- *     http://goto/soy-param-migration
- * @param {!proto.helloworld.HelloReply} msg The msg instance to transform.
- * @return {!Object}
- */
-proto.helloworld.HelloReply.toObject = function(includeInstance, msg) {
-  var f, obj = {
-    message: msg.getMessage()
-  };
-
-  if (includeInstance) {
-    obj.$jspbMessageInstance = msg
-  }
-  return obj;
-};
-}
-
-
-/**
- * Deserializes binary data (in protobuf wire format).
- * @param {jspb.ByteSource} bytes The bytes to deserialize.
- * @return {!proto.helloworld.HelloReply}
- */
-proto.helloworld.HelloReply.deserializeBinary = function(bytes) {
-  var reader = new jspb.BinaryReader(bytes);
-  var msg = new proto.helloworld.HelloReply;
-  return proto.helloworld.HelloReply.deserializeBinaryFromReader(msg, reader);
-};
-
-
-/**
- * Deserializes binary data (in protobuf wire format) from the
- * given reader into the given message object.
- * @param {!proto.helloworld.HelloReply} msg The message object to deserialize into.
- * @param {!jspb.BinaryReader} reader The BinaryReader to use.
- * @return {!proto.helloworld.HelloReply}
- */
-proto.helloworld.HelloReply.deserializeBinaryFromReader = function(msg, reader) {
-  while (reader.nextField()) {
-    if (reader.isEndGroup()) {
-      break;
-    }
-    var field = reader.getFieldNumber();
-    switch (field) {
-    case 1:
-      var value = /** @type {string} */ (reader.readString());
-      msg.setMessage(value);
-      break;
-    default:
-      reader.skipField();
-      break;
-    }
-  }
-  return msg;
-};
-
-
-/**
- * Class method variant: serializes the given message to binary data
- * (in protobuf wire format), writing to the given BinaryWriter.
- * @param {!proto.helloworld.HelloReply} message
- * @param {!jspb.BinaryWriter} writer
- */
-proto.helloworld.HelloReply.serializeBinaryToWriter = function(message, writer) {
-  message.serializeBinaryToWriter(writer);
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format).
- * @return {!Uint8Array}
- */
-proto.helloworld.HelloReply.prototype.serializeBinary = function() {
-  var writer = new jspb.BinaryWriter();
-  this.serializeBinaryToWriter(writer);
-  return writer.getResultBuffer();
-};
-
-
-/**
- * Serializes the message to binary data (in protobuf wire format),
- * writing to the given BinaryWriter.
- * @param {!jspb.BinaryWriter} writer
- */
-proto.helloworld.HelloReply.prototype.serializeBinaryToWriter = function (writer) {
-  var f = undefined;
-  f = this.getMessage();
-  if (f.length > 0) {
-    writer.writeString(
-      1,
-      f
-    );
-  }
-};
-
-
-/**
- * Creates a deep clone of this proto. No data is shared with the original.
- * @return {!proto.helloworld.HelloReply} The clone.
- */
-proto.helloworld.HelloReply.prototype.cloneMessage = function() {
-  return /** @type {!proto.helloworld.HelloReply} */ (jspb.Message.cloneMessage(this));
-};
-
-
-/**
- * optional string message = 1;
- * @return {string}
- */
-proto.helloworld.HelloReply.prototype.getMessage = function() {
-  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
-};
-
-
-/** @param {string} value  */
-proto.helloworld.HelloReply.prototype.setMessage = function(value) {
-  jspb.Message.setField(this, 1, value);
-};
-
-
-goog.object.extend(exports, proto.helloworld);
diff --git a/examples/node/package.json b/examples/node/package.json
index 49ab74d318..d135df2464 100644
--- a/examples/node/package.json
+++ b/examples/node/package.json
@@ -4,7 +4,6 @@
   "dependencies": {
     "async": "^1.5.2",
     "grpc": "0.13.0",
-    "google-protobuf": "*",
     "lodash": "^4.6.1",
     "minimist": "^1.2.0"
   }
-- 
GitLab


From fad045004d5576a3f2d32f6d27b0fc285ff589d0 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 29 Apr 2016 16:43:46 -0700
Subject: [PATCH 269/525] debug logging fix

---
 src/core/ext/lb_policy/round_robin/round_robin.c           | 6 ++++--
 src/core/ext/transport/chttp2/transport/chttp2_transport.c | 3 ++-
 src/core/ext/transport/chttp2/transport/hpack_encoder.c    | 6 +++++-
 src/core/ext/transport/chttp2/transport/hpack_table.c      | 4 +++-
 4 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c
index 3f6051b892..dcdc0c6285 100644
--- a/src/core/ext/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/lb_policy/round_robin/round_robin.c
@@ -306,8 +306,10 @@ static void start_picking(grpc_exec_ctx *exec_ctx, round_robin_lb_policy *p) {
   size_t i;
   p->started_picking = 1;
 
-  gpr_log(GPR_DEBUG, "LB_POLICY: p=%p num_subchannels=%d", p,
-          p->num_subchannels);
+  if (grpc_lb_round_robin_trace) {
+    gpr_log(GPR_DEBUG, "LB_POLICY: p=%p num_subchannels=%d", p,
+            p->num_subchannels);
+  }
 
   for (i = 0; i < p->num_subchannels; i++) {
     subchannel_data *sd = p->subchannels[i];
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index fcf2abfe66..02ad0c0370 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -776,7 +776,8 @@ void grpc_chttp2_add_incoming_goaway(
     grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
     uint32_t goaway_error, gpr_slice goaway_text) {
   char *msg = gpr_dump_slice(goaway_text, GPR_DUMP_HEX | GPR_DUMP_ASCII);
-  gpr_log(GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg);
+  GRPC_CHTTP2_IF_TRACING(gpr_log(
+      GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg));
   gpr_free(msg);
   gpr_slice_unref(goaway_text);
   transport_global->seen_goaway = 1;
diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.c b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
index 555027c866..ebeee37f0d 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_encoder.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
@@ -63,6 +63,8 @@
 /* don't consider adding anything bigger than this to the hpack table */
 #define MAX_DECODER_SPACE_USAGE 512
 
+extern int grpc_http_trace;
+
 typedef struct {
   int is_first_frame;
   /* number of bytes in 'output' when we started the frame - used to calculate
@@ -532,7 +534,9 @@ void grpc_chttp2_hpack_compressor_set_max_table_size(
     }
   }
   c->advertise_table_size_change = 1;
-  gpr_log(GPR_DEBUG, "set max table size from encoder to %d", max_table_size);
+  if (grpc_http_trace) {
+    gpr_log(GPR_DEBUG, "set max table size from encoder to %d", max_table_size);
+  }
 }
 
 void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c,
diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.c b/src/core/ext/transport/chttp2/transport/hpack_table.c
index 4d64506de2..295f31c44f 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_table.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_table.c
@@ -253,7 +253,9 @@ void grpc_chttp2_hptbl_set_max_bytes(grpc_chttp2_hptbl *tbl,
   if (tbl->max_bytes == max_bytes) {
     return;
   }
-  gpr_log(GPR_DEBUG, "Update hpack parser max size to %d", max_bytes);
+  if (grpc_http_trace) {
+    gpr_log(GPR_DEBUG, "Update hpack parser max size to %d", max_bytes);
+  }
   while (tbl->mem_used > max_bytes) {
     evict1(tbl);
   }
-- 
GitLab


From 4ee1a627230c8564dfdab5247e8703e0eb10d5c8 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Fri, 29 Apr 2016 16:47:27 -0700
Subject: [PATCH 270/525] Stress test fixes

- properly fail a Read() on a stream if we fail to parse a protobuf
- fix an ordering problem with the chttp2 transport global lock, whereby
  a sequence of two operations could be swapped - this resulted in
  slices being returned to the upper layers in the wrong order,
  corrupting data
---
 include/grpc++/impl/codegen/call.h              |  7 +++----
 .../chttp2/transport/chttp2_transport.c         | 17 ++++++++++++-----
 .../ext/transport/chttp2/transport/internal.h   |  3 ++-
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/include/grpc++/impl/codegen/call.h b/include/grpc++/impl/codegen/call.h
index aea1a6acec..d081b7d9c5 100644
--- a/include/grpc++/impl/codegen/call.h
+++ b/include/grpc++/impl/codegen/call.h
@@ -281,10 +281,9 @@ class CallOpRecvMessage {
     if (message_ == nullptr) return;
     if (recv_buf_) {
       if (*status) {
-        got_message = true;
-        *status = SerializationTraits<R>::Deserialize(recv_buf_, message_,
-                                                      max_message_size)
-                      .ok();
+        got_message = *status = SerializationTraits<R>::Deserialize(
+                                    recv_buf_, message_, max_message_size)
+                                    .ok();
       } else {
         got_message = false;
         g_core_codegen_interface->grpc_byte_buffer_destroy(recv_buf_);
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index fcf2abfe66..8c8593748d 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -629,9 +629,10 @@ static void finish_global_actions(grpc_exec_ctx *exec_ctx,
     check_read_ops(exec_ctx, &t->global);
 
     gpr_mu_lock(&t->executor.mu);
-    if (t->executor.pending_actions != NULL) {
-      hdr = t->executor.pending_actions;
-      t->executor.pending_actions = NULL;
+    if (t->executor.pending_actions_head != NULL) {
+      hdr = t->executor.pending_actions_head;
+      t->executor.pending_actions_head = t->executor.pending_actions_tail =
+          NULL;
       gpr_mu_unlock(&t->executor.mu);
       while (hdr != NULL) {
         hdr->action(exec_ctx, t, hdr->stream, hdr->arg);
@@ -686,8 +687,14 @@ void grpc_chttp2_run_with_global_lock(grpc_exec_ctx *exec_ctx,
         gpr_free(hdr);
         continue;
       }
-      hdr->next = t->executor.pending_actions;
-      t->executor.pending_actions = hdr;
+      hdr->next = NULL;
+      if (t->executor.pending_actions_head != NULL) {
+        t->executor.pending_actions_tail =
+            t->executor.pending_actions_tail->next = hdr;
+      } else {
+        t->executor.pending_actions_tail = t->executor.pending_actions_head =
+            hdr;
+      }
       REF_TRANSPORT(t, "pending_action");
       gpr_mu_unlock(&t->executor.mu);
     }
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index 7a8084641d..a269338b49 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -321,7 +321,8 @@ struct grpc_chttp2_transport {
     /** is a thread currently parsing */
     bool parsing_active;
 
-    grpc_chttp2_executor_action_header *pending_actions;
+    grpc_chttp2_executor_action_header *pending_actions_head;
+    grpc_chttp2_executor_action_header *pending_actions_tail;
   } executor;
 
   /** is the transport destroying itself? */
-- 
GitLab


From 29660794bff3bd2c8ab8c5cfda5fdbe6721233e7 Mon Sep 17 00:00:00 2001
From: Jayant Kolhe <jkolhe@google.com>
Date: Fri, 29 Apr 2016 17:41:35 -0700
Subject: [PATCH 271/525] Update CONTRIBUTING.md

---
 CONTRIBUTING.md | 63 ++++++++-----------------------------------------
 1 file changed, 10 insertions(+), 53 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 35eb5e6138..7c366710a1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,7 +1,8 @@
 # How to contribute
 
-We definitely welcome patches and contribution to grpc! Here is some guideline
-and information about how to do so.
+This is a place for various components in the gRPC ecosystem that aren't part of the gRPC core. We welcome contributions in this repo which either build extensions around gRPC or showcase how to use gRPC in various use cases and/or with other technologies.
+Here is some guideline and information about how to do so.
+
 
 ## Getting started
 
@@ -10,58 +11,14 @@ and information about how to do so.
 In order to protect both you and ourselves, you will need to sign the
 [Contributor License Agreement](https://cla.developers.google.com/clas).
 
-### Technical requirements
-
-You will need several tools to work with this repository. In addition to all of
-the packages described in the [INSTALL](INSTALL.md) file, you will also need
-python, and the mako template renderer. To install the latter, using pip, one
-should simply be able to do `pip install mako`.
-
-In order to run all of the tests we provide, you will need valgrind and clang.
-More specifically, under debian, you will need the package libc++-dev to
-properly run all the tests.
-
-Compiling and running grpc C++ tests depend on protobuf 3.0.0, gtest and gflags.
-Although gflags is provided in third_party, you will need to manually install
-that dependency on your system to run these tests. Under a Debian or Ubuntu
-system, you can install the gtests and gflags packages using apt-get:
-
-```sh
- $ [sudo] apt-get install libgflags-dev libgtest-dev
-```
-
-If you are planning to work on any of the languages other than C and C++, you
-will also need their appropriate development environments.
-
-If you want to work under Windows, we recommend the use of Visual Studio 2013.
-The [Community or Express editions](http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx)
-are free and suitable for developing with grpc. Note however that our test
-environment and tools are available for Unix environments only at the moment.
-
-## Testing your changes
-
-We provide a tool to help run the suite of tests in various environments.
-In order to run most of the available tests, one would need to run:
-
-`./tools/run_tests/run_tests.py`
-
-If you want to run tests for any of the languages {c, c++, csharp, node, objc, php, python, ruby}, do this:
-
-`./tools/run_tests/run_tests.py -l <lang>`
-
-To know about the list of available commands, do this:
-
-`./tools/run_tests/run_tests.py -h`
+### Guidelines to contribute
 
-## Adding or removing source code
+Each contribution needs to have a) top level readme explaining what the contribution does, how to use it with gRPC, how to build and test it and what are its external technical dependencies.
+Have at least a top level readme.md describing overview, how to use, dependencies, and how to build and test.
+Third party libraries: Note that no third party libraries with AGPL license etc should not be used in the codebases.
+Automated tests - will have a badge called “Verified” for tested contributions. Contributors should have automated tests present in every contribution and they should run on commit. We (gRPC team) will set up travis CI to facilitate this. Tests must return green before we merge them.
 
-Each language uses its own build system to work. Currently, the root's Makefile
-and the Visual Studio project files are building only the C and C++ source code.
-In order to ease the maintenance of these files, we have a
-template system. Please do not contribute manual changes to any of the generated
-files. Instead, modify the template files, or the build.yaml file, and
-re-generate the project files using the following command:
+### How contributions will be accepted?
 
-`./tools/buildgen/generate_projects.sh`
+gRPC core team members will accept PRs and merge. Code reviews will be done on a best effort basis. It is however expected that the community will address the comments from core team members. As long as contribution meets the two above mentioned guidelines and CLA is signed, PRs will be merged. The team will try and take care of outstanding requests weekly (ie during office hours). If people want a faster dev cycle, we'd recommend doing this in a fork, per github flow anyways. 
 
-You'll find more information about this in the [templates](templates) folder.
-- 
GitLab


From 2f262342039b9f21897dcedd9b62a75a129b1bcb Mon Sep 17 00:00:00 2001
From: Jayant Kolhe <jkolhe@google.com>
Date: Fri, 29 Apr 2016 17:46:01 -0700
Subject: [PATCH 272/525] Update CONTRIBUTING.md

---
 CONTRIBUTING.md | 63 +++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 53 insertions(+), 10 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7c366710a1..35eb5e6138 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,8 +1,7 @@
 # How to contribute
 
-This is a place for various components in the gRPC ecosystem that aren't part of the gRPC core. We welcome contributions in this repo which either build extensions around gRPC or showcase how to use gRPC in various use cases and/or with other technologies.
-Here is some guideline and information about how to do so.
-
+We definitely welcome patches and contribution to grpc! Here is some guideline
+and information about how to do so.
 
 ## Getting started
 
@@ -11,14 +10,58 @@ Here is some guideline and information about how to do so.
 In order to protect both you and ourselves, you will need to sign the
 [Contributor License Agreement](https://cla.developers.google.com/clas).
 
-### Guidelines to contribute
+### Technical requirements
+
+You will need several tools to work with this repository. In addition to all of
+the packages described in the [INSTALL](INSTALL.md) file, you will also need
+python, and the mako template renderer. To install the latter, using pip, one
+should simply be able to do `pip install mako`.
+
+In order to run all of the tests we provide, you will need valgrind and clang.
+More specifically, under debian, you will need the package libc++-dev to
+properly run all the tests.
+
+Compiling and running grpc C++ tests depend on protobuf 3.0.0, gtest and gflags.
+Although gflags is provided in third_party, you will need to manually install
+that dependency on your system to run these tests. Under a Debian or Ubuntu
+system, you can install the gtests and gflags packages using apt-get:
+
+```sh
+ $ [sudo] apt-get install libgflags-dev libgtest-dev
+```
+
+If you are planning to work on any of the languages other than C and C++, you
+will also need their appropriate development environments.
+
+If you want to work under Windows, we recommend the use of Visual Studio 2013.
+The [Community or Express editions](http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx)
+are free and suitable for developing with grpc. Note however that our test
+environment and tools are available for Unix environments only at the moment.
+
+## Testing your changes
+
+We provide a tool to help run the suite of tests in various environments.
+In order to run most of the available tests, one would need to run:
+
+`./tools/run_tests/run_tests.py`
+
+If you want to run tests for any of the languages {c, c++, csharp, node, objc, php, python, ruby}, do this:
+
+`./tools/run_tests/run_tests.py -l <lang>`
+
+To know about the list of available commands, do this:
+
+`./tools/run_tests/run_tests.py -h`
 
-Each contribution needs to have a) top level readme explaining what the contribution does, how to use it with gRPC, how to build and test it and what are its external technical dependencies.
-Have at least a top level readme.md describing overview, how to use, dependencies, and how to build and test.
-Third party libraries: Note that no third party libraries with AGPL license etc should not be used in the codebases.
-Automated tests - will have a badge called “Verified” for tested contributions. Contributors should have automated tests present in every contribution and they should run on commit. We (gRPC team) will set up travis CI to facilitate this. Tests must return green before we merge them.
+## Adding or removing source code
 
-### How contributions will be accepted?
+Each language uses its own build system to work. Currently, the root's Makefile
+and the Visual Studio project files are building only the C and C++ source code.
+In order to ease the maintenance of these files, we have a
+template system. Please do not contribute manual changes to any of the generated
+files. Instead, modify the template files, or the build.yaml file, and
+re-generate the project files using the following command:
 
-gRPC core team members will accept PRs and merge. Code reviews will be done on a best effort basis. It is however expected that the community will address the comments from core team members. As long as contribution meets the two above mentioned guidelines and CLA is signed, PRs will be merged. The team will try and take care of outstanding requests weekly (ie during office hours). If people want a faster dev cycle, we'd recommend doing this in a fork, per github flow anyways. 
+`./tools/buildgen/generate_projects.sh`
 
+You'll find more information about this in the [templates](templates) folder.
-- 
GitLab


From 615da649926677bf00b165cb183d97233fcd46c8 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 29 Apr 2016 18:14:05 -0700
Subject: [PATCH 273/525] explicitly cast constant value to gpr_atm

---
 src/core/ext/client_config/subchannel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/ext/client_config/subchannel.c b/src/core/ext/client_config/subchannel.c
index 3a5af9f53d..bd45d3825c 100644
--- a/src/core/ext/client_config/subchannel.c
+++ b/src/core/ext/client_config/subchannel.c
@@ -268,7 +268,7 @@ static void disconnect(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) {
   con = GET_CONNECTED_SUBCHANNEL(c, no_barrier);
   if (con != NULL) {
     GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, con, "connection");
-    gpr_atm_no_barrier_store(&c->connected_subchannel, 0xdeadbeef);
+    gpr_atm_no_barrier_store(&c->connected_subchannel, (gpr_atm)0xdeadbeef);
   }
   gpr_mu_unlock(&c->mu);
 }
-- 
GitLab


From 088aa27adfd0852a36f7e6eedf77cad8eb896ef2 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 29 Apr 2016 18:15:43 -0700
Subject: [PATCH 274/525] format fixes

---
 src/core/ext/transport/chttp2/transport/chttp2_transport.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 02ad0c0370..9ca551f0c5 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -776,8 +776,8 @@ void grpc_chttp2_add_incoming_goaway(
     grpc_exec_ctx *exec_ctx, grpc_chttp2_transport_global *transport_global,
     uint32_t goaway_error, gpr_slice goaway_text) {
   char *msg = gpr_dump_slice(goaway_text, GPR_DUMP_HEX | GPR_DUMP_ASCII);
-  GRPC_CHTTP2_IF_TRACING(gpr_log(
-      GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg));
+  GRPC_CHTTP2_IF_TRACING(
+      gpr_log(GPR_DEBUG, "got goaway [%d]: %s", goaway_error, msg));
   gpr_free(msg);
   gpr_slice_unref(goaway_text);
   transport_global->seen_goaway = 1;
-- 
GitLab


From 67df784bbc603a9d43f75780c73714e53249c0ea Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Fri, 29 Apr 2016 16:38:03 -0700
Subject: [PATCH 275/525] C# Dockerfile and Config scripts

---
 .../Dockerfile.template                       |  41 +++++++
 .../grpc_interop_stress_csharp/Dockerfile     | 101 ++++++++++++++++++
 .../build_interop_stress.sh                   |  47 ++++++++
 .../run_tests/stress_test/configs/csharp.json |  90 ++++++++++++++++
 4 files changed, 279 insertions(+)
 create mode 100644 templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template
 create mode 100644 tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile
 create mode 100755 tools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh
 create mode 100644 tools/run_tests/stress_test/configs/csharp.json

diff --git a/templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template b/templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template
new file mode 100644
index 0000000000..074178252d
--- /dev/null
+++ b/templates/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile.template
@@ -0,0 +1,41 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../ccache_setup.include"/>
+  <%include file="../../cxx_deps.include"/>
+  <%include file="../../gcp_api_libraries.include"/>
+  <%include file="../../csharp_deps.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile
new file mode 100644
index 0000000000..823fe948fb
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/Dockerfile
@@ -0,0 +1,101 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM debian:jessie
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+  autoconf \
+  autotools-dev \
+  build-essential \
+  bzip2 \
+  ccache \
+  curl \
+  gcc \
+  gcc-multilib \
+  git \
+  golang \
+  gyp \
+  lcov \
+  libc6 \
+  libc6-dbg \
+  libc6-dev \
+  libgtest-dev \
+  libtool \
+  make \
+  perl \
+  strace \
+  python-dev \
+  python-setuptools \
+  python-yaml \
+  telnet \
+  unzip \
+  wget \
+  zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
+# Google Cloud platform API libraries
+RUN apt-get update && apt-get install -y python-pip && apt-get clean
+RUN pip install --upgrade google-api-python-client
+
+
+#================
+# C# dependencies
+
+# Update to a newer version of mono
+RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+RUN echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | tee -a /etc/apt/sources.list.d/mono-xamarin.list
+
+# Install dependencies
+RUN apt-get update && apt-get -y dist-upgrade && apt-get install -y \
+    mono-devel \
+    ca-certificates-mono \
+    nuget \
+    && apt-get clean
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh
new file mode 100755
index 0000000000..1f4bf893cc
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_csharp/build_interop_stress.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Builds C# interop server and client in a base image.
+set -e
+
+mkdir -p /var/local/git
+git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
+
+# Copy service account keys if available
+cp -r /var/local/jenkins/service_account $HOME || true
+
+cd /var/local/git/grpc
+
+# Build C++ metrics client (to query the metrics from csharp stress client)
+make metrics_client -j
+
+# Build C# interop client & server
+tools/run_tests/run_tests.py -l csharp -c dbg --build_only
+
diff --git a/tools/run_tests/stress_test/configs/csharp.json b/tools/run_tests/stress_test/configs/csharp.json
new file mode 100644
index 0000000000..b7090696b4
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/csharp.json
@@ -0,0 +1,90 @@
+{
+  "dockerImages": {
+    "grpc_stress_csharp" : {
+      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "dockerFileDir": "grpc_interop_stress_csharp"
+    }
+  },
+
+  "clientTemplates": {
+    "baseTemplates": {
+      "default": {
+        "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+        "pollIntervalSecs": 60,
+        "clientArgs": {
+          "num_channels_per_server":5,
+          "num_stubs_per_channel":10,
+          "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+          "metrics_port": 8081
+        },
+        "metricsPort": 8081,
+        "metricsArgs": {
+          "metrics_server_address": "localhost:8081",
+          "total_only": "true"
+        }
+      }
+    },
+    "templates": {
+      "csharp_client": {
+        "baseTemplate": "default",
+        "stressClientCmd": [
+          "mono",
+          "/var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.StressClient/bin/Debug/Grpc.IntegrationTesting.StressClient.exe"
+		],
+        "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+      }
+    }
+  },
+
+  "serverTemplates": {
+    "baseTemplates":{
+      "default": {
+        "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+        "serverPort": 8080,
+        "serverArgs": {
+          "port": 8080
+        }
+      }
+    },
+    "templates": {
+      "csharp_server": {
+        "baseTemplate": "default",
+        "stressServerCmd": [
+          "mono",
+          "/var/local/git/grpc/src/csharp/Grpc.IntegrationTesting.Server/bin/Debug/Grpc.IntegrationTesting.Server.exe"
+		]
+      }
+    }
+  },
+
+  "testMatrix": {
+    "serverPodSpecs": {
+      "stress-server-csharp": {
+        "serverTemplate": "csharp_server",
+        "dockerImage": "grpc_stress_csharp",
+        "numInstances": 1
+      }
+    },
+
+    "clientPodSpecs": {
+      "stress-client-csharp": {
+        "clientTemplate": "csharp_client",
+        "dockerImage": "grpc_stress_csharp",
+        "numInstances": 10,
+        "serverPodSpec": "stress-server-csharp"
+      }
+    }
+  },
+
+  "globalSettings": {
+    "buildDockerImages": true,
+    "pollIntervalSecs": 60,
+    "testDurationSecs": 7200,
+    "kubernetesProxyPort": 8001,
+    "datasetIdNamePrefix": "stress_test_csharp",
+    "summaryTableId": "summary",
+    "qpsTableId": "qps",
+    "podWarmupSecs": 60
+  }
+}
+
-- 
GitLab


From 7a5f019bd3a086f4024724be936d6cd87b963daa Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Fri, 29 Apr 2016 19:34:25 -0700
Subject: [PATCH 276/525] Removed leftover function declaration from channel
 args

---
 src/core/lib/channel/channel_args.h | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h
index 0a51780a14..23c7b7b897 100644
--- a/src/core/lib/channel/channel_args.h
+++ b/src/core/lib/channel/channel_args.h
@@ -56,10 +56,6 @@ grpc_channel_args *grpc_channel_args_merge(const grpc_channel_args *a,
 /** Destroy arguments created by \a grpc_channel_args_copy */
 void grpc_channel_args_destroy(grpc_channel_args *a);
 
-/** Reads census_enabled settings from channel args. Returns 1 if census_enabled
- * is specified in channel args, otherwise returns 0. */
-int grpc_channel_args_is_census_enabled(const grpc_channel_args *a);
-
 /** Returns the compression algorithm set in \a a. */
 grpc_compression_algorithm grpc_channel_args_get_compression_algorithm(
     const grpc_channel_args *a);
-- 
GitLab


From 47b80bc558b8a0e79db2501a4b98c4e3790b0511 Mon Sep 17 00:00:00 2001
From: Jorge Canizales <jcanizales@google.com>
Date: Sat, 30 Apr 2016 10:32:49 -0700
Subject: [PATCH 277/525] Test that GRPCCall transitions states properly

---
 src/objective-c/tests/InteropTests.m | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/objective-c/tests/InteropTests.m b/src/objective-c/tests/InteropTests.m
index 26877b1ae8..4f096b9efa 100644
--- a/src/objective-c/tests/InteropTests.m
+++ b/src/objective-c/tests/InteropTests.m
@@ -272,8 +272,14 @@
     XCTAssertEqual(error.code, GRPC_STATUS_CANCELLED);
     [expectation fulfill];
   }];
+  XCTAssertEqual(call.state, GRXWriterStateNotStarted);
+
   [call start];
+  XCTAssertEqual(call.state, GRXWriterStateStarted);
+
   [call cancel];
+  XCTAssertEqual(call.state, GRXWriterStateFinished);
+
   [self waitForExpectationsWithTimeout:1 handler:nil];
 }
 
-- 
GitLab


From 0803bb0b330e0a08c08697bcb4332eb836d04f63 Mon Sep 17 00:00:00 2001
From: Jorge Canizales <jcanizales@google.com>
Date: Sat, 30 Apr 2016 10:40:18 -0700
Subject: [PATCH 278/525] Add state transitions to GRPCCall

---
 src/objective-c/GRPCClient/GRPCCall.m | 54 ++++++++++++++++-----------
 1 file changed, 32 insertions(+), 22 deletions(-)

diff --git a/src/objective-c/GRPCClient/GRPCCall.m b/src/objective-c/GRPCClient/GRPCCall.m
index 1847d6016f..0eb10656dd 100644
--- a/src/objective-c/GRPCClient/GRPCCall.m
+++ b/src/objective-c/GRPCClient/GRPCCall.m
@@ -136,6 +136,10 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
 #pragma mark Finish
 
 - (void)finishWithError:(NSError *)errorOrNil {
+  @synchronized(self) {
+    _state = GRXWriterStateFinished;
+  }
+
   // If the call isn't retained anywhere else, it can be deallocated now.
   _retainSelf = nil;
 
@@ -342,6 +346,10 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
 #pragma mark GRXWriter implementation
 
 - (void)startWithWriteable:(id<GRXWriteable>)writeable {
+  @synchronized(self) {
+    _state = GRXWriterStateStarted;
+  }
+
   // Create a retain cycle so that this instance lives until the RPC finishes (or is cancelled).
   // This makes RPCs in which the call isn't externally retained possible (as long as it is started
   // before being autoreleased).
@@ -375,30 +383,32 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
 }
 
 - (void)setState:(GRXWriterState)newState {
-  // Manual transitions are only allowed from the started or paused states.
-  if (_state == GRXWriterStateNotStarted || _state == GRXWriterStateFinished) {
-    return;
-  }
-
-  switch (newState) {
-    case GRXWriterStateFinished:
-      _state = newState;
-      // Per GRXWriter's contract, setting the state to Finished manually
-      // means one doesn't wish the writeable to be messaged anymore.
-      [_responseWriteable cancelSilently];
-      _responseWriteable = nil;
-      return;
-    case GRXWriterStatePaused:
-      _state = newState;
+  @synchronized(self) {
+    // Manual transitions are only allowed from the started or paused states.
+    if (_state == GRXWriterStateNotStarted || _state == GRXWriterStateFinished) {
       return;
-    case GRXWriterStateStarted:
-      if (_state == GRXWriterStatePaused) {
+    }
+
+    switch (newState) {
+      case GRXWriterStateFinished:
         _state = newState;
-        [self startNextRead];
-      }
-      return;
-    case GRXWriterStateNotStarted:
-      return;
+        // Per GRXWriter's contract, setting the state to Finished manually
+        // means one doesn't wish the writeable to be messaged anymore.
+        [_responseWriteable cancelSilently];
+        _responseWriteable = nil;
+        return;
+      case GRXWriterStatePaused:
+        _state = newState;
+        return;
+      case GRXWriterStateStarted:
+        if (_state == GRXWriterStatePaused) {
+          _state = newState;
+          [self startNextRead];
+        }
+        return;
+      case GRXWriterStateNotStarted:
+        return;
+    }
   }
 }
 
-- 
GitLab


From e98b494db77f9b10522cf6a8238deb8d7bd55345 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Sat, 30 Apr 2016 14:11:33 -0700
Subject: [PATCH 279/525] Fix bug where max_frame_size was ignored

Also add corpus entries that helped diagnose this bug
---
 .../ext/transport/chttp2/transport/internal.h |   8 +-
 .../ext/transport/chttp2/transport/parsing.c  |  21 +-
 .../03a72675e1969f836094f1ecfec2a7b34418e306  | Bin 0 -> 286 bytes
 .../0416afd6875d9ba55f1e5f86a6456a5445d5e576  | Bin 0 -> 651 bytes
 .../08c42ef29eff83052c5887855f2fa3e07ebe470c  | Bin 0 -> 650 bytes
 .../1ba889ea1543297824e99e641e6ca8b91f45732e  | Bin 0 -> 650 bytes
 .../3b09bf453c6f93983c24c4d5481e55d66213f93a  | Bin 0 -> 650 bytes
 .../49cb33cbb60f041e8e99dd718993acd2c3354416  | Bin 0 -> 357 bytes
 .../59743fe120be6ae1aed1c02230ee1bb460f621ee  | Bin 0 -> 628 bytes
 .../a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9  | Bin 0 -> 651 bytes
 .../a7fac1265a384fe9e45a9ee3d708b79c4e80505e  | Bin 0 -> 286 bytes
 .../aaf049720c707d4e14e47e7eb31d6a2dda60e66a  | Bin 0 -> 651 bytes
 .../c4e4c7572e005e18d56eac407033da058737a5ab  | Bin 0 -> 651 bytes
 ...h-dae0f07934a527989f23f06e630710ff6ca8c809 | Bin 0 -> 104 bytes
 .../e96ad9c17795e52edc810a08d4fc61fe8790002a  | Bin 0 -> 651 bytes
 .../fa202a5f51cd49f8ea5af60c5f403f797c01c504  | Bin 0 -> 651 bytes
 tools/run_tests/tests.json                    | 224 ++++++++++++++++++
 17 files changed, 246 insertions(+), 7 deletions(-)
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a
 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504

diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index 7a8084641d..04c75619df 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -236,9 +236,6 @@ struct grpc_chttp2_transport_parsing {
   /** was a goaway frame received? */
   uint8_t goaway_received;
 
-  /** the last sent max_table_size setting */
-  uint32_t last_sent_max_table_size;
-
   /** initial window change */
   int64_t initial_window_update;
 
@@ -272,6 +269,9 @@ struct grpc_chttp2_transport_parsing {
   uint32_t incoming_frame_size;
   uint32_t incoming_stream_id;
 
+  /* current max frame size */
+  uint32_t max_frame_size;
+
   /* active parser */
   void *parser_data;
   grpc_chttp2_stream_parsing *incoming_stream;
@@ -282,6 +282,8 @@ struct grpc_chttp2_transport_parsing {
 
   /* received settings */
   uint32_t settings[GRPC_CHTTP2_NUM_SETTINGS];
+  /* last settings that were sent */
+  uint32_t last_sent_settings[GRPC_CHTTP2_NUM_SETTINGS];
 
   /* goaway data */
   grpc_status_code goaway_error;
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index e827a43f7a..2995066e51 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -79,9 +79,12 @@ void grpc_chttp2_prepare_to_read(
   GPR_TIMER_BEGIN("grpc_chttp2_prepare_to_read", 0);
 
   transport_parsing->next_stream_id = transport_global->next_stream_id;
-  transport_parsing->last_sent_max_table_size =
-      transport_global->settings[GRPC_SENT_SETTINGS]
-                                [GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE];
+  memcpy(transport_parsing->last_sent_settings,
+         transport_global->settings[GRPC_SENT_SETTINGS],
+         sizeof(transport_parsing->last_sent_settings));
+  transport_parsing->max_frame_size =
+      transport_global->settings[GRPC_ACKED_SETTINGS]
+                                [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE];
 
   /* update the parsing view of incoming window */
   while (grpc_chttp2_list_pop_unannounced_incoming_window_available(
@@ -388,6 +391,12 @@ int grpc_chttp2_perform_read(grpc_exec_ctx *exec_ctx,
           return 1;
         }
         goto dts_fh_0; /* loop */
+      } else if (transport_parsing->incoming_frame_size >
+                 transport_parsing->max_frame_size) {
+        gpr_log(GPR_DEBUG, "Frame size %d is larger than max frame size %d",
+                transport_parsing->incoming_frame_size,
+                transport_parsing->max_frame_size);
+        return 0;
       }
       if (++cur == end) {
         return 1;
@@ -840,7 +849,11 @@ static int init_settings_frame_parser(
     transport_parsing->settings_ack_received = 1;
     grpc_chttp2_hptbl_set_max_bytes(
         &transport_parsing->hpack_parser.table,
-        transport_parsing->last_sent_max_table_size);
+        transport_parsing
+            ->last_sent_settings[GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]);
+    transport_parsing->max_frame_size =
+        transport_parsing
+            ->last_sent_settings[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE];
   }
   transport_parsing->parser = grpc_chttp2_settings_parser_parse;
   transport_parsing->parser_data = &transport_parsing->simple.settings;
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306 b/test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306
new file mode 100644
index 0000000000000000000000000000000000000000..503af15fe81ccba6a1300796531f278f34d9be84
GIT binary patch
literal 286
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^z5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5%3{PfpAMu>^RM^Ycnl^Gb9}
zDhpEO5(^4)GLsWaGV}BF(~Am{GfK2Gi*+-Lb;}ZSGE*2C7#IqYbrX}5QwvITQ}dGZ
zQ!?|?MKe=U^GY&HDs@s)({d6^Qgza+G7AKlN>VvWiV`z(Qj3ZOxJrvti*ysyQ}arc
zk`hyNlXEgt^GXyzR_G?{8|WDt=^5x5C}`wl=9N}x3h;m>N-}d(^Gi#Z4Gn@(MVL&3
E0kyYQzyJUM

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576 b/test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576
new file mode 100644
index 0000000000000000000000000000000000000000..30229f98fd3e7479f61635c604dbb259dddfd23f
GIT binary patch
literal 651
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@Tz(K(XCTUABVKJT?
z?5^UH#FElt1_nkWEJ~n4ykM2Eu;YM*8B`XTA}ShLK+y(?KxDl{u>V5=A*CP-1bC7e
H^79w~g!OqO

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c b/test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c
new file mode 100644
index 0000000000000000000000000000000000000000..828275ee3c3c46584136c653f39bac7885b6e912
GIT binary patch
literal 650
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@TKtaI>B2cjvDwjq)
zZm_$GOA<>;iy4#gS;7le2@5+8SeRkaLR2)efT9f&f#^mEpbMbz|3d+aAPUC;%mbM(
Lz?007pT__IlKy$!

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e b/test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e
new file mode 100644
index 0000000000000000000000000000000000000000..6ed060d1e33cc75aa2a1c2e40990d19970c94819
GIT binary patch
literal 650
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@Tz(K(XCh1RbgWXkJ
zl2}q&%xH+ueqOLjSlDsE!VHTRqN0%n6m5_Q#9{<Kq5n{TPYnYD1IT;<o@9pnJO%&^
Chj}3Y

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a b/test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a
new file mode 100644
index 0000000000000000000000000000000000000000..1a7a213cd715ecf7e3b2bbef1becd953cf6ce4b4
GIT binary patch
literal 650
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1|N7nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX241j6m<|?@0^I&#_`=A*!obJ?
z^N&(eVv25ZPG)Lei2~T1WPJlYLnA!{Jp%=eoXot^3QY$4KcJvs1QDp%3YE*i!0;am
zFeE4t;0C*^xFoTpw3sm&pFyZ0!2t=gno2BMh>Av*jQrvfNCcuAA%HG`!iNUJe-uF!
QjsuvNp$|?L4EcEs0IigQdH?_b

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416 b/test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416
new file mode 100644
index 0000000000000000000000000000000000000000..7f975251ddc4dcbabc73068dc55220f700ed5502
GIT binary patch
literal 357
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^@5yWB?V6`epEXm-|Ps`8OPb?B(
zw<=D~NX<=U$tWo)5MZ~;O)bgDPhko05B~T6|NjsHmW=%363(3b<is2hOMoXiKd&S;
zuSB<`vLID1v7jI)GdZy&Ge1v1y{I5ryCfsCSU0m+w=6LyGetlIB&M5~EU2WEoRU{u
zTCAItna5U~T2z+mh|95MnTbi6d6haTscAWhC8;{;Rhb0>OeLutB}IvuIjKd(0$ioV
zsYSYp>8W`oN=b<+y2&}2sd*&|V7rp_&Gih8^bGV26f|-&^GYi;1$fdK85kH!GILY&
rOG}sy4RV78c))6*LQD({3`W5W43f|QLXqTBFf=VrP0rWMODP5b6^Lgd

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee b/test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee
new file mode 100644
index 0000000000000000000000000000000000000000..3038fde54719db4a3f0ce804f452a626f38a0ca2
GIT binary patch
literal 628
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10Sg6bco
zq{I~6<ebdZyb=Yl1CsR(^bC#k4D<{XG;%WYN-H!O?Eip+f)Pv(DuNg6WLRKvzyb-2
c8;OcH7EnAvVhoEBln8+g7T`%{$j@T{0N1E&ZvX%Q

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9 b/test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9
new file mode 100644
index 0000000000000000000000000000000000000000..9d39854fc970a412a7822e0bae9030fa900e56e2
GIT binary patch
literal 651
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@Tz(K(XCh1RbgWXkJ
zl2}q&%xHwqeqOLjSlDsE!VHTRqN0%n6m5_Q#9{<Kq5n{TPYp;8WPt!rGDChI0|0|(
Bc_IJ+

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e b/test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e
new file mode 100644
index 0000000000000000000000000000000000000000..338f61bdce7de24e9f547fea219d7e330cf4cd55
GIT binary patch
literal 286
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3=r^z5yWB?V6`epEXm-|Ps`8OPf9Ej
zV7Dqx&PdHoWyvThDG*?{%1tfF$WLJj@DC0VV9CfYF5%3{PfpAMu>^RM^Ycnl^Gb9}
zDhpEO5(^4)GLsWaGV}BF(~Am{txGa8i*+-Lb;}ZSGE*2C7#IqYbrX}5QwvITQ}dGZ
zQ!?|?MKe=U^GY&HDs@s)({d6^Qgza+G7AKlN>VvWiV`z(Qj3ZOxJrvti*ysyQ}arc
zk`hyNlXEgt^GXyzR_G?{8|WDt=^5x5C}`wl=9N}x3h;m>N-}d(^Gi#Z4Gn@(MVL&3
E0lv*v&;S4c

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a b/test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a
new file mode 100644
index 0000000000000000000000000000000000000000..dab9c75822fa7c75554351917d686c8e18ddad75
GIT binary patch
literal 651
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@Tz(K(XCh1RbgWXkJ
zl2}q&%xHkmeqOLjSlDsE!VHTRqN0%n6m5_Q#9{<Kq5n{TPYp;8WPt!rGDChI0|0@w
Bc_07)

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab b/test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab
new file mode 100644
index 0000000000000000000000000000000000000000..070a581b37eaef8e50d072c59c07435c9044d109
GIT binary patch
literal 651
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@TKtaI>B2cjvDwjq)
zZm_$GOA<>;i_JCgS;7le2@5+8SeRkaLR2)efT9f&fmn>dC-ff*@TmdGfh-W<NoL5;
GV*mj3B6)}a

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809 b/test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809
new file mode 100644
index 0000000000000000000000000000000000000000..b6dfd77e676bc7c6dc4500e2b4533846853e1dcc
GIT binary patch
literal 104
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k%Dpm|2Ai>Va!th*y@jt3sk@TX1WZlH%
h<kSL2qtv|Q{FKbRbPh%q1_nluF2?^2aKO;O003Ke7^eUL

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a b/test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a
new file mode 100644
index 0000000000000000000000000000000000000000..df9241dd0c6f33819a08674d0a1514907cf16c66
GIT binary patch
literal 651
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@TKtaI>B2cjvDwjq)
zZm_$GOA<>;iy1ZWS;7le2@5+8SeRkaLR2)efT9f&fmn>dC-ff*@TmdGfh-W<NoL5;
GV*migCV5f-

literal 0
HcmV?d00001

diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504 b/test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504
new file mode 100644
index 0000000000000000000000000000000000000000..0ba5935164ce79aad888bbb5bb41a191d02e561e
GIT binary patch
literal 651
zcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`3}C>-zzAY73b0xgB$i}w=%?l9>n9}^
z39wrgCugMQrm|#|loSZCTji#fWaOu?1o#Js2yj^?mX>7X7iE@Ia^~bGC+1}27nca|
zB<JUqq~?|AmQ)s`3M3X3<YXo%mSpDV>8BSJBnyauNZrKb<kW%^-PF9~{FKbRbkUU5
zw4B6}RGrL})Vz|+l1iQQs>}ibrjk^SlA^@SoYbOX0j|>G)FR!)^whi(!v10S!pOkF
zz{mjek5W=%if(dFW@=uE0@wk``UZN2MtTN%1_~NEnR%rZnhf@Tz(K(XCh1RbgWXkJ
zl2}q&%xH?weqOLjSlDsE!VHTRqN0%n6m5_Q#9{<Kq5n{TPYp;8WPt!rGDChI0|15c
Bc_jb<

literal 0
HcmV?d00001

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 0fd77854d2..cf1154426f 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -57757,6 +57757,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/03a72675e1969f836094f1ecfec2a7b34418e306"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/03b9be1fa172dff5d1543be079b9c64fa2c9a278"
@@ -57773,6 +57789,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/0416afd6875d9ba55f1e5f86a6456a5445d5e576"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/052c8f28e5884bb48f0d504461272cd3a5893215"
@@ -57917,6 +57949,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/08c42ef29eff83052c5887855f2fa3e07ebe470c"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/09938e3256d06a8e168eb038d8a58b8462f7f697"
@@ -58365,6 +58413,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/1ba889ea1543297824e99e641e6ca8b91f45732e"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/1cf17783de9e662f3720847f2d83d86dcdcab500"
@@ -59149,6 +59213,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/3b09bf453c6f93983c24c4d5481e55d66213f93a"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/3ca5da2f.bin"
@@ -59501,6 +59581,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/49cb33cbb60f041e8e99dd718993acd2c3354416"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/4aa883d0.bin"
@@ -59949,6 +60045,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/59743fe120be6ae1aed1c02230ee1bb460f621ee"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/597fdab5.bin"
@@ -61341,6 +61453,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/a5ccb8f124d8ddb5350b90bc0d6b96db280cb7c9"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a7e64803.bin"
@@ -61357,6 +61485,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/a7fac1265a384fe9e45a9ee3d708b79c4e80505e"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/a8d229374635fa6f2a75ca1669892e1bc244e719"
@@ -61501,6 +61645,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/aaf049720c707d4e14e47e7eb31d6a2dda60e66a"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/ad810f7f.bin"
@@ -61965,6 +62125,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/c4e4c7572e005e18d56eac407033da058737a5ab"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/c559f565.bin"
@@ -62269,6 +62445,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-dae0f07934a527989f23f06e630710ff6ca8c809"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/crash-e34b0a9a428001cb4094a9ebca76329f578811a4"
@@ -62589,6 +62781,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/e96ad9c17795e52edc810a08d4fc61fe8790002a"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/e9bbe2fe47b7b9c2683e7f17f4a33625c6ffbd8c"
@@ -62909,6 +63117,22 @@
       "linux"
     ]
   }, 
+  {
+    "args": [
+      "test/core/end2end/fuzzers/server_fuzzer_corpus/fa202a5f51cd49f8ea5af60c5f403f797c01c504"
+    ], 
+    "ci_platforms": [
+      "linux"
+    ], 
+    "cpu_cost": 0.1, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "server_fuzzer_one_entry", 
+    "platforms": [
+      "linux"
+    ]
+  }, 
   {
     "args": [
       "test/core/end2end/fuzzers/server_fuzzer_corpus/fa36b4280d9e28edd81c5e4d192d1a5c2765e5e4"
-- 
GitLab


From 7c6c394c02ce1fb0544ee4cf3c1e9ae0a0d3f1b6 Mon Sep 17 00:00:00 2001
From: thinkerou <thinkerou@gmail.com>
Date: Sun, 1 May 2016 11:39:17 +0800
Subject: [PATCH 280/525] Add to call zend_object_std_dtor

---
 src/php/ext/grpc/call.c                | 1 +
 src/php/ext/grpc/call_credentials.c    | 1 +
 src/php/ext/grpc/channel.c             | 1 +
 src/php/ext/grpc/channel_credentials.c | 1 +
 src/php/ext/grpc/server.c              | 1 +
 src/php/ext/grpc/server_credentials.c  | 1 +
 src/php/ext/grpc/timeval.c             | 6 +++++-
 7 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index a2c1c08169..b19e8f017f 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -65,6 +65,7 @@ void free_wrapped_grpc_call(void *object TSRMLS_DC) {
   if (call->owned && call->wrapped != NULL) {
     grpc_call_destroy(call->wrapped);
   }
+  zend_object_std_dtor(&call->std TSRMLS_CC);
   efree(call);
 }
 
diff --git a/src/php/ext/grpc/call_credentials.c b/src/php/ext/grpc/call_credentials.c
index 285c4e7c85..ce9cbdf226 100644
--- a/src/php/ext/grpc/call_credentials.c
+++ b/src/php/ext/grpc/call_credentials.c
@@ -60,6 +60,7 @@ void free_wrapped_grpc_call_credentials(void *object TSRMLS_DC) {
   if (creds->wrapped != NULL) {
     grpc_call_credentials_release(creds->wrapped);
   }
+  zend_object_std_dtor(&creds->std TSRMLS_CC);
   efree(creds);
 }
 
diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c
index eba2c81424..665430b99c 100644
--- a/src/php/ext/grpc/channel.c
+++ b/src/php/ext/grpc/channel.c
@@ -64,6 +64,7 @@ void free_wrapped_grpc_channel(void *object TSRMLS_DC) {
   if (channel->wrapped != NULL) {
     grpc_channel_destroy(channel->wrapped);
   }
+  zend_object_std_dtor(&channel->std TSRMLS_CC);
   efree(channel);
 }
 
diff --git a/src/php/ext/grpc/channel_credentials.c b/src/php/ext/grpc/channel_credentials.c
index ae9a9897fc..d5a6531b54 100644
--- a/src/php/ext/grpc/channel_credentials.c
+++ b/src/php/ext/grpc/channel_credentials.c
@@ -59,6 +59,7 @@ void free_wrapped_grpc_channel_credentials(void *object TSRMLS_DC) {
   if (creds->wrapped != NULL) {
     grpc_channel_credentials_release(creds->wrapped);
   }
+  zend_object_std_dtor(&creds->std TSRMLS_CC);
   efree(creds);
 }
 
diff --git a/src/php/ext/grpc/server.c b/src/php/ext/grpc/server.c
index ca129e76ca..0d12bbe5c2 100644
--- a/src/php/ext/grpc/server.c
+++ b/src/php/ext/grpc/server.c
@@ -69,6 +69,7 @@ void free_wrapped_grpc_server(void *object TSRMLS_DC) {
                                 gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
     grpc_server_destroy(server->wrapped);
   }
+  zend_object_std_dtor(&server->std TSRMLS_CC);
   efree(server);
 }
 
diff --git a/src/php/ext/grpc/server_credentials.c b/src/php/ext/grpc/server_credentials.c
index f3951b31fe..25a2ca577d 100644
--- a/src/php/ext/grpc/server_credentials.c
+++ b/src/php/ext/grpc/server_credentials.c
@@ -58,6 +58,7 @@ void free_wrapped_grpc_server_credentials(void *object TSRMLS_DC) {
   if (creds->wrapped != NULL) {
     grpc_server_credentials_release(creds->wrapped);
   }
+  zend_object_std_dtor(&creds->std TSRMLS_CC);
   efree(creds);
 }
 
diff --git a/src/php/ext/grpc/timeval.c b/src/php/ext/grpc/timeval.c
index 4fd069e19a..102361d404 100644
--- a/src/php/ext/grpc/timeval.c
+++ b/src/php/ext/grpc/timeval.c
@@ -53,7 +53,11 @@
 zend_class_entry *grpc_ce_timeval;
 
 /* Frees and destroys an instance of wrapped_grpc_call */
-void free_wrapped_grpc_timeval(void *object TSRMLS_DC) { efree(object); }
+void free_wrapped_grpc_timeval(void *object TSRMLS_DC) {
+    wrapped_grpc_timeval *timeval = (wrapped_grpc_timeval *)object;
+    zend_object_std_dtor(&timeval->std TSRMLS_CC);
+    efree(object);
+}
 
 /* Initializes an instance of wrapped_grpc_timeval to be associated with an
  * object of a class specified by class_type */
-- 
GitLab


From a49b13bc332a38dfcf83162003cbaa0a1384143b Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Tue, 19 Apr 2016 10:31:25 -0700
Subject: [PATCH 281/525] cronet wrapper code

---
 include/grpc/grpc_security.h                  |   5 +
 .../client/secure/cronet_channel_create.c     |  72 +++
 .../cronet/transport/cronet_c_for_grpc.h      | 202 ++++++
 .../cronet/transport/cronet_transport.c       | 586 ++++++++++++++++++
 4 files changed, 865 insertions(+)
 create mode 100644 src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
 create mode 100644 src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h
 create mode 100644 src/core/ext/transport/cronet/transport/cronet_transport.c

diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h
index 79199cc5d6..d753aaf96c 100644
--- a/include/grpc/grpc_security.h
+++ b/include/grpc/grpc_security.h
@@ -299,6 +299,11 @@ GRPCAPI grpc_channel *grpc_secure_channel_create(
     grpc_channel_credentials *creds, const char *target,
     const grpc_channel_args *args, void *reserved);
 
+GRPCAPI grpc_channel *grpc_custom_secure_channel_create(
+    void *engine, const char *target,
+    const grpc_channel_args *args, void *reserved);
+
+
 /* --- grpc_server_credentials object. ---
 
    A server credentials object represents a way to authenticate a server.  */
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
new file mode 100644
index 0000000000..23189809f7
--- /dev/null
+++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/impl/codegen/port_platform.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/transport/transport_impl.h"
+
+#ifdef COMPILE_WITH_CRONET
+// Cronet transport object
+struct grpc_cronet_transport {
+  grpc_transport base; /* must be first element in this structure */
+  void *engine;
+  char *host;
+};
+
+typedef struct grpc_cronet_transport grpc_cronet_transport;
+
+extern grpc_transport_vtable cronet_vtable;
+
+GRPCAPI grpc_channel *grpc_custom_secure_channel_create(
+    void *engine, const char *target,
+    const grpc_channel_args *args, void *reserved) {
+  grpc_cronet_transport *ct = gpr_malloc(sizeof(grpc_cronet_transport));
+  ct->base.vtable = &cronet_vtable;
+  ct->engine = engine;
+  ct->host = gpr_malloc(strlen(target) + 1);
+  strcpy(ct->host, target);
+  gpr_log(
+      GPR_DEBUG, "grpc_create_cronet_transport: cronet_engine = %p, target=%s",
+      engine, ct->host);
+
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  return grpc_channel_create(&exec_ctx, target, args,
+                                GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
+}
+#endif  // COMPILE_WITH_CRONET
diff --git a/src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h b/src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h
new file mode 100644
index 0000000000..15a511aebd
--- /dev/null
+++ b/src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h
@@ -0,0 +1,202 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
+#define COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+
+/* Cronet Engine API. */
+
+/* Opaque object representing Cronet Engine. Created and configured outside
+ * of this API to facilitate sharing with other components */
+typedef struct cronet_engine { void* obj; } cronet_engine;
+
+void cronet_engine_add_quic_hint(cronet_engine* engine,
+                                 const char* host,
+                                 int port,
+                                 int alternate_port);
+
+/* Cronet Bidirectional Stream API */
+
+/* Opaque object representing Cronet Bidirectional Stream. */
+typedef struct cronet_bidirectional_stream {
+  void* obj;
+  void* annotation;
+} cronet_bidirectional_stream;
+
+/* A single request or response header element. */
+typedef struct cronet_bidirectional_stream_header {
+  const char* key;
+  const char* value;
+} cronet_bidirectional_stream_header;
+
+/* Array of request or response headers or trailers. */
+typedef struct cronet_bidirectional_stream_header_array {
+  size_t count;
+  size_t capacity;
+  cronet_bidirectional_stream_header* headers;
+} cronet_bidirectional_stream_header_array;
+
+/* Set of callbacks used to receive callbacks from bidirectional stream. */
+typedef struct cronet_bidirectional_stream_callback {
+  /* Invoked when request headers are sent. Indicates that stream has initiated
+   * the request. Consumer may call cronet_bidirectional_stream_write() to start
+   * writing data.
+   */
+  void (*on_request_headers_sent)(cronet_bidirectional_stream* stream);
+
+  /* Invoked when initial response headers are received.
+   * Consumer must call cronet_bidirectional_stream_read() to start reading.
+   * Consumer may call cronet_bidirectional_stream_write() to start writing or
+   * close the stream. Contents of |headers| is valid for duration of the call.
+   */
+  void (*on_response_headers_received)(
+      cronet_bidirectional_stream* stream,
+      const cronet_bidirectional_stream_header_array* headers,
+      const char* negotiated_protocol);
+
+  /* Invoked when data is read into the buffer passed to
+   * cronet_bidirectional_stream_read(). Only part of the buffer may be
+   * populated. To continue reading, call cronet_bidirectional_stream_read().
+   * It may be invoked after on_response_trailers_received()}, if there was
+   * pending read data before trailers were received.
+   *
+   * If count is 0, it means the remote side has signaled that it will send no
+   * more data; future calls to cronet_bidirectional_stream_read() will result
+   * in the on_data_read() callback or on_succeded() callback if
+   * cronet_bidirectional_stream_write() was invoked with end_of_stream set to
+   * true.
+   */
+  void (*on_read_completed)(cronet_bidirectional_stream* stream,
+                            char* data,
+                            int count);
+
+  /**
+   * Invoked when all data passed to cronet_bidirectional_stream_write() is
+   * sent.
+   * To continue writing, call cronet_bidirectional_stream_write().
+   */
+  void (*on_write_completed)(cronet_bidirectional_stream* stream,
+                             const char* data);
+
+  /* Invoked when trailers are received before closing the stream. Only invoked
+   * when server sends trailers, which it may not. May be invoked while there is
+   * read data remaining in local buffer. Contents of |trailers| is valid for
+   * duration of the call.
+   */
+  void (*on_response_trailers_received)(
+      cronet_bidirectional_stream* stream,
+      const cronet_bidirectional_stream_header_array* trailers);
+
+  /**
+   * Invoked when there is no data to be read or written and the stream is
+   * closed successfully remotely and locally. Once invoked, no further callback
+   * methods will be invoked.
+   */
+  void (*on_succeded)(cronet_bidirectional_stream* stream);
+
+  /**
+   * Invoked if the stream failed for any reason after
+   * cronet_bidirectional_stream_start(). HTTP/2 error codes are
+   * mapped to chrome net error codes. Once invoked, no further callback methods
+   * will be invoked.
+   */
+  void (*on_failed)(cronet_bidirectional_stream* stream, int net_error);
+
+  /**
+   * Invoked if the stream was canceled via
+   * cronet_bidirectional_stream_cancel(). Once invoked, no further callback
+   * methods will be invoked.
+   */
+  void (*on_canceled)(cronet_bidirectional_stream* stream);
+} cronet_bidirectional_stream_callback;
+
+/* Create a new stream object that uses |engine| and |callback|. All stream
+ * tasks are performed asynchronously on the |engine| network thread. |callback|
+ * methods are invoked synchronously on the |engine| network thread, but must
+ * not run tasks on the current thread to prevent blocking networking operations
+ * and causing exceptions during shutdown. The |annotation| is stored in
+ * bidirectional stream for arbitrary use by application.
+ *
+ * Returned |cronet_bidirectional_stream*| is owned by the caller, and must be
+ * destroyed using |cronet_bidirectional_stream_destroy|.
+ *
+ * Both |calback| and |engine| must remain valid until stream is destroyed.
+ */
+cronet_bidirectional_stream* cronet_bidirectional_stream_create(
+    cronet_engine* engine,
+    void* annotation,
+    cronet_bidirectional_stream_callback* callback);
+
+/* TBD: The following methods return int. Should it be a custom type? */
+
+/* Destroy stream object. Destroy could be called from any thread, including
+ * network thread, but is posted, so |stream| is valid until calling task is
+ * complete.
+ */
+int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream);
+
+/* Start the stream by sending request to |url| using |method| and |headers|. If
+ * |end_of_stream| is true, then no data is expected to be written.
+ */
+int cronet_bidirectional_stream_start(
+    cronet_bidirectional_stream* stream,
+    const char* url,
+    int priority,
+    const char* method,
+    const cronet_bidirectional_stream_header_array* headers,
+    bool end_of_stream);
+
+/* Read response data into |buffer| of |capacity| length. Must only be called at
+ * most once in response to each invocation of the
+ * on_response_headers_received() and on_read_completed() methods of the
+ * cronet_bidirectional_stream_callback.
+ * Each call will result in an invocation of one of the callback's
+ * on_read_completed  method if data is read, its on_succeeded() method if
+ * the stream is closed, or its on_failed() method if there's an error.
+ */
+int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
+                                     char* buffer,
+                                     int capacity);
+
+/* Read response data into |buffer| of |capacity| length. Must only be called at
+ * most once in response to each invocation of the
+ * on_response_headers_received() and on_read_completed() methods of the
+ * cronet_bidirectional_stream_callback.
+ * Each call will result in an invocation of one of the callback's
+ * on_read_completed  method if data is read, its on_succeeded() method if
+ * the stream is closed, or its on_failed() method if there's an error.
+ */
+int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
+                                      const char* buffer,
+                                      int count,
+                                      bool end_of_stream);
+
+/* Cancels the stream. Can be called at any time after
+ * cronet_bidirectional_stream_start(). The on_canceled() method of
+ * cronet_bidirectional_stream_callback will be invoked when cancelation
+ * is complete and no further callback methods will be invoked. If the
+ * stream has completed or has not started, calling
+ * cronet_bidirectional_stream_cancel() has no effect and on_canceled() will not
+ * be  invoked. At most one callback method may be invoked after
+ * cronet_bidirectional_stream_cancel() has completed.
+ */
+int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream);
+
+/* Returns true if the |stream| was successfully started and is now done
+ * (succeeded, canceled, or failed).
+ * Returns false if the |stream| stream is not yet started or is in progress.
+ */
+bool cronet_bidirectional_stream_is_done(cronet_bidirectional_stream* stream);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
new file mode 100644
index 0000000000..3b9b1b08d8
--- /dev/null
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -0,0 +1,586 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <string.h>
+
+#include <grpc/impl/codegen/port_platform.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/host_port.h>
+#include <grpc/support/log.h>
+#include <grpc/support/slice_buffer.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/useful.h>
+
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/support/string.h"
+#include "src/core/lib/surface/channel.h"
+#include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport_impl.h"
+#include "src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h"
+
+#ifdef COMPILE_WITH_CRONET
+
+#define GRPC_HEADER_SIZE_IN_BYTES 5
+#define MAX_HDRS 100
+
+#define GRPC_CRONET_TRACE(...)                   \
+  {                                              \
+    if (grpc_cronet_trace) gpr_log(__VA_ARGS__); \
+  }
+#define CRONET_READ(...)                                                   \
+  {                                                                        \
+    GRPC_CRONET_TRACE(GPR_DEBUG, "R: cronet_bidirectional_stream_read()"); \
+    cronet_bidirectional_stream_read(__VA_ARGS__);                         \
+  }
+#define SET_RECV_STATE(STATE)                                                \
+  {                                                                          \
+    GRPC_CRONET_TRACE(GPR_DEBUG, "next_state = %s", recv_state_name[STATE]); \
+    cronet_recv_state = STATE;                                               \
+  }
+
+// Global flag that gets set with GRPC_TRACE env variable
+int grpc_cronet_trace = 1;
+
+// Cronet transport object
+struct grpc_cronet_transport {
+  grpc_transport base; /* must be first element in this structure */
+  cronet_engine *engine;
+  const char *host;
+};
+
+typedef struct grpc_cronet_transport grpc_cronet_transport;
+
+enum send_state {
+  CRONET_SEND_IDLE = 0,
+  CRONET_REQ_STARTED,
+  CRONET_SEND_HEADER,
+  CRONET_WRITE,
+  CRONET_WRITE_COMPLETED,
+};
+
+enum recv_state {
+  CRONET_RECV_IDLE = 0,
+  CRONET_RECV_READ_LENGTH,
+  CRONET_RECV_READ_DATA,
+  CRONET_RECV_CLOSED,
+};
+
+const char *recv_state_name[] = {"CRONET_RECV_IDLE", "CRONET_RECV_READ_LENGTH",
+                                 "CRONET_RECV_READ_DATA,",
+                                 "CRONET_RECV_CLOSED"};
+
+// Enum that identifies calling function.
+enum e_caller {
+  PERFORM_STREAM_OP,
+  ON_READ_COMPLETE,
+  ON_RESPONSE_HEADERS_RECEIVED,
+  ON_RESPONSE_TRAILERS_RECEIVED
+};
+
+enum callback_id {
+  CB_SEND_INITIAL_METADATA = 0,
+  CB_SEND_MESSAGE,
+  CB_SEND_TRAILING_METADATA,
+  CB_RECV_MESSAGE,
+  CB_RECV_INITIAL_METADATA,
+  CB_RECV_TRAILING_METADATA,
+  CB_NUM_CALLBACKS
+};
+
+struct stream_obj {
+  // we store received bytes here as they trickle in.
+  gpr_slice_buffer write_slicebuffer;
+  cronet_bidirectional_stream *cbs;
+  gpr_slice slice;
+  gpr_slice_buffer read_slicebuffer;
+  struct grpc_slice_buffer_stream sbs;
+  char *read_buffer;
+  uint32_t remaining_read_bytes;
+  uint32_t total_read_bytes;
+
+  char *write_buffer;
+  size_t write_buffer_size;
+
+  //
+  char *url;
+  char *host;
+
+  bool response_headers_received;
+  bool read_requested;
+  bool response_trailers_received;
+  bool read_closed;
+
+  // Recv message stuff
+  grpc_byte_buffer **recv_message;
+  // Initial metadata stuff
+  grpc_metadata_batch *recv_initial_metadata;
+  // Trailing metadata stuff
+  grpc_metadata_batch *recv_trailing_metadata;
+  grpc_chttp2_incoming_metadata_buffer imb;
+
+  // This mutex protects receive state machine execution
+  gpr_mu recv_mu;
+  // we can queue up up to 2 callbacks for each OP
+  grpc_closure *callback_list[CB_NUM_CALLBACKS][2];
+
+  // storage for header
+  cronet_bidirectional_stream_header headers[MAX_HDRS];
+  uint32_t num_headers;
+  cronet_bidirectional_stream_header_array header_array;
+};
+
+typedef struct stream_obj stream_obj;
+
+void next_send_step(stream_obj *s);
+void next_recv_step(stream_obj *s, enum e_caller caller);
+
+enum send_state cronet_send_state;
+enum recv_state cronet_recv_state;
+
+static void set_pollset_do_nothing(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                                   grpc_stream *gs, grpc_pollset *pollset) {}
+
+void enqueue_callbacks(grpc_closure *callback_list[]) {
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  if (callback_list[0]) {
+    // GRPC_CRONET_TRACE(GPR_DEBUG, "enqueuing callback = %p",
+    // callback_list[0]);
+    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[0], true, NULL);
+    callback_list[0] = NULL;
+  }
+  if (callback_list[1]) {
+    // GRPC_CRONET_TRACE(GPR_DEBUG, "enqueuing callback = %p",
+    // callback_list[1]);
+    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[1], true, NULL);
+    callback_list[1] = NULL;
+  }
+  grpc_exec_ctx_finish(&exec_ctx);
+}
+
+void on_canceled(cronet_bidirectional_stream *stream) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "on_canceled %p", stream);
+}
+void on_failed(cronet_bidirectional_stream *stream, int net_error) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "on_failed %p, error = %d", stream, net_error);
+}
+void on_succeded(cronet_bidirectional_stream *stream) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "on_succeeded %p", stream);
+}
+void on_response_trailers_received(
+    cronet_bidirectional_stream *stream,
+    const cronet_bidirectional_stream_header_array *trailers) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "R: on_response_trailers_received");
+  stream_obj *s = (stream_obj *)stream->annotation;
+
+  memset(&s->imb, 0, sizeof(s->imb));
+  grpc_chttp2_incoming_metadata_buffer_init(&s->imb);
+  int i = 0;
+  for (i = 0; i < trailers->count; i++) {
+    grpc_chttp2_incoming_metadata_buffer_add(
+        &s->imb, grpc_mdelem_from_metadata_strings(
+                     grpc_mdstr_from_string(trailers->headers[i].key),
+                     grpc_mdstr_from_string(trailers->headers[i].value)));
+  }
+  s->response_trailers_received = true;
+  next_recv_step(s, ON_RESPONSE_TRAILERS_RECEIVED);
+}
+void on_write_completed(cronet_bidirectional_stream *stream,
+                        const char *data) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "W: on_write_completed");
+  stream_obj *s = (stream_obj *)stream->annotation;
+  enqueue_callbacks(s->callback_list[CB_SEND_MESSAGE]);
+  cronet_send_state = CRONET_WRITE_COMPLETED;
+  next_send_step(s);
+}
+
+void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
+  gpr_slice read_data_slice = gpr_slice_malloc(s->total_read_bytes);
+  uint8_t *dst_p = GPR_SLICE_START_PTR(read_data_slice);
+  memcpy(dst_p, recv_data, s->total_read_bytes);
+  gpr_slice_buffer_add(&s->read_slicebuffer, read_data_slice);
+  grpc_slice_buffer_stream_init(&s->sbs, &s->read_slicebuffer, 0);
+  *s->recv_message = (grpc_byte_buffer *)&s->sbs;
+}
+
+int parse_grpc_header(const uint8_t *data) {
+  const uint8_t *p = data + 1;
+  uint32_t length = 0;
+  length |= ((uint8_t)*p++) << 24;
+  length |= ((uint8_t)*p++) << 16;
+  length |= ((uint8_t)*p++) << 8;
+  length |= ((uint8_t)*p++);
+  return length;
+}
+
+void on_read_completed(cronet_bidirectional_stream *stream, char *data,
+                       int count) {
+  stream_obj *s = (stream_obj *)stream->annotation;
+  GRPC_CRONET_TRACE(GPR_DEBUG,
+                    "R: on_read_completed count=%d, total=%d, remaining=%d",
+                    count, s->total_read_bytes, s->remaining_read_bytes);
+  if (count > 0) {
+    GPR_ASSERT(s->recv_message);
+    s->remaining_read_bytes -= count;
+    next_recv_step(s, ON_READ_COMPLETE);
+  } else {
+    s->read_closed = true;
+    next_recv_step(s, ON_READ_COMPLETE);
+  }
+}
+
+void on_response_headers_received(
+    cronet_bidirectional_stream *stream,
+    const cronet_bidirectional_stream_header_array *headers,
+    const char *negotiated_protocol) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "R: on_response_headers_received");
+  stream_obj *s = (stream_obj *)stream->annotation;
+  enqueue_callbacks(s->callback_list[CB_RECV_INITIAL_METADATA]);
+  s->response_headers_received = true;
+  next_recv_step(s, ON_RESPONSE_HEADERS_RECEIVED);
+}
+
+void on_request_headers_sent(cronet_bidirectional_stream *stream) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "W: on_request_headers_sent");
+  stream_obj *s = (stream_obj *)stream->annotation;
+  enqueue_callbacks(s->callback_list[CB_SEND_INITIAL_METADATA]);
+  cronet_send_state = CRONET_SEND_HEADER;
+  next_send_step(s);
+}
+
+// Callback function pointers (invoked by cronet in response to events)
+cronet_bidirectional_stream_callback callbacks = {on_request_headers_sent,
+                                                  on_response_headers_received,
+                                                  on_read_completed,
+                                                  on_write_completed,
+                                                  on_response_trailers_received,
+                                                  on_succeded,
+                                                  on_failed,
+                                                  on_canceled};
+
+
+void invoke_closing_callback(stream_obj *s) {
+  grpc_chttp2_incoming_metadata_buffer_publish(&s->imb,
+                                               s->recv_trailing_metadata);
+  if (s->callback_list[CB_RECV_TRAILING_METADATA]) {
+    enqueue_callbacks(s->callback_list[CB_RECV_TRAILING_METADATA]);
+  }
+}
+
+// This is invoked from perform_stream_op, and all on_xxxx callbacks.
+void next_recv_step(stream_obj *s, enum e_caller caller) {
+  gpr_mu_lock(&s->recv_mu);
+  switch (cronet_recv_state) {
+    case CRONET_RECV_IDLE:
+      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_IDLE");
+      if (caller == PERFORM_STREAM_OP ||
+          caller == ON_RESPONSE_HEADERS_RECEIVED) {
+        if (s->read_closed && s->response_trailers_received) {
+          invoke_closing_callback(s);
+          SET_RECV_STATE(CRONET_RECV_CLOSED);
+        } else if (s->response_headers_received == true &&
+                   s->read_requested == true) {
+          SET_RECV_STATE(CRONET_RECV_READ_LENGTH);
+          s->total_read_bytes = s->remaining_read_bytes =
+              GRPC_HEADER_SIZE_IN_BYTES;
+          GPR_ASSERT(s->read_buffer);
+          CRONET_READ(s->cbs, s->read_buffer, s->remaining_read_bytes);
+        }
+      }
+      break;
+    case CRONET_RECV_READ_LENGTH:
+      GRPC_CRONET_TRACE(GPR_DEBUG,
+                        "cronet_recv_state = CRONET_RECV_READ_LENGTH");
+      if (caller == ON_READ_COMPLETE) {
+        if (s->read_closed) {
+          invoke_closing_callback(s);
+          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
+          SET_RECV_STATE(CRONET_RECV_CLOSED);
+        } else {
+          GPR_ASSERT(s->remaining_read_bytes == 0);
+          SET_RECV_STATE(CRONET_RECV_READ_DATA);
+          s->total_read_bytes = s->remaining_read_bytes =
+              parse_grpc_header(s->read_buffer);
+          s->read_buffer = gpr_realloc(s->read_buffer, s->remaining_read_bytes);
+          GPR_ASSERT(s->read_buffer);
+          CRONET_READ(s->cbs, (char *)s->read_buffer, s->remaining_read_bytes);
+        }
+      }
+      break;
+    case CRONET_RECV_READ_DATA:
+      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_DATA");
+      if (caller == ON_READ_COMPLETE) {
+        if (s->remaining_read_bytes > 0) {
+          int offset = s->total_read_bytes - s->remaining_read_bytes;
+          GPR_ASSERT(s->read_buffer);
+          CRONET_READ(s->cbs, (char *)s->read_buffer + offset,
+                      s->remaining_read_bytes);
+        } else {
+          gpr_slice_buffer_init(&s->read_slicebuffer);
+          uint8_t *p = s->read_buffer;
+          process_recv_message(s, p);
+          SET_RECV_STATE(CRONET_RECV_IDLE);
+          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
+        }
+      }
+      break;
+    case CRONET_RECV_CLOSED:
+      break;
+    default:
+      GPR_ASSERT(0);  // Should not reach here
+      break;
+  }
+  gpr_mu_unlock(&s->recv_mu);
+}
+
+
+// This function takes the data from s->write_slicebuffer and assembles into
+// a contiguous byte stream with 5 byte gRPC header prepended.
+void create_grpc_frame(stream_obj *s) {
+  gpr_slice slice = gpr_slice_buffer_take_first(&s->write_slicebuffer);
+  uint8_t *raw_data = GPR_SLICE_START_PTR(slice);
+  size_t length = GPR_SLICE_LENGTH(slice);
+  s->write_buffer_size = length + GRPC_HEADER_SIZE_IN_BYTES;
+  s->write_buffer = gpr_realloc(s->write_buffer, s->write_buffer_size);
+  uint8_t *p = s->write_buffer;
+  // Append 5 byte header
+  *p++ = 0;
+  *p++ = (uint8_t)(length >> 24);
+  *p++ = (uint8_t)(length >> 16);
+  *p++ = (uint8_t)(length >> 8);
+  *p++ = (uint8_t)(length);
+  // append actual data
+  memcpy(p, raw_data, length);
+}
+
+void do_write(stream_obj *s) {
+  gpr_slice_buffer *sb = &s->write_slicebuffer;
+  GPR_ASSERT(sb->count <= 1);
+  if (sb->count > 0) {
+    create_grpc_frame(s);
+    GRPC_CRONET_TRACE(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+    cronet_bidirectional_stream_write(s->cbs, s->write_buffer,
+                                      (int)s->write_buffer_size,
+                                      false);
+  }
+}
+
+// 
+void next_send_step(stream_obj *s) {
+  switch(cronet_send_state) {
+    case CRONET_SEND_IDLE:
+      GPR_ASSERT(s->cbs);  // cronet_bidirectional_stream is not initialized yet.
+      cronet_send_state = CRONET_REQ_STARTED;
+      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_bidirectional_stream_start to %s",
+                        s->url);
+      cronet_bidirectional_stream_start(s->cbs, s->url, 0, "POST",
+                                        &s->header_array, false);
+    break;
+    case CRONET_SEND_HEADER:
+      do_write(s);
+      cronet_send_state = CRONET_WRITE;
+      break;
+    case CRONET_WRITE_COMPLETED:
+      do_write(s);
+      break;
+    default:
+      GPR_ASSERT(0);
+      break;
+  }
+}
+
+void create_url(const char *path, const char *host, stream_obj *s) {
+  const char prefix[] = "https://";
+  s->url = gpr_malloc(strlen(prefix) + strlen(host) + strlen(path) + 1);
+  strcpy(s->url, prefix);
+  strcat(s->url, host);
+  strcat(s->url, path);
+}
+
+static void convert_metadata_to_cronet_headers(grpc_linked_mdelem *head,
+                                               const char *host,
+                                               stream_obj *s) {
+  grpc_linked_mdelem *curr = head;
+  while (s->num_headers < MAX_HDRS) {
+    grpc_mdelem *mdelem = curr->md;
+    curr = curr->next;
+    const char *key = grpc_mdstr_as_c_string(mdelem->key);
+    const char *value = grpc_mdstr_as_c_string(mdelem->value);
+    if (strcmp(key, ":scheme") == 0 || strcmp(key, ":method") == 0 ||
+        strcmp(key, ":authority") == 0) {
+      // Cronet populates these fields on its own.
+      continue;
+    }
+    if (strcmp(key, ":path") == 0) {
+      // Create URL by appending :path value to the hostname
+      create_url(value, host, s);
+      GRPC_CRONET_TRACE(GPR_DEBUG, "extracted URL = %s", s->url);
+      continue;
+    }
+    s->headers[s->num_headers].key = key;
+    s->headers[s->num_headers].value = value;
+    s->num_headers++;
+    if (curr == NULL) {
+      break;
+    }
+  }
+}
+
+static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                              grpc_stream *gs, grpc_transport_stream_op *op) {
+  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
+  GPR_ASSERT(ct->engine);
+  stream_obj *s = (stream_obj *)gs;
+  if (op->recv_trailing_metadata) {
+    GRPC_CRONET_TRACE(
+        GPR_DEBUG, "perform_stream_op - recv_trailing_metadata: on_complete=%p",
+        op->on_complete);
+    s->recv_trailing_metadata = op->recv_trailing_metadata;
+    GPR_ASSERT(!s->callback_list[CB_RECV_TRAILING_METADATA][0]);
+    s->callback_list[CB_RECV_TRAILING_METADATA][0] = op->on_complete;
+  }
+  if (op->recv_message) {
+    GRPC_CRONET_TRACE(GPR_DEBUG,
+                      "perform_stream_op - recv_message: on_complete=%p",
+                      op->on_complete);
+    s->recv_message = op->recv_message;
+    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][0]);
+    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][1]);
+    s->callback_list[CB_RECV_MESSAGE][0] = op->recv_message_ready;
+    s->callback_list[CB_RECV_MESSAGE][1] = op->on_complete;
+    s->read_requested = true;
+    next_recv_step(s, PERFORM_STREAM_OP);
+  }
+  if (op->recv_initial_metadata) {
+    GRPC_CRONET_TRACE(GPR_DEBUG,
+                      "perform_stream_op - recv_initial_metadata:=%p",
+                      op->on_complete);
+    s->recv_initial_metadata = op->recv_initial_metadata;
+    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][0]);
+    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][1]);
+    s->callback_list[CB_RECV_INITIAL_METADATA][0] =
+        op->recv_initial_metadata_ready;
+    s->callback_list[CB_RECV_INITIAL_METADATA][1] = op->on_complete;
+  }
+  if (op->send_initial_metadata) {
+    GRPC_CRONET_TRACE(
+        GPR_DEBUG, "perform_stream_op - send_initial_metadata: on_complete=%p",
+        op->on_complete);
+    s->num_headers = 0;
+    convert_metadata_to_cronet_headers(op->send_initial_metadata->list.head,
+                                       ct->host, s);
+    s->header_array.count = s->num_headers;
+    s->header_array.capacity = s->num_headers;
+    s->header_array.headers = s->headers;
+    GPR_ASSERT(!s->callback_list[CB_SEND_INITIAL_METADATA][0]);
+    s->callback_list[CB_SEND_INITIAL_METADATA][0] = op->on_complete;
+  }
+  if (op->send_message) {
+    GRPC_CRONET_TRACE(GPR_DEBUG,
+                      "perform_stream_op - send_message: on_complete=%p",
+                      op->on_complete);
+    grpc_byte_stream_next(exec_ctx, op->send_message, &s->slice,
+                          op->send_message->length, NULL);
+    gpr_slice_buffer_add(&s->write_slicebuffer, s->slice);
+    if (s->cbs == NULL) {
+      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_bidirectional_stream_create");
+      s->cbs = cronet_bidirectional_stream_create(ct->engine, s, &callbacks);
+      GPR_ASSERT(s->cbs);
+      s->read_closed = false;
+      s->response_trailers_received = false;
+      s->response_headers_received = false;
+      cronet_send_state = CRONET_SEND_IDLE;
+      cronet_recv_state = CRONET_RECV_IDLE;
+    }
+    GPR_ASSERT(!s->callback_list[CB_SEND_MESSAGE][0]);
+    s->callback_list[CB_SEND_MESSAGE][0] = op->on_complete;
+    next_send_step(s);
+  }
+  if (op->send_trailing_metadata) {
+    GRPC_CRONET_TRACE(
+        GPR_DEBUG, "perform_stream_op - send_trailing_metadata: on_complete=%p",
+        op->on_complete);
+    GPR_ASSERT(!s->callback_list[CB_SEND_TRAILING_METADATA][0]);
+    s->callback_list[CB_SEND_TRAILING_METADATA][0] = op->on_complete;
+    if (s->cbs) {
+      // Send an "empty" write to the far end to signal that we're done.
+      // This will induce the server to send down trailers.
+      GRPC_CRONET_TRACE(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+      cronet_bidirectional_stream_write(s->cbs, "abc", 0, true);
+    } else {
+      // We never created a stream. This was probably an empty request.
+      invoke_closing_callback(s);
+    }
+  }
+}
+
+static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                       grpc_stream *gs, grpc_stream_refcount *refcount,
+                       const void *server_data) {
+  stream_obj *s = (stream_obj *)gs;
+  memset(s->callback_list, 0, sizeof(s->callback_list));
+  s->cbs = NULL;
+  gpr_mu_init(&s->recv_mu);
+  s->read_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
+  s->write_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
+  gpr_slice_buffer_init(&s->write_slicebuffer);
+  GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_transport - init_stream");
+  return 0;
+}
+
+static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                           grpc_stream *gs) {
+  GRPC_CRONET_TRACE(GPR_DEBUG, "Destroy stream");
+  stream_obj *s = (stream_obj *)gs;
+  s->cbs = NULL;
+  gpr_free(s->read_buffer);
+  gpr_free(s->write_buffer);
+  gpr_mu_destroy(&s->recv_mu);
+}
+
+static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
+  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
+  gpr_free(ct->host);
+  GRPC_CRONET_TRACE(GPR_DEBUG, "Destroy transport");
+}
+
+const grpc_transport_vtable cronet_vtable = {sizeof(stream_obj),
+                                             "cronet_http",
+                                             init_stream,
+                                             set_pollset_do_nothing,
+                                             perform_stream_op,
+                                             destroy_stream,
+                                             destroy_transport,
+                                             NULL,
+                                             NULL};
+#endif  // COMPILE_WITH_CRONET
-- 
GitLab


From df665073044eac553b2844450cb68a6eafbc0d01 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Tue, 19 Apr 2016 14:23:56 -0700
Subject: [PATCH 282/525] moved cronet_c_for_grpc.h in third_party

---
 src/core/ext/transport/cronet/transport/cronet_transport.c      | 2 +-
 .../objective_c/Cronet}/cronet_c_for_grpc.h                     | 0
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename {src/core/ext/transport/cronet/transport => third_party/objective_c/Cronet}/cronet_c_for_grpc.h (100%)

diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index 3b9b1b08d8..671bee638e 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -47,7 +47,7 @@
 #include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
 #include "src/core/lib/transport/metadata_batch.h"
 #include "src/core/lib/transport/transport_impl.h"
-#include "src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h"
+#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
 
 #ifdef COMPILE_WITH_CRONET
 
diff --git a/src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h b/third_party/objective_c/Cronet/cronet_c_for_grpc.h
similarity index 100%
rename from src/core/ext/transport/cronet/transport/cronet_c_for_grpc.h
rename to third_party/objective_c/Cronet/cronet_c_for_grpc.h
-- 
GitLab


From 77044830ff927c7c55a342030e2e2a9d73d0d723 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Mon, 25 Apr 2016 09:27:49 -0700
Subject: [PATCH 283/525] fixed clang formating

---
 include/grpc/grpc_security.h                  |  5 ++---
 .../client/secure/cronet_channel_create.c     | 12 ++++++------
 .../cronet/transport/cronet_transport.c       | 19 ++++++++-----------
 3 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h
index d753aaf96c..150ad05a27 100644
--- a/include/grpc/grpc_security.h
+++ b/include/grpc/grpc_security.h
@@ -300,9 +300,8 @@ GRPCAPI grpc_channel *grpc_secure_channel_create(
     const grpc_channel_args *args, void *reserved);
 
 GRPCAPI grpc_channel *grpc_custom_secure_channel_create(
-    void *engine, const char *target,
-    const grpc_channel_args *args, void *reserved);
-
+    void *engine, const char *target, const grpc_channel_args *args,
+    void *reserved);
 
 /* --- grpc_server_credentials object. ---
 
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
index 23189809f7..914c567086 100644
--- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
@@ -54,19 +54,19 @@ typedef struct grpc_cronet_transport grpc_cronet_transport;
 extern grpc_transport_vtable cronet_vtable;
 
 GRPCAPI grpc_channel *grpc_custom_secure_channel_create(
-    void *engine, const char *target,
-    const grpc_channel_args *args, void *reserved) {
+    void *engine, const char *target, const grpc_channel_args *args,
+    void *reserved) {
   grpc_cronet_transport *ct = gpr_malloc(sizeof(grpc_cronet_transport));
   ct->base.vtable = &cronet_vtable;
   ct->engine = engine;
   ct->host = gpr_malloc(strlen(target) + 1);
   strcpy(ct->host, target);
-  gpr_log(
-      GPR_DEBUG, "grpc_create_cronet_transport: cronet_engine = %p, target=%s",
-      engine, ct->host);
+  gpr_log(GPR_DEBUG,
+          "grpc_create_cronet_transport: cronet_engine = %p, target=%s", engine,
+          ct->host);
 
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   return grpc_channel_create(&exec_ctx, target, args,
-                                GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
+                             GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
 }
 #endif  // COMPILE_WITH_CRONET
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index 671bee638e..5c27a4ea00 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -41,10 +41,10 @@
 #include <grpc/support/string_util.h>
 #include <grpc/support/useful.h>
 
+#include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/support/string.h"
 #include "src/core/lib/surface/channel.h"
-#include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
 #include "src/core/lib/transport/metadata_batch.h"
 #include "src/core/lib/transport/transport_impl.h"
 #include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
@@ -215,8 +215,7 @@ void on_response_trailers_received(
   s->response_trailers_received = true;
   next_recv_step(s, ON_RESPONSE_TRAILERS_RECEIVED);
 }
-void on_write_completed(cronet_bidirectional_stream *stream,
-                        const char *data) {
+void on_write_completed(cronet_bidirectional_stream *stream, const char *data) {
   GRPC_CRONET_TRACE(GPR_DEBUG, "W: on_write_completed");
   stream_obj *s = (stream_obj *)stream->annotation;
   enqueue_callbacks(s->callback_list[CB_SEND_MESSAGE]);
@@ -288,7 +287,6 @@ cronet_bidirectional_stream_callback callbacks = {on_request_headers_sent,
                                                   on_failed,
                                                   on_canceled};
 
-
 void invoke_closing_callback(stream_obj *s) {
   grpc_chttp2_incoming_metadata_buffer_publish(&s->imb,
                                                s->recv_trailing_metadata);
@@ -363,7 +361,6 @@ void next_recv_step(stream_obj *s, enum e_caller caller) {
   gpr_mu_unlock(&s->recv_mu);
 }
 
-
 // This function takes the data from s->write_slicebuffer and assembles into
 // a contiguous byte stream with 5 byte gRPC header prepended.
 void create_grpc_frame(stream_obj *s) {
@@ -390,22 +387,22 @@ void do_write(stream_obj *s) {
     create_grpc_frame(s);
     GRPC_CRONET_TRACE(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
     cronet_bidirectional_stream_write(s->cbs, s->write_buffer,
-                                      (int)s->write_buffer_size,
-                                      false);
+                                      (int)s->write_buffer_size, false);
   }
 }
 
-// 
+//
 void next_send_step(stream_obj *s) {
-  switch(cronet_send_state) {
+  switch (cronet_send_state) {
     case CRONET_SEND_IDLE:
-      GPR_ASSERT(s->cbs);  // cronet_bidirectional_stream is not initialized yet.
+      GPR_ASSERT(
+          s->cbs);  // cronet_bidirectional_stream is not initialized yet.
       cronet_send_state = CRONET_REQ_STARTED;
       GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_bidirectional_stream_start to %s",
                         s->url);
       cronet_bidirectional_stream_start(s->cbs, s->url, 0, "POST",
                                         &s->header_array, false);
-    break;
+      break;
     case CRONET_SEND_HEADER:
       do_write(s);
       cronet_send_state = CRONET_WRITE;
-- 
GitLab


From be5186a79dee5ca96254b6d38fa2401522987f63 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Wed, 27 Apr 2016 13:47:10 -0700
Subject: [PATCH 284/525] created new grpc_cronet.h. Addressed feedback from
 jcanizales@ and ctiller@

---
 include/grpc/grpc_cronet.h                    |  51 +++
 .../client/secure/cronet_channel_create.c     |  22 +-
 .../cronet/transport/cronet_transport.c       | 315 ++++++++++--------
 3 files changed, 245 insertions(+), 143 deletions(-)
 create mode 100644 include/grpc/grpc_cronet.h

diff --git a/include/grpc/grpc_cronet.h b/include/grpc/grpc_cronet.h
new file mode 100644
index 0000000000..295e0f55e8
--- /dev/null
+++ b/include/grpc/grpc_cronet.h
@@ -0,0 +1,51 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_GRPC_CRONET_H
+#define GRPC_GRPC_CRONET_H
+
+#include <grpc/grpc.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
+    void *engine, const char *target, const grpc_channel_args *args,
+    void *reserved);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_GRPC_CRONET_H */
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
index 914c567086..96baa3984b 100644
--- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
@@ -32,6 +32,9 @@
  */
 
 #include <grpc/impl/codegen/port_platform.h>
+
+#ifdef GRPC_COMPILE_WITH_CRONET
+
 #include <stdio.h>
 #include <string.h>
 
@@ -41,23 +44,20 @@
 #include "src/core/lib/surface/channel.h"
 #include "src/core/lib/transport/transport_impl.h"
 
-#ifdef COMPILE_WITH_CRONET
 // Cronet transport object
-struct grpc_cronet_transport {
-  grpc_transport base; /* must be first element in this structure */
+typedef struct cronet_transport {
+  grpc_transport base; // must be first element in this structure
   void *engine;
   char *host;
-};
-
-typedef struct grpc_cronet_transport grpc_cronet_transport;
+} cronet_transport;
 
-extern grpc_transport_vtable cronet_vtable;
+extern grpc_transport_vtable grpc_cronet_vtable;
 
-GRPCAPI grpc_channel *grpc_custom_secure_channel_create(
+GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
     void *engine, const char *target, const grpc_channel_args *args,
     void *reserved) {
-  grpc_cronet_transport *ct = gpr_malloc(sizeof(grpc_cronet_transport));
-  ct->base.vtable = &cronet_vtable;
+  cronet_transport *ct = gpr_malloc(sizeof(cronet_transport));
+  ct->base.vtable = &grpc_cronet_vtable;
   ct->engine = engine;
   ct->host = gpr_malloc(strlen(target) + 1);
   strcpy(ct->host, target);
@@ -69,4 +69,4 @@ GRPCAPI grpc_channel *grpc_custom_secure_channel_create(
   return grpc_channel_create(&exec_ctx, target, args,
                              GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
 }
-#endif  // COMPILE_WITH_CRONET
+#endif  // GRPC_COMPILE_WITH_CRONET
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index 5c27a4ea00..c2bb9e0393 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -49,25 +49,9 @@
 #include "src/core/lib/transport/transport_impl.h"
 #include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
 
-#ifdef COMPILE_WITH_CRONET
+#ifdef GRPC_COMPILE_WITH_CRONET
 
 #define GRPC_HEADER_SIZE_IN_BYTES 5
-#define MAX_HDRS 100
-
-#define GRPC_CRONET_TRACE(...)                   \
-  {                                              \
-    if (grpc_cronet_trace) gpr_log(__VA_ARGS__); \
-  }
-#define CRONET_READ(...)                                                   \
-  {                                                                        \
-    GRPC_CRONET_TRACE(GPR_DEBUG, "R: cronet_bidirectional_stream_read()"); \
-    cronet_bidirectional_stream_read(__VA_ARGS__);                         \
-  }
-#define SET_RECV_STATE(STATE)                                                \
-  {                                                                          \
-    GRPC_CRONET_TRACE(GPR_DEBUG, "next_state = %s", recv_state_name[STATE]); \
-    cronet_recv_state = STATE;                                               \
-  }
 
 // Global flag that gets set with GRPC_TRACE env variable
 int grpc_cronet_trace = 1;
@@ -76,7 +60,7 @@ int grpc_cronet_trace = 1;
 struct grpc_cronet_transport {
   grpc_transport base; /* must be first element in this structure */
   cronet_engine *engine;
-  const char *host;
+  char *host;
 };
 
 typedef struct grpc_cronet_transport grpc_cronet_transport;
@@ -96,7 +80,8 @@ enum recv_state {
   CRONET_RECV_CLOSED,
 };
 
-const char *recv_state_name[] = {"CRONET_RECV_IDLE", "CRONET_RECV_READ_LENGTH",
+static const char *recv_state_name[] = {"CRONET_RECV_IDLE",
+                                 "CRONET_RECV_READ_LENGTH",
                                  "CRONET_RECV_READ_DATA,",
                                  "CRONET_RECV_CLOSED"};
 
@@ -120,21 +105,20 @@ enum callback_id {
 
 struct stream_obj {
   // we store received bytes here as they trickle in.
-  gpr_slice_buffer write_slicebuffer;
+  gpr_slice_buffer write_slice_buffer;
   cronet_bidirectional_stream *cbs;
   gpr_slice slice;
-  gpr_slice_buffer read_slicebuffer;
+  gpr_slice_buffer read_slice_buffer;
   struct grpc_slice_buffer_stream sbs;
   char *read_buffer;
-  uint32_t remaining_read_bytes;
-  uint32_t total_read_bytes;
+  int remaining_read_bytes;
+  int total_read_bytes;
 
   char *write_buffer;
   size_t write_buffer_size;
 
-  //
+  // Hold the URL
   char *url;
-  char *host;
 
   bool response_headers_received;
   bool read_requested;
@@ -155,57 +139,65 @@ struct stream_obj {
   grpc_closure *callback_list[CB_NUM_CALLBACKS][2];
 
   // storage for header
-  cronet_bidirectional_stream_header headers[MAX_HDRS];
+  cronet_bidirectional_stream_header *headers;
   uint32_t num_headers;
   cronet_bidirectional_stream_header_array header_array;
+  // state tracking
+  enum recv_state cronet_recv_state;
+  enum send_state cronet_send_state;
 };
 
 typedef struct stream_obj stream_obj;
 
-void next_send_step(stream_obj *s);
-void next_recv_step(stream_obj *s, enum e_caller caller);
+static void next_send_step(stream_obj *s);
+static void next_recv_step(stream_obj *s, enum e_caller caller);
 
-enum send_state cronet_send_state;
-enum recv_state cronet_recv_state;
 
 static void set_pollset_do_nothing(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                                    grpc_stream *gs, grpc_pollset *pollset) {}
 
-void enqueue_callbacks(grpc_closure *callback_list[]) {
+static void enqueue_callbacks(grpc_closure *callback_list[]) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   if (callback_list[0]) {
-    // GRPC_CRONET_TRACE(GPR_DEBUG, "enqueuing callback = %p",
-    // callback_list[0]);
     grpc_exec_ctx_enqueue(&exec_ctx, callback_list[0], true, NULL);
     callback_list[0] = NULL;
   }
   if (callback_list[1]) {
-    // GRPC_CRONET_TRACE(GPR_DEBUG, "enqueuing callback = %p",
-    // callback_list[1]);
     grpc_exec_ctx_enqueue(&exec_ctx, callback_list[1], true, NULL);
     callback_list[1] = NULL;
   }
   grpc_exec_ctx_finish(&exec_ctx);
 }
 
-void on_canceled(cronet_bidirectional_stream *stream) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "on_canceled %p", stream);
+static void on_canceled(cronet_bidirectional_stream *stream) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "on_canceled %p", stream);
+  }
 }
-void on_failed(cronet_bidirectional_stream *stream, int net_error) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "on_failed %p, error = %d", stream, net_error);
+
+static void on_failed(cronet_bidirectional_stream *stream, int net_error) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "on_failed %p, error = %d", stream, net_error);
+  }
 }
-void on_succeded(cronet_bidirectional_stream *stream) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "on_succeeded %p", stream);
+
+static void on_succeeded(cronet_bidirectional_stream *stream) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "on_succeeded %p", stream);
+  }
 }
-void on_response_trailers_received(
+
+static void on_response_trailers_received(
     cronet_bidirectional_stream *stream,
     const cronet_bidirectional_stream_header_array *trailers) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "R: on_response_trailers_received");
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "R: on_response_trailers_received");
+  }
   stream_obj *s = (stream_obj *)stream->annotation;
 
   memset(&s->imb, 0, sizeof(s->imb));
   grpc_chttp2_incoming_metadata_buffer_init(&s->imb);
-  int i = 0;
+  unsigned int i = 0;
   for (i = 0; i < trailers->count; i++) {
     grpc_chttp2_incoming_metadata_buffer_add(
         &s->imb, grpc_mdelem_from_metadata_strings(
@@ -215,26 +207,29 @@ void on_response_trailers_received(
   s->response_trailers_received = true;
   next_recv_step(s, ON_RESPONSE_TRAILERS_RECEIVED);
 }
-void on_write_completed(cronet_bidirectional_stream *stream, const char *data) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "W: on_write_completed");
+
+static void on_write_completed(cronet_bidirectional_stream *stream, const char *data) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "W: on_write_completed");
+  }
   stream_obj *s = (stream_obj *)stream->annotation;
   enqueue_callbacks(s->callback_list[CB_SEND_MESSAGE]);
-  cronet_send_state = CRONET_WRITE_COMPLETED;
+  s->cronet_send_state = CRONET_WRITE_COMPLETED;
   next_send_step(s);
 }
 
-void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
-  gpr_slice read_data_slice = gpr_slice_malloc(s->total_read_bytes);
+static void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
+  gpr_slice read_data_slice = gpr_slice_malloc((uint32_t) s->total_read_bytes);
   uint8_t *dst_p = GPR_SLICE_START_PTR(read_data_slice);
   memcpy(dst_p, recv_data, s->total_read_bytes);
-  gpr_slice_buffer_add(&s->read_slicebuffer, read_data_slice);
-  grpc_slice_buffer_stream_init(&s->sbs, &s->read_slicebuffer, 0);
+  gpr_slice_buffer_add(&s->read_slice_buffer, read_data_slice);
+  grpc_slice_buffer_stream_init(&s->sbs, &s->read_slice_buffer, 0);
   *s->recv_message = (grpc_byte_buffer *)&s->sbs;
 }
 
-int parse_grpc_header(const uint8_t *data) {
+static int parse_grpc_header(const uint8_t *data) {
   const uint8_t *p = data + 1;
-  uint32_t length = 0;
+  int length = 0;
   length |= ((uint8_t)*p++) << 24;
   length |= ((uint8_t)*p++) << 16;
   length |= ((uint8_t)*p++) << 8;
@@ -242,12 +237,13 @@ int parse_grpc_header(const uint8_t *data) {
   return length;
 }
 
-void on_read_completed(cronet_bidirectional_stream *stream, char *data,
+static void on_read_completed(cronet_bidirectional_stream *stream, char *data,
                        int count) {
   stream_obj *s = (stream_obj *)stream->annotation;
-  GRPC_CRONET_TRACE(GPR_DEBUG,
-                    "R: on_read_completed count=%d, total=%d, remaining=%d",
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "R: on_read_completed count=%d, total=%d, remaining=%d",
                     count, s->total_read_bytes, s->remaining_read_bytes);
+  }
   if (count > 0) {
     GPR_ASSERT(s->recv_message);
     s->remaining_read_bytes -= count;
@@ -258,36 +254,40 @@ void on_read_completed(cronet_bidirectional_stream *stream, char *data,
   }
 }
 
-void on_response_headers_received(
+static void on_response_headers_received(
     cronet_bidirectional_stream *stream,
     const cronet_bidirectional_stream_header_array *headers,
     const char *negotiated_protocol) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "R: on_response_headers_received");
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "R: on_response_headers_received");
+  }
   stream_obj *s = (stream_obj *)stream->annotation;
   enqueue_callbacks(s->callback_list[CB_RECV_INITIAL_METADATA]);
   s->response_headers_received = true;
   next_recv_step(s, ON_RESPONSE_HEADERS_RECEIVED);
 }
 
-void on_request_headers_sent(cronet_bidirectional_stream *stream) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "W: on_request_headers_sent");
+static void on_request_headers_sent(cronet_bidirectional_stream *stream) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "W: on_request_headers_sent");
+  }
   stream_obj *s = (stream_obj *)stream->annotation;
   enqueue_callbacks(s->callback_list[CB_SEND_INITIAL_METADATA]);
-  cronet_send_state = CRONET_SEND_HEADER;
+  s->cronet_send_state = CRONET_SEND_HEADER;
   next_send_step(s);
 }
 
 // Callback function pointers (invoked by cronet in response to events)
-cronet_bidirectional_stream_callback callbacks = {on_request_headers_sent,
+static cronet_bidirectional_stream_callback callbacks = {on_request_headers_sent,
                                                   on_response_headers_received,
                                                   on_read_completed,
                                                   on_write_completed,
                                                   on_response_trailers_received,
-                                                  on_succeded,
+                                                  on_succeeded,
                                                   on_failed,
                                                   on_canceled};
 
-void invoke_closing_callback(stream_obj *s) {
+static void invoke_closing_callback(stream_obj *s) {
   grpc_chttp2_incoming_metadata_buffer_publish(&s->imb,
                                                s->recv_trailing_metadata);
   if (s->callback_list[CB_RECV_TRAILING_METADATA]) {
@@ -295,59 +295,75 @@ void invoke_closing_callback(stream_obj *s) {
   }
 }
 
+static void set_recv_state(stream_obj *s, enum recv_state state) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "next_state = %s", recv_state_name[state]);
+  }
+  s->cronet_recv_state = state;
+}
+
+
 // This is invoked from perform_stream_op, and all on_xxxx callbacks.
-void next_recv_step(stream_obj *s, enum e_caller caller) {
+static void next_recv_step(stream_obj *s, enum e_caller caller) {
   gpr_mu_lock(&s->recv_mu);
-  switch (cronet_recv_state) {
+  switch (s->cronet_recv_state) {
     case CRONET_RECV_IDLE:
-      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_IDLE");
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_IDLE");
+      }
       if (caller == PERFORM_STREAM_OP ||
           caller == ON_RESPONSE_HEADERS_RECEIVED) {
         if (s->read_closed && s->response_trailers_received) {
           invoke_closing_callback(s);
-          SET_RECV_STATE(CRONET_RECV_CLOSED);
+          set_recv_state(s, CRONET_RECV_CLOSED);
         } else if (s->response_headers_received == true &&
                    s->read_requested == true) {
-          SET_RECV_STATE(CRONET_RECV_READ_LENGTH);
+          set_recv_state(s, CRONET_RECV_READ_LENGTH);
           s->total_read_bytes = s->remaining_read_bytes =
               GRPC_HEADER_SIZE_IN_BYTES;
           GPR_ASSERT(s->read_buffer);
-          CRONET_READ(s->cbs, s->read_buffer, s->remaining_read_bytes);
+          if (grpc_cronet_trace) {gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");}
+          cronet_bidirectional_stream_read(s->cbs, s->read_buffer, s->remaining_read_bytes);
         }
       }
       break;
     case CRONET_RECV_READ_LENGTH:
-      GRPC_CRONET_TRACE(GPR_DEBUG,
-                        "cronet_recv_state = CRONET_RECV_READ_LENGTH");
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_LENGTH");
+      }
       if (caller == ON_READ_COMPLETE) {
         if (s->read_closed) {
           invoke_closing_callback(s);
           enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
-          SET_RECV_STATE(CRONET_RECV_CLOSED);
+          set_recv_state(s, CRONET_RECV_CLOSED);
         } else {
           GPR_ASSERT(s->remaining_read_bytes == 0);
-          SET_RECV_STATE(CRONET_RECV_READ_DATA);
+          set_recv_state(s, CRONET_RECV_READ_DATA);
           s->total_read_bytes = s->remaining_read_bytes =
-              parse_grpc_header(s->read_buffer);
-          s->read_buffer = gpr_realloc(s->read_buffer, s->remaining_read_bytes);
+              parse_grpc_header((const uint8_t *)s->read_buffer);
+          s->read_buffer = gpr_realloc(s->read_buffer, (uint32_t)s->remaining_read_bytes);
           GPR_ASSERT(s->read_buffer);
-          CRONET_READ(s->cbs, (char *)s->read_buffer, s->remaining_read_bytes);
+          if (grpc_cronet_trace) {gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");}
+          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer, s->remaining_read_bytes);
         }
       }
       break;
     case CRONET_RECV_READ_DATA:
-      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_DATA");
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_DATA");
+      }
       if (caller == ON_READ_COMPLETE) {
         if (s->remaining_read_bytes > 0) {
           int offset = s->total_read_bytes - s->remaining_read_bytes;
           GPR_ASSERT(s->read_buffer);
-          CRONET_READ(s->cbs, (char *)s->read_buffer + offset,
+          if (grpc_cronet_trace) {gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");}
+          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer + offset,
                       s->remaining_read_bytes);
         } else {
-          gpr_slice_buffer_init(&s->read_slicebuffer);
-          uint8_t *p = s->read_buffer;
+          gpr_slice_buffer_init(&s->read_slice_buffer);
+          uint8_t *p = (uint8_t *)s->read_buffer;
           process_recv_message(s, p);
-          SET_RECV_STATE(CRONET_RECV_IDLE);
+          set_recv_state(s, CRONET_RECV_IDLE);
           enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
         }
       }
@@ -361,15 +377,15 @@ void next_recv_step(stream_obj *s, enum e_caller caller) {
   gpr_mu_unlock(&s->recv_mu);
 }
 
-// This function takes the data from s->write_slicebuffer and assembles into
+// This function takes the data from s->write_slice_buffer and assembles into
 // a contiguous byte stream with 5 byte gRPC header prepended.
-void create_grpc_frame(stream_obj *s) {
-  gpr_slice slice = gpr_slice_buffer_take_first(&s->write_slicebuffer);
+static void create_grpc_frame(stream_obj *s) {
+  gpr_slice slice = gpr_slice_buffer_take_first(&s->write_slice_buffer);
   uint8_t *raw_data = GPR_SLICE_START_PTR(slice);
   size_t length = GPR_SLICE_LENGTH(slice);
   s->write_buffer_size = length + GRPC_HEADER_SIZE_IN_BYTES;
   s->write_buffer = gpr_realloc(s->write_buffer, s->write_buffer_size);
-  uint8_t *p = s->write_buffer;
+  uint8_t *p = (uint8_t *)s->write_buffer;
   // Append 5 byte header
   *p++ = 0;
   *p++ = (uint8_t)(length >> 24);
@@ -380,32 +396,37 @@ void create_grpc_frame(stream_obj *s) {
   memcpy(p, raw_data, length);
 }
 
-void do_write(stream_obj *s) {
-  gpr_slice_buffer *sb = &s->write_slicebuffer;
+static void do_write(stream_obj *s) {
+  gpr_slice_buffer *sb = &s->write_slice_buffer;
   GPR_ASSERT(sb->count <= 1);
   if (sb->count > 0) {
     create_grpc_frame(s);
-    GRPC_CRONET_TRACE(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+    }
     cronet_bidirectional_stream_write(s->cbs, s->write_buffer,
                                       (int)s->write_buffer_size, false);
   }
 }
 
 //
-void next_send_step(stream_obj *s) {
-  switch (cronet_send_state) {
+static void next_send_step(stream_obj *s) {
+  switch (s->cronet_send_state) {
     case CRONET_SEND_IDLE:
       GPR_ASSERT(
           s->cbs);  // cronet_bidirectional_stream is not initialized yet.
-      cronet_send_state = CRONET_REQ_STARTED;
-      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_bidirectional_stream_start to %s",
-                        s->url);
+      s->cronet_send_state = CRONET_REQ_STARTED;
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_start to %s", s->url);
+      }
       cronet_bidirectional_stream_start(s->cbs, s->url, 0, "POST",
                                         &s->header_array, false);
+      // we no longer need the memory that was allocated earlier.
+      gpr_free(s->header_array.headers);
       break;
     case CRONET_SEND_HEADER:
       do_write(s);
-      cronet_send_state = CRONET_WRITE;
+      s->cronet_send_state = CRONET_WRITE;
       break;
     case CRONET_WRITE_COMPLETED:
       do_write(s);
@@ -416,19 +437,25 @@ void next_send_step(stream_obj *s) {
   }
 }
 
-void create_url(const char *path, const char *host, stream_obj *s) {
-  const char prefix[] = "https://";
-  s->url = gpr_malloc(strlen(prefix) + strlen(host) + strlen(path) + 1);
-  strcpy(s->url, prefix);
-  strcat(s->url, host);
-  strcat(s->url, path);
-}
-
 static void convert_metadata_to_cronet_headers(grpc_linked_mdelem *head,
                                                const char *host,
                                                stream_obj *s) {
   grpc_linked_mdelem *curr = head;
-  while (s->num_headers < MAX_HDRS) {
+  // Walk the linked list and get number of header fields
+  uint32_t num_headers_available = 0;
+  while (curr != NULL) {
+    curr = curr->next;
+    num_headers_available++;
+  }
+  // Allocate enough memory
+  s->headers = (cronet_bidirectional_stream_header *)
+      gpr_malloc(sizeof(cronet_bidirectional_stream_header) * num_headers_available);
+
+  // Walk the linked list again, this time copying the header fields. s->num_headers
+  // can be less than num_headers_available, as some headers are not used for cronet
+  curr = head;
+  s->num_headers = 0;
+  while (s->num_headers < num_headers_available) {
     grpc_mdelem *mdelem = curr->md;
     curr = curr->next;
     const char *key = grpc_mdstr_as_c_string(mdelem->key);
@@ -440,8 +467,10 @@ static void convert_metadata_to_cronet_headers(grpc_linked_mdelem *head,
     }
     if (strcmp(key, ":path") == 0) {
       // Create URL by appending :path value to the hostname
-      create_url(value, host, s);
-      GRPC_CRONET_TRACE(GPR_DEBUG, "extracted URL = %s", s->url);
+      gpr_asprintf(&s->url, "https://%s%s", host, value);
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "extracted URL = %s", s->url);
+      }
       continue;
     }
     s->headers[s->num_headers].key = key;
@@ -459,18 +488,21 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   GPR_ASSERT(ct->engine);
   stream_obj *s = (stream_obj *)gs;
   if (op->recv_trailing_metadata) {
-    GRPC_CRONET_TRACE(
+    if (grpc_cronet_trace) {
+      gpr_log(
         GPR_DEBUG, "perform_stream_op - recv_trailing_metadata: on_complete=%p",
         op->on_complete);
+    }
     s->recv_trailing_metadata = op->recv_trailing_metadata;
     GPR_ASSERT(!s->callback_list[CB_RECV_TRAILING_METADATA][0]);
     s->callback_list[CB_RECV_TRAILING_METADATA][0] = op->on_complete;
   }
   if (op->recv_message) {
-    GRPC_CRONET_TRACE(GPR_DEBUG,
-                      "perform_stream_op - recv_message: on_complete=%p",
-                      op->on_complete);
-    s->recv_message = op->recv_message;
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "perform_stream_op - recv_message: on_complete=%p",
+                         op->on_complete);
+    }
+    s->recv_message = (grpc_byte_buffer **)op->recv_message;
     GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][0]);
     GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][1]);
     s->callback_list[CB_RECV_MESSAGE][0] = op->recv_message_ready;
@@ -479,9 +511,10 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
     next_recv_step(s, PERFORM_STREAM_OP);
   }
   if (op->recv_initial_metadata) {
-    GRPC_CRONET_TRACE(GPR_DEBUG,
-                      "perform_stream_op - recv_initial_metadata:=%p",
-                      op->on_complete);
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "perform_stream_op - recv_initial_metadata:=%p",
+                         op->on_complete);
+    }
     s->recv_initial_metadata = op->recv_initial_metadata;
     GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][0]);
     GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][1]);
@@ -490,9 +523,11 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
     s->callback_list[CB_RECV_INITIAL_METADATA][1] = op->on_complete;
   }
   if (op->send_initial_metadata) {
-    GRPC_CRONET_TRACE(
+    if (grpc_cronet_trace) {
+      gpr_log(
         GPR_DEBUG, "perform_stream_op - send_initial_metadata: on_complete=%p",
         op->on_complete);
+    }
     s->num_headers = 0;
     convert_metadata_to_cronet_headers(op->send_initial_metadata->list.head,
                                        ct->host, s);
@@ -503,36 +538,45 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
     s->callback_list[CB_SEND_INITIAL_METADATA][0] = op->on_complete;
   }
   if (op->send_message) {
-    GRPC_CRONET_TRACE(GPR_DEBUG,
-                      "perform_stream_op - send_message: on_complete=%p",
-                      op->on_complete);
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "perform_stream_op - send_message: on_complete=%p",
+                         op->on_complete);
+    }
     grpc_byte_stream_next(exec_ctx, op->send_message, &s->slice,
                           op->send_message->length, NULL);
-    gpr_slice_buffer_add(&s->write_slicebuffer, s->slice);
+    // Check that compression flag is not ON. We don't support compression yet.
+    // TODO (makdharma): add compression support
+    GPR_ASSERT(op->send_message->flags == 0);
+    gpr_slice_buffer_add(&s->write_slice_buffer, s->slice);
     if (s->cbs == NULL) {
-      GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_bidirectional_stream_create");
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_create");
+      }
       s->cbs = cronet_bidirectional_stream_create(ct->engine, s, &callbacks);
       GPR_ASSERT(s->cbs);
       s->read_closed = false;
       s->response_trailers_received = false;
       s->response_headers_received = false;
-      cronet_send_state = CRONET_SEND_IDLE;
-      cronet_recv_state = CRONET_RECV_IDLE;
+      s->cronet_send_state = CRONET_SEND_IDLE;
+      s->cronet_recv_state = CRONET_RECV_IDLE;
     }
     GPR_ASSERT(!s->callback_list[CB_SEND_MESSAGE][0]);
     s->callback_list[CB_SEND_MESSAGE][0] = op->on_complete;
     next_send_step(s);
   }
   if (op->send_trailing_metadata) {
-    GRPC_CRONET_TRACE(
-        GPR_DEBUG, "perform_stream_op - send_trailing_metadata: on_complete=%p",
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "perform_stream_op - send_trailing_metadata: on_complete=%p",
         op->on_complete);
+    }
     GPR_ASSERT(!s->callback_list[CB_SEND_TRAILING_METADATA][0]);
     s->callback_list[CB_SEND_TRAILING_METADATA][0] = op->on_complete;
     if (s->cbs) {
       // Send an "empty" write to the far end to signal that we're done.
       // This will induce the server to send down trailers.
-      GRPC_CRONET_TRACE(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+      }
       cronet_bidirectional_stream_write(s->cbs, "abc", 0, true);
     } else {
       // We never created a stream. This was probably an empty request.
@@ -550,34 +594,41 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   gpr_mu_init(&s->recv_mu);
   s->read_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
   s->write_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
-  gpr_slice_buffer_init(&s->write_slicebuffer);
-  GRPC_CRONET_TRACE(GPR_DEBUG, "cronet_transport - init_stream");
+  gpr_slice_buffer_init(&s->write_slice_buffer);
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "cronet_transport - init_stream");
+  }
   return 0;
 }
 
 static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                            grpc_stream *gs) {
-  GRPC_CRONET_TRACE(GPR_DEBUG, "Destroy stream");
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "Destroy stream");
+  }
   stream_obj *s = (stream_obj *)gs;
   s->cbs = NULL;
   gpr_free(s->read_buffer);
   gpr_free(s->write_buffer);
+  gpr_free(s->url);
   gpr_mu_destroy(&s->recv_mu);
 }
 
 static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
   grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
   gpr_free(ct->host);
-  GRPC_CRONET_TRACE(GPR_DEBUG, "Destroy transport");
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "Destroy transport");
+  }
 }
 
-const grpc_transport_vtable cronet_vtable = {sizeof(stream_obj),
+const grpc_transport_vtable grpc_cronet_vtable = {sizeof(stream_obj),
                                              "cronet_http",
                                              init_stream,
                                              set_pollset_do_nothing,
                                              perform_stream_op,
+                                             NULL,
                                              destroy_stream,
                                              destroy_transport,
-                                             NULL,
                                              NULL};
-#endif  // COMPILE_WITH_CRONET
+#endif  // GRPC_COMPILE_WITH_CRONET
-- 
GitLab


From 808131932e8ef8b9ec239256407f6e2e0f270948 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Fri, 29 Apr 2016 13:36:32 -0700
Subject: [PATCH 285/525] reverting stuff

---
 include/grpc/grpc_security.h | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h
index 150ad05a27..79199cc5d6 100644
--- a/include/grpc/grpc_security.h
+++ b/include/grpc/grpc_security.h
@@ -299,10 +299,6 @@ GRPCAPI grpc_channel *grpc_secure_channel_create(
     grpc_channel_credentials *creds, const char *target,
     const grpc_channel_args *args, void *reserved);
 
-GRPCAPI grpc_channel *grpc_custom_secure_channel_create(
-    void *engine, const char *target, const grpc_channel_args *args,
-    void *reserved);
-
 /* --- grpc_server_credentials object. ---
 
    A server credentials object represents a way to authenticate a server.  */
-- 
GitLab


From 2389ad629514cdd58f0fda0042f04b89b4013d44 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Fri, 29 Apr 2016 14:49:59 -0700
Subject: [PATCH 286/525] Clang formatting fixes

---
 .../client/secure/cronet_channel_create.c     |   2 +-
 .../cronet/transport/cronet_transport.c       | 106 +++++++++---------
 2 files changed, 57 insertions(+), 51 deletions(-)

diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
index 96baa3984b..a6cb1f70a7 100644
--- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
@@ -46,7 +46,7 @@
 
 // Cronet transport object
 typedef struct cronet_transport {
-  grpc_transport base; // must be first element in this structure
+  grpc_transport base;  // must be first element in this structure
   void *engine;
   char *host;
 } cronet_transport;
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index c2bb9e0393..d337e84606 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -80,10 +80,9 @@ enum recv_state {
   CRONET_RECV_CLOSED,
 };
 
-static const char *recv_state_name[] = {"CRONET_RECV_IDLE",
-                                 "CRONET_RECV_READ_LENGTH",
-                                 "CRONET_RECV_READ_DATA,",
-                                 "CRONET_RECV_CLOSED"};
+static const char *recv_state_name[] = {
+    "CRONET_RECV_IDLE", "CRONET_RECV_READ_LENGTH", "CRONET_RECV_READ_DATA,",
+    "CRONET_RECV_CLOSED"};
 
 // Enum that identifies calling function.
 enum e_caller {
@@ -152,7 +151,6 @@ typedef struct stream_obj stream_obj;
 static void next_send_step(stream_obj *s);
 static void next_recv_step(stream_obj *s, enum e_caller caller);
 
-
 static void set_pollset_do_nothing(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                                    grpc_stream *gs, grpc_pollset *pollset) {}
 
@@ -208,7 +206,8 @@ static void on_response_trailers_received(
   next_recv_step(s, ON_RESPONSE_TRAILERS_RECEIVED);
 }
 
-static void on_write_completed(cronet_bidirectional_stream *stream, const char *data) {
+static void on_write_completed(cronet_bidirectional_stream *stream,
+                               const char *data) {
   if (grpc_cronet_trace) {
     gpr_log(GPR_DEBUG, "W: on_write_completed");
   }
@@ -219,7 +218,7 @@ static void on_write_completed(cronet_bidirectional_stream *stream, const char *
 }
 
 static void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
-  gpr_slice read_data_slice = gpr_slice_malloc((uint32_t) s->total_read_bytes);
+  gpr_slice read_data_slice = gpr_slice_malloc((uint32_t)s->total_read_bytes);
   uint8_t *dst_p = GPR_SLICE_START_PTR(read_data_slice);
   memcpy(dst_p, recv_data, s->total_read_bytes);
   gpr_slice_buffer_add(&s->read_slice_buffer, read_data_slice);
@@ -238,11 +237,11 @@ static int parse_grpc_header(const uint8_t *data) {
 }
 
 static void on_read_completed(cronet_bidirectional_stream *stream, char *data,
-                       int count) {
+                              int count) {
   stream_obj *s = (stream_obj *)stream->annotation;
   if (grpc_cronet_trace) {
     gpr_log(GPR_DEBUG, "R: on_read_completed count=%d, total=%d, remaining=%d",
-                    count, s->total_read_bytes, s->remaining_read_bytes);
+            count, s->total_read_bytes, s->remaining_read_bytes);
   }
   if (count > 0) {
     GPR_ASSERT(s->recv_message);
@@ -278,14 +277,15 @@ static void on_request_headers_sent(cronet_bidirectional_stream *stream) {
 }
 
 // Callback function pointers (invoked by cronet in response to events)
-static cronet_bidirectional_stream_callback callbacks = {on_request_headers_sent,
-                                                  on_response_headers_received,
-                                                  on_read_completed,
-                                                  on_write_completed,
-                                                  on_response_trailers_received,
-                                                  on_succeeded,
-                                                  on_failed,
-                                                  on_canceled};
+static cronet_bidirectional_stream_callback callbacks = {
+    on_request_headers_sent,
+    on_response_headers_received,
+    on_read_completed,
+    on_write_completed,
+    on_response_trailers_received,
+    on_succeeded,
+    on_failed,
+    on_canceled};
 
 static void invoke_closing_callback(stream_obj *s) {
   grpc_chttp2_incoming_metadata_buffer_publish(&s->imb,
@@ -302,7 +302,6 @@ static void set_recv_state(stream_obj *s, enum recv_state state) {
   s->cronet_recv_state = state;
 }
 
-
 // This is invoked from perform_stream_op, and all on_xxxx callbacks.
 static void next_recv_step(stream_obj *s, enum e_caller caller) {
   gpr_mu_lock(&s->recv_mu);
@@ -322,8 +321,11 @@ static void next_recv_step(stream_obj *s, enum e_caller caller) {
           s->total_read_bytes = s->remaining_read_bytes =
               GRPC_HEADER_SIZE_IN_BYTES;
           GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");}
-          cronet_bidirectional_stream_read(s->cbs, s->read_buffer, s->remaining_read_bytes);
+          if (grpc_cronet_trace) {
+            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
+          }
+          cronet_bidirectional_stream_read(s->cbs, s->read_buffer,
+                                           s->remaining_read_bytes);
         }
       }
       break;
@@ -341,10 +343,14 @@ static void next_recv_step(stream_obj *s, enum e_caller caller) {
           set_recv_state(s, CRONET_RECV_READ_DATA);
           s->total_read_bytes = s->remaining_read_bytes =
               parse_grpc_header((const uint8_t *)s->read_buffer);
-          s->read_buffer = gpr_realloc(s->read_buffer, (uint32_t)s->remaining_read_bytes);
+          s->read_buffer =
+              gpr_realloc(s->read_buffer, (uint32_t)s->remaining_read_bytes);
           GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");}
-          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer, s->remaining_read_bytes);
+          if (grpc_cronet_trace) {
+            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
+          }
+          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer,
+                                           s->remaining_read_bytes);
         }
       }
       break;
@@ -356,9 +362,11 @@ static void next_recv_step(stream_obj *s, enum e_caller caller) {
         if (s->remaining_read_bytes > 0) {
           int offset = s->total_read_bytes - s->remaining_read_bytes;
           GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");}
-          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer + offset,
-                      s->remaining_read_bytes);
+          if (grpc_cronet_trace) {
+            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
+          }
+          cronet_bidirectional_stream_read(
+              s->cbs, (char *)s->read_buffer + offset, s->remaining_read_bytes);
         } else {
           gpr_slice_buffer_init(&s->read_slice_buffer);
           uint8_t *p = (uint8_t *)s->read_buffer;
@@ -448,11 +456,13 @@ static void convert_metadata_to_cronet_headers(grpc_linked_mdelem *head,
     num_headers_available++;
   }
   // Allocate enough memory
-  s->headers = (cronet_bidirectional_stream_header *)
-      gpr_malloc(sizeof(cronet_bidirectional_stream_header) * num_headers_available);
+  s->headers = (cronet_bidirectional_stream_header *)gpr_malloc(
+      sizeof(cronet_bidirectional_stream_header) * num_headers_available);
 
-  // Walk the linked list again, this time copying the header fields. s->num_headers
-  // can be less than num_headers_available, as some headers are not used for cronet
+  // Walk the linked list again, this time copying the header fields.
+  // s->num_headers
+  // can be less than num_headers_available, as some headers are not used for
+  // cronet
   curr = head;
   s->num_headers = 0;
   while (s->num_headers < num_headers_available) {
@@ -489,9 +499,9 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   stream_obj *s = (stream_obj *)gs;
   if (op->recv_trailing_metadata) {
     if (grpc_cronet_trace) {
-      gpr_log(
-        GPR_DEBUG, "perform_stream_op - recv_trailing_metadata: on_complete=%p",
-        op->on_complete);
+      gpr_log(GPR_DEBUG,
+              "perform_stream_op - recv_trailing_metadata: on_complete=%p",
+              op->on_complete);
     }
     s->recv_trailing_metadata = op->recv_trailing_metadata;
     GPR_ASSERT(!s->callback_list[CB_RECV_TRAILING_METADATA][0]);
@@ -500,7 +510,7 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   if (op->recv_message) {
     if (grpc_cronet_trace) {
       gpr_log(GPR_DEBUG, "perform_stream_op - recv_message: on_complete=%p",
-                         op->on_complete);
+              op->on_complete);
     }
     s->recv_message = (grpc_byte_buffer **)op->recv_message;
     GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][0]);
@@ -513,7 +523,7 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   if (op->recv_initial_metadata) {
     if (grpc_cronet_trace) {
       gpr_log(GPR_DEBUG, "perform_stream_op - recv_initial_metadata:=%p",
-                         op->on_complete);
+              op->on_complete);
     }
     s->recv_initial_metadata = op->recv_initial_metadata;
     GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][0]);
@@ -524,9 +534,9 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   }
   if (op->send_initial_metadata) {
     if (grpc_cronet_trace) {
-      gpr_log(
-        GPR_DEBUG, "perform_stream_op - send_initial_metadata: on_complete=%p",
-        op->on_complete);
+      gpr_log(GPR_DEBUG,
+              "perform_stream_op - send_initial_metadata: on_complete=%p",
+              op->on_complete);
     }
     s->num_headers = 0;
     convert_metadata_to_cronet_headers(op->send_initial_metadata->list.head,
@@ -540,7 +550,7 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   if (op->send_message) {
     if (grpc_cronet_trace) {
       gpr_log(GPR_DEBUG, "perform_stream_op - send_message: on_complete=%p",
-                         op->on_complete);
+              op->on_complete);
     }
     grpc_byte_stream_next(exec_ctx, op->send_message, &s->slice,
                           op->send_message->length, NULL);
@@ -566,8 +576,9 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   }
   if (op->send_trailing_metadata) {
     if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "perform_stream_op - send_trailing_metadata: on_complete=%p",
-        op->on_complete);
+      gpr_log(GPR_DEBUG,
+              "perform_stream_op - send_trailing_metadata: on_complete=%p",
+              op->on_complete);
     }
     GPR_ASSERT(!s->callback_list[CB_SEND_TRAILING_METADATA][0]);
     s->callback_list[CB_SEND_TRAILING_METADATA][0] = op->on_complete;
@@ -622,13 +633,8 @@ static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
   }
 }
 
-const grpc_transport_vtable grpc_cronet_vtable = {sizeof(stream_obj),
-                                             "cronet_http",
-                                             init_stream,
-                                             set_pollset_do_nothing,
-                                             perform_stream_op,
-                                             NULL,
-                                             destroy_stream,
-                                             destroy_transport,
-                                             NULL};
+const grpc_transport_vtable grpc_cronet_vtable = {
+    sizeof(stream_obj),     "cronet_http",     init_stream,
+    set_pollset_do_nothing, perform_stream_op, NULL,
+    destroy_stream,         destroy_transport, NULL};
 #endif  // GRPC_COMPILE_WITH_CRONET
-- 
GitLab


From 63ee8ce43cb9bcd9832fb0a5303b8228a009c1c2 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Sun, 1 May 2016 15:12:18 -0700
Subject: [PATCH 287/525] Reran tools/buildgen/generate_projects.sh again.

---
 grpc.def                                           | 1 +
 src/python/grpcio/grpc/_cython/imports.generated.c | 2 ++
 src/python/grpcio/grpc/_cython/imports.generated.h | 4 ++++
 src/ruby/ext/grpc/rb_grpc_imports.generated.c      | 2 ++
 src/ruby/ext/grpc/rb_grpc_imports.generated.h      | 4 ++++
 5 files changed, 13 insertions(+)

diff --git a/grpc.def b/grpc.def
index 61948ed1b8..09a94a6cd0 100644
--- a/grpc.def
+++ b/grpc.def
@@ -87,6 +87,7 @@ EXPORTS
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
     grpc_call_error_to_string
+    grpc_cronet_secure_channel_create
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index f0a40dbb35..09551472b5 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -125,6 +125,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -395,6 +396,7 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index d5e810b7cf..54c8aaad13 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -325,6 +326,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
+extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
+#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index bc43f9d36b..cebbe8c40f 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -125,6 +125,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -391,6 +392,7 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index b67361ca25..d7ea6c574c 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -325,6 +326,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
+extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
+#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
-- 
GitLab


From 125590f9d5ebc53271846401d6087e47eced9897 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Mon, 2 May 2016 07:37:16 -0700
Subject: [PATCH 288/525] Add grpc_metadata_batch_size() function.

---
 src/core/lib/transport/metadata.h       | 4 ++--
 src/core/lib/transport/metadata_batch.c | 9 +++++++++
 src/core/lib/transport/metadata_batch.h | 3 +++
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index 77c32c72de..4ecbbd1b1b 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -148,8 +148,8 @@ const char *grpc_mdstr_as_c_string(grpc_mdstr *s);
 #define GRPC_MDSTR_LENGTH(s) (GPR_SLICE_LENGTH(s->slice))
 
 /* We add 32 bytes of padding as per RFC-7540 section 6.5.2. */
-#define GRPC_MDELEM_LENGTH(e) (GRPC_MDSTR_LENGTH(e->key) + \
-                               GRPC_MDSTR_LENGTH(e->value) + 32)
+#define GRPC_MDELEM_LENGTH(e) (GRPC_MDSTR_LENGTH((e)->key) + \
+                               GRPC_MDSTR_LENGTH((e)->value) + 32)
 
 int grpc_mdstr_is_legal_header(grpc_mdstr *s);
 int grpc_mdstr_is_legal_nonbin_header(grpc_mdstr *s);
diff --git a/src/core/lib/transport/metadata_batch.c b/src/core/lib/transport/metadata_batch.c
index 4567221a48..4e1cd8e2c1 100644
--- a/src/core/lib/transport/metadata_batch.c
+++ b/src/core/lib/transport/metadata_batch.c
@@ -192,3 +192,12 @@ int grpc_metadata_batch_is_empty(grpc_metadata_batch *batch) {
          gpr_time_cmp(gpr_inf_future(batch->deadline.clock_type),
                       batch->deadline) == 0;
 }
+
+size_t grpc_metadata_batch_size(grpc_metadata_batch *batch) {
+  size_t size = 0;
+  for (grpc_linked_mdelem* elem = batch->list.head;
+       elem != NULL; elem = elem->next) {
+    size += GRPC_MDELEM_LENGTH(elem->md);
+  }
+  return size;
+}
diff --git a/src/core/lib/transport/metadata_batch.h b/src/core/lib/transport/metadata_batch.h
index b62668876e..7af823f7ca 100644
--- a/src/core/lib/transport/metadata_batch.h
+++ b/src/core/lib/transport/metadata_batch.h
@@ -66,6 +66,9 @@ void grpc_metadata_batch_destroy(grpc_metadata_batch *batch);
 void grpc_metadata_batch_clear(grpc_metadata_batch *batch);
 int grpc_metadata_batch_is_empty(grpc_metadata_batch *batch);
 
+/* Returns the transport size of the batch. */
+size_t grpc_metadata_batch_size(grpc_metadata_batch *batch);
+
 /** Moves the metadata information from \a src to \a dst. Upon return, \a src is
  * zeroed. */
 void grpc_metadata_batch_move(grpc_metadata_batch *dst,
-- 
GitLab


From ebbbce3e6e6f08a9d35292296cbd066b0a4c4a67 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Mon, 2 May 2016 09:54:04 -0700
Subject: [PATCH 289/525] Changed writing code to honor the peer's header size
 limit setting. Changed large_metadata test to only cover the case where both
 the client and server support large metadata; I will cover the other cases in
 separate tests in a subsequent commit.

---
 .../chttp2/transport/chttp2_transport.c       | 85 ++++++++++++-------
 test/core/end2end/tests/large_metadata.c      | 35 +++-----
 2 files changed, 70 insertions(+), 50 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 6314786525..1eaffc6692 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -854,24 +854,37 @@ static void perform_stream_op_locked(
     stream_global->send_initial_metadata_finished =
         add_closure_barrier(on_complete);
     stream_global->send_initial_metadata = op->send_initial_metadata;
-    if (contains_non_ok_status(transport_global, op->send_initial_metadata)) {
-      stream_global->seen_error = true;
-      grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
-    }
-    if (!stream_global->write_closed) {
-      if (transport_global->is_client) {
-        GPR_ASSERT(stream_global->id == 0);
-        grpc_chttp2_list_add_waiting_for_concurrency(transport_global,
-                                                     stream_global);
-        maybe_start_some_streams(exec_ctx, transport_global);
+    const size_t metadata_size = grpc_metadata_batch_size(
+        op->send_initial_metadata);
+    const size_t metadata_peer_limit =
+        transport_global->settings[GRPC_PEER_SETTINGS]
+                                  [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+    if (metadata_size > metadata_peer_limit) {
+      gpr_log(GPR_DEBUG,
+              "initial metadata size exceeds peer limit (%lu vs. %lu)",
+              metadata_size, metadata_peer_limit);
+      cancel_from_api(exec_ctx, transport_global, stream_global,
+                      GRPC_STATUS_RESOURCE_EXHAUSTED);
+    } else {
+      if (contains_non_ok_status(transport_global, op->send_initial_metadata)) {
+        stream_global->seen_error = true;
+        grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
+      }
+      if (!stream_global->write_closed) {
+        if (transport_global->is_client) {
+          GPR_ASSERT(stream_global->id == 0);
+          grpc_chttp2_list_add_waiting_for_concurrency(transport_global,
+                                                       stream_global);
+          maybe_start_some_streams(exec_ctx, transport_global);
+        } else {
+          GPR_ASSERT(stream_global->id != 0);
+          grpc_chttp2_become_writable(transport_global, stream_global);
+        }
       } else {
-        GPR_ASSERT(stream_global->id != 0);
-        grpc_chttp2_become_writable(transport_global, stream_global);
+        grpc_chttp2_complete_closure_step(
+            exec_ctx, stream_global,
+            &stream_global->send_initial_metadata_finished, 0);
       }
-    } else {
-      grpc_chttp2_complete_closure_step(
-          exec_ctx, stream_global,
-          &stream_global->send_initial_metadata_finished, 0);
     }
   }
 
@@ -895,19 +908,33 @@ static void perform_stream_op_locked(
     stream_global->send_trailing_metadata_finished =
         add_closure_barrier(on_complete);
     stream_global->send_trailing_metadata = op->send_trailing_metadata;
-    if (contains_non_ok_status(transport_global, op->send_trailing_metadata)) {
-      stream_global->seen_error = true;
-      grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
-    }
-    if (stream_global->write_closed) {
-      grpc_chttp2_complete_closure_step(
-          exec_ctx, stream_global,
-          &stream_global->send_trailing_metadata_finished,
-          grpc_metadata_batch_is_empty(op->send_trailing_metadata));
-    } else if (stream_global->id != 0) {
-      /* TODO(ctiller): check if there's flow control for any outstanding
-         bytes before going writable */
-      grpc_chttp2_become_writable(transport_global, stream_global);
+    const size_t metadata_size = grpc_metadata_batch_size(
+        op->send_trailing_metadata);
+    const size_t metadata_peer_limit =
+        transport_global->settings[GRPC_PEER_SETTINGS]
+                                  [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+    if (metadata_size > metadata_peer_limit) {
+      gpr_log(GPR_DEBUG,
+              "trailing metadata size exceeds peer limit (%lu vs. %lu)",
+              metadata_size, metadata_peer_limit);
+      cancel_from_api(exec_ctx, transport_global, stream_global,
+                      GRPC_STATUS_RESOURCE_EXHAUSTED);
+    } else {
+      if (contains_non_ok_status(transport_global,
+                                 op->send_trailing_metadata)) {
+        stream_global->seen_error = true;
+        grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
+      }
+      if (stream_global->write_closed) {
+        grpc_chttp2_complete_closure_step(
+            exec_ctx, stream_global,
+            &stream_global->send_trailing_metadata_finished,
+            grpc_metadata_batch_is_empty(op->send_trailing_metadata));
+      } else if (stream_global->id != 0) {
+        /* TODO(ctiller): check if there's flow control for any outstanding
+           bytes before going writable */
+        grpc_chttp2_become_writable(transport_global, stream_global);
+      }
     }
   }
 
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c
index 2aa6381e9e..b78d5b8292 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.c
@@ -97,9 +97,8 @@ static void end_test(grpc_end2end_test_fixture *f) {
   grpc_completion_queue_destroy(f->cq);
 }
 
-/* Request with a large amount of metadata.*/
-static void test_request_with_large_metadata(grpc_end2end_test_config config,
-                                             int allow_large_metadata) {
+/* Request with a large amount of metadata. */
+static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   grpc_call *c;
   grpc_call *s;
   gpr_slice request_payload_slice = gpr_slice_from_copied_string("hello world");
@@ -107,16 +106,12 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
       grpc_raw_byte_buffer_create(&request_payload_slice, 1);
   gpr_timespec deadline = five_seconds_time();
   grpc_metadata meta;
-  const char *test_name = allow_large_metadata
-                          ? "test_request_with_large_metadata_allowed"
-                          : "test_request_with_large_metadata_not_allowed";
   const size_t large_size = 64 * 1024;
   grpc_arg arg = { GRPC_ARG_INTEGER, GRPC_ARG_MAX_METADATA_SIZE,
                    { .integer=(int)large_size + 1024 } };
   grpc_channel_args args = { 1, &arg };
-  grpc_channel_args* use_args = allow_large_metadata ? &args : NULL;
   grpc_end2end_test_fixture f = begin_test(
-      config, test_name, use_args, use_args);
+      config, "test_request_with_large_metadata", &args, &args);
   cq_verifier *cqv = cq_verifier_create(f.cq);
   grpc_op ops[6];
   grpc_op *op;
@@ -146,6 +141,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
   grpc_metadata_array_init(&request_metadata_recv);
   grpc_call_details_init(&call_details);
 
+  /* Client: send request. */
   op = ops;
   op->op = GRPC_OP_SEND_INITIAL_METADATA;
   op->data.send_initial_metadata.count = 1;
@@ -182,9 +178,11 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
       grpc_server_request_call(f.server, &s, &call_details,
                                &request_metadata_recv, f.cq, f.cq, tag(101));
   GPR_ASSERT(GRPC_CALL_OK == error);
+
   cq_expect_completion(cqv, tag(101), 1);
   cq_verify(cqv);
 
+  /* Server: send initial metadata and receive request. */
   op = ops;
   op->op = GRPC_OP_SEND_INITIAL_METADATA;
   op->data.send_initial_metadata.count = 0;
@@ -199,9 +197,11 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
   error = grpc_call_start_batch(s, ops, (size_t)(op - ops), tag(102), NULL);
   GPR_ASSERT(GRPC_CALL_OK == error);
 
-  cq_expect_completion(cqv, tag(102), allow_large_metadata);
+  cq_expect_completion(cqv, tag(102), 1);
   cq_verify(cqv);
 
+  /* Server: receive close and send status.  This should trigger
+     completion of request on client. */
   op = ops;
   op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
   op->data.recv_close_on_server.cancelled = &was_cancelled;
@@ -222,19 +222,13 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
   cq_expect_completion(cqv, tag(1), 1);
   cq_verify(cqv);
 
-  GPR_ASSERT(status == (allow_large_metadata ? GRPC_STATUS_OK
-                        : GRPC_STATUS_RESOURCE_EXHAUSTED));
+  GPR_ASSERT(status == GRPC_STATUS_OK);
+  GPR_ASSERT(0 == strcmp(details, "xyz"));
   GPR_ASSERT(0 == strcmp(call_details.method, "/foo"));
   GPR_ASSERT(0 == strcmp(call_details.host, "foo.test.google.fr"));
   GPR_ASSERT(was_cancelled == 0);
-  if (allow_large_metadata) {
-    GPR_ASSERT(0 == strcmp(details, "xyz"));
-    GPR_ASSERT(byte_buffer_eq_string(request_payload_recv, "hello world"));
-    GPR_ASSERT(contains_metadata(&request_metadata_recv, "key", meta.value));
-  } else {
-    GPR_ASSERT(request_payload_recv == NULL);
-    GPR_ASSERT(!contains_metadata_key(&request_metadata_recv, "key"));
-  }
+  GPR_ASSERT(byte_buffer_eq_string(request_payload_recv, "hello world"));
+  GPR_ASSERT(contains_metadata(&request_metadata_recv, "key", meta.value));
 
   gpr_free(details);
   grpc_metadata_array_destroy(&initial_metadata_recv);
@@ -257,8 +251,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config,
 }
 
 void large_metadata(grpc_end2end_test_config config) {
-  test_request_with_large_metadata(config, 1);
-  test_request_with_large_metadata(config, 0);
+  test_request_with_large_metadata(config);
 }
 
 void large_metadata_pre_init(void) {}
-- 
GitLab


From 13d1abf4447e30b2cef2924656b73044cf40cf8c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 09:54:58 -0700
Subject: [PATCH 290/525] improve unary call response handler

---
 src/csharp/Grpc.Core/Internal/AsyncCall.cs | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index 016e1b8587..fc3c4a2b2b 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -407,12 +407,15 @@ namespace Grpc.Core.Internal
         /// <summary>
         /// Handler for unary response completion.
         /// </summary>
-        private void HandleUnaryResponse(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders)
+        private void HandleUnaryResponse(bool sucess, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders)
         {
+            // NOTE: because this event is a result of batch containing GRPC_OP_RECV_STATUS_ON_CLIENT,
+            // success will be always set to true.
+
             using (Profilers.ForCurrentThread().NewScope("AsyncCall.HandleUnaryResponse"))
             {
                 TResponse msg = default(TResponse);
-                var deserializeException = success ? TryDeserialize(receivedMessage, out msg) : null;
+                var deserializeException = TryDeserialize(receivedMessage, out msg);
 
                 lock (myLock)
                 {
@@ -425,14 +428,13 @@ namespace Grpc.Core.Internal
                     finishedStatus = receivedStatus;
 
                     ReleaseResourcesIfPossible();
-
                 }
 
                 responseHeadersTcs.SetResult(responseHeaders);
 
                 var status = receivedStatus.Status;
 
-                if (!success || status.StatusCode != StatusCode.OK)
+                if (status.StatusCode != StatusCode.OK)
                 {
                     unaryResponseTcs.SetException(new RpcException(status));
                     return;
@@ -447,6 +449,9 @@ namespace Grpc.Core.Internal
         /// </summary>
         private void HandleFinished(bool success, ClientSideStatus receivedStatus)
         {
+            // NOTE: because this event is a result of batch containing GRPC_OP_RECV_STATUS_ON_CLIENT,
+            // success will be always set to true.
+
             lock (myLock)
             {
                 finished = true;
@@ -457,7 +462,7 @@ namespace Grpc.Core.Internal
 
             var status = receivedStatus.Status;
 
-            if (!success || status.StatusCode != StatusCode.OK)
+            if (status.StatusCode != StatusCode.OK)
             {
                 streamingCallFinishedTcs.SetException(new RpcException(status));
                 return;
-- 
GitLab


From a4a627030eb34e8e2f068f1ab327810cd4c3354c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 09:55:18 -0700
Subject: [PATCH 291/525] add more tests

---
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 109 ++++++++++++++++--
 1 file changed, 98 insertions(+), 11 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index 60530d3250..a678e4dafe 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -64,28 +64,115 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void AsyncUnary_CompletionSuccess()
+        public void AsyncUnary_CanBeStartedOnlyOnce()
+        {
+            asyncCall.UnaryCallAsync("request1");
+            Assert.Throws(typeof(InvalidOperationException),
+                () => asyncCall.UnaryCallAsync("abc"));
+        }
+
+        [Test]
+        public void AsyncUnary_StreamingOperationsNotAllowed()
+        {
+            asyncCall.UnaryCallAsync("request1");
+            Assert.Throws(typeof(InvalidOperationException),
+                () => asyncCall.StartReadMessage((x,y) => {}));
+            Assert.Throws(typeof(InvalidOperationException),
+                () => asyncCall.StartSendMessage("abc", new WriteFlags(), (x,y) => {}));
+        }
+
+        [Test]
+        public void AsyncUnary_Success()
+        {
+            var resultTask = asyncCall.UnaryCallAsync("request1");
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+        }
+
+        [Test]
+        public void AsyncUnary_NonSuccessStatusCode()
+        {
+            var resultTask = asyncCall.UnaryCallAsync("request1");
+            fakeCall.UnaryResponseClientHandler(true,
+                CreateClientSideStatus(StatusCode.InvalidArgument),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.InvalidArgument);
+        }
+
+        [Test]
+        public void AsyncUnary_NullResponsePayload()
+        {
+            var resultTask = asyncCall.UnaryCallAsync("request1");
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+                null,
+                new Metadata());
+
+            // failure to deserialize will result in InvalidArgument status.
+            AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.Internal);
+        }
+
+        [Test]
+        public void ClientStreaming_NoRequest_Success()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+        }
+
+        [Test]
+        public void ClientStreaming_NoRequest_NonSuccessStatusCode()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            fakeCall.UnaryResponseClientHandler(true,
+                CreateClientSideStatus(StatusCode.InvalidArgument),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.InvalidArgument);
+        }
+
+        ClientSideStatus CreateClientSideStatus(StatusCode statusCode)
+        {
+            return new ClientSideStatus(new Status(statusCode, ""), new Metadata());
+        }
+
+        byte[] CreateResponsePayload()
+        {
+            return Marshallers.StringMarshaller.Serializer("response1");
+        }
+
+        static void AssertUnaryResponseSuccess(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<string> resultTask)
         {
-            var resultTask = asyncCall.UnaryCallAsync("abc");
-            fakeCall.UnaryResponseClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()), new byte[] { 1, 2, 3 }, new Metadata());
             Assert.IsTrue(resultTask.IsCompleted);
             Assert.IsTrue(fakeCall.IsDisposed);
+
             Assert.AreEqual(Status.DefaultSuccess, asyncCall.GetStatus());
+            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+            Assert.AreEqual(0, asyncCall.GetTrailers().Count);
+            Assert.AreEqual("response1", resultTask.Result);
         }
 
-        [Test]
-        public void AsyncUnary_CompletionFailure()
+        static void AssertUnaryResponseError(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<string> resultTask, StatusCode expectedStatusCode)
         {
-            var resultTask = asyncCall.UnaryCallAsync("abc");
-            fakeCall.UnaryResponseClientHandler(false, new ClientSideStatus(new Status(StatusCode.Internal, ""), null), new byte[] { 1, 2, 3 }, new Metadata());
-
             Assert.IsTrue(resultTask.IsCompleted);
             Assert.IsTrue(fakeCall.IsDisposed);
 
-            Assert.AreEqual(StatusCode.Internal, asyncCall.GetStatus().StatusCode);
-            Assert.IsNull(asyncCall.GetTrailers());
+            Assert.AreEqual(expectedStatusCode, asyncCall.GetStatus().StatusCode);
             var ex = Assert.ThrowsAsync<RpcException>(async () => await resultTask);
-            Assert.AreEqual(StatusCode.Internal, ex.Status.StatusCode);
+            Assert.AreEqual(expectedStatusCode, ex.Status.StatusCode);
+            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+            Assert.AreEqual(0, asyncCall.GetTrailers().Count);
         }
 
         internal class FakeNativeCall : INativeCall
-- 
GitLab


From edb8b76ac2dc5f1b9bdaf97e69a21e3c59bfb775 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 2 May 2016 10:43:04 -0700
Subject: [PATCH 292/525] Simplified Ruby tools extension checking

---
 src/ruby/tools/bin/protoc.rb                  |  9 +---
 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb |  9 +---
 src/ruby/tools/os_check.rb                    | 45 -------------------
 3 files changed, 2 insertions(+), 61 deletions(-)
 delete mode 100644 src/ruby/tools/os_check.rb

diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/protoc.rb
index 68cbc852fd..728a88b007 100755
--- a/src/ruby/tools/bin/protoc.rb
+++ b/src/ruby/tools/bin/protoc.rb
@@ -30,14 +30,7 @@
 
 require 'rbconfig'
 
-require_relative '../os_check'
-
-protoc_name = case OS.os_name
-              when 'windows'
-                'protoc.exe'
-              else
-                'protoc'
-              end
+protoc_name = 'protoc' + RbConfig::CONFIG['EXEEXT']
 
 protoc_path = File.join(File.dirname(__FILE__),
                         RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name,
diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
index 04cf435b58..814aef2446 100755
--- a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
+++ b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
@@ -30,14 +30,7 @@
 
 require 'rbconfig'
 
-require_relative '../os_check'
-
-plugin_name = 'grpc_ruby_plugin' + case OS.os_name
-                                   when 'windows'
-                                     '.exe'
-                                   else
-                                     ''
-                                   end
+plugin_name = 'grpc_ruby_plugin' + RbConfig::CONFIG['EXEEXT']
 
 plugin_path = File.join(File.dirname(__FILE__),
                         RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name,
diff --git a/src/ruby/tools/os_check.rb b/src/ruby/tools/os_check.rb
deleted file mode 100644
index 2677306457..0000000000
--- a/src/ruby/tools/os_check.rb
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2016, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# This is based on http://stackoverflow.com/a/171011/159388 by Aaron Hinni
-
-require 'rbconfig'
-
-module OS
-  def OS.os_name
-    case RbConfig::CONFIG['host_os']
-    when /cygwin|mswin|mingw|bccwin|wince|emx/
-      'windows'
-    when /darwin/
-      'macos'
-    else
-      'linux'
-    end
-  end
-end
-- 
GitLab


From 8e4512ba482f03887f15ac7b978bffd8eb3b9840 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 2 May 2016 11:26:46 -0700
Subject: [PATCH 293/525] Reversed premature removal of a file

---
 src/ruby/tools/bin/protoc.rb                  |  2 +
 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb |  2 +
 src/ruby/tools/os_check.rb                    | 45 +++++++++++++++++++
 3 files changed, 49 insertions(+)
 create mode 100644 src/ruby/tools/os_check.rb

diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/protoc.rb
index 728a88b007..3a2a5b8dc9 100755
--- a/src/ruby/tools/bin/protoc.rb
+++ b/src/ruby/tools/bin/protoc.rb
@@ -30,6 +30,8 @@
 
 require 'rbconfig'
 
+require_relative '../os_check'
+
 protoc_name = 'protoc' + RbConfig::CONFIG['EXEEXT']
 
 protoc_path = File.join(File.dirname(__FILE__),
diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
index 814aef2446..4b296dedc7 100755
--- a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
+++ b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
@@ -30,6 +30,8 @@
 
 require 'rbconfig'
 
+require_relative '../os_check'
+
 plugin_name = 'grpc_ruby_plugin' + RbConfig::CONFIG['EXEEXT']
 
 plugin_path = File.join(File.dirname(__FILE__),
diff --git a/src/ruby/tools/os_check.rb b/src/ruby/tools/os_check.rb
new file mode 100644
index 0000000000..2677306457
--- /dev/null
+++ b/src/ruby/tools/os_check.rb
@@ -0,0 +1,45 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# This is based on http://stackoverflow.com/a/171011/159388 by Aaron Hinni
+
+require 'rbconfig'
+
+module OS
+  def OS.os_name
+    case RbConfig::CONFIG['host_os']
+    when /cygwin|mswin|mingw|bccwin|wince|emx/
+      'windows'
+    when /darwin/
+      'macos'
+    else
+      'linux'
+    end
+  end
+end
-- 
GitLab


From 08e1f755a3b456ce2e86db539068278407317a3c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 12:07:21 -0700
Subject: [PATCH 294/525] fix typo

---
 src/csharp/Grpc.Core/Internal/AsyncCall.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index fc3c4a2b2b..50ba617cdb 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -407,7 +407,7 @@ namespace Grpc.Core.Internal
         /// <summary>
         /// Handler for unary response completion.
         /// </summary>
-        private void HandleUnaryResponse(bool sucess, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders)
+        private void HandleUnaryResponse(bool success, ClientSideStatus receivedStatus, byte[] receivedMessage, Metadata responseHeaders)
         {
             // NOTE: because this event is a result of batch containing GRPC_OP_RECV_STATUS_ON_CLIENT,
             // success will be always set to true.
-- 
GitLab


From 791e93ee2f66d6a29eb3e16f9d44ef29f1c0a83d Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Tue, 1 Mar 2016 02:48:00 +0100
Subject: [PATCH 295/525] Always build the grpc library when building the ruby
 extension.

---
 src/ruby/ext/grpc/extconf.rb | 38 ++++++++++++++----------------------
 1 file changed, 15 insertions(+), 23 deletions(-)

diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 82b6d313c8..07f7bb93b8 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -60,35 +60,27 @@ grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
 
 grpc_config = ENV['GRPC_CONFIG'] || 'opt'
 
-if ENV.key?('GRPC_LIB_DIR')
-  grpc_lib_dir = File.join(grpc_root, ENV['GRPC_LIB_DIR'])
-else
-  grpc_lib_dir = File.join(grpc_root, 'libs', grpc_config)
-end
-
 ENV['MACOSX_DEPLOYMENT_TARGET'] = '10.7'
 
-unless File.exist?(File.join(grpc_lib_dir, 'libgrpc.a')) or windows
-  ENV['AR'] = RbConfig::CONFIG['AR'] + ' rcs'
-  ENV['CC'] = RbConfig::CONFIG['CC']
-  ENV['LD'] = ENV['CC']
+ENV['AR'] = RbConfig::CONFIG['AR'] + ' rcs'
+ENV['CC'] = RbConfig::CONFIG['CC']
+ENV['LD'] = ENV['CC']
 
-  ENV['AR'] = 'libtool -o' if RUBY_PLATFORM =~ /darwin/
+ENV['AR'] = 'libtool -o' if RUBY_PLATFORM =~ /darwin/
 
-  ENV['EMBED_OPENSSL'] = 'true'
-  ENV['EMBED_ZLIB'] = 'true'
-  ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
-  ENV['ARCH_FLAGS'] = '-arch i386 -arch x86_64' if RUBY_PLATFORM =~ /darwin/
-  ENV['CFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
+ENV['EMBED_OPENSSL'] = 'true'
+ENV['EMBED_ZLIB'] = 'true'
+ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
+ENV['ARCH_FLAGS'] = '-arch i386 -arch x86_64' if RUBY_PLATFORM =~ /darwin/
+ENV['CFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
 
-  output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
-  grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
-  ENV['BUILDDIR'] = output_dir
+output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
+grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
+ENV['BUILDDIR'] = output_dir
 
-  puts 'Building internal gRPC into ' + grpc_lib_dir
-  system("make -j -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config}")
-  exit 1 unless $? == 0
-end
+puts 'Building internal gRPC into ' + grpc_lib_dir
+system("make -j -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config}")
+exit 1 unless $? == 0
 
 $CFLAGS << ' -I' + File.join(grpc_root, 'include')
 $LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgrpc.a') unless windows
-- 
GitLab


From 8a6efb7a42bc305d96163ef7c16167bf004cf1ab Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 2 May 2016 13:57:57 -0700
Subject: [PATCH 296/525] Node tools: use the right extension for running
 protoc on Windows

---
 src/node/tools/bin/protoc.js        | 4 +++-
 src/node/tools/bin/protoc_plugin.js | 6 ++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/node/tools/bin/protoc.js b/src/node/tools/bin/protoc.js
index 0c6d7ce017..4d50c94b0f 100755
--- a/src/node/tools/bin/protoc.js
+++ b/src/node/tools/bin/protoc.js
@@ -43,7 +43,9 @@
 var path = require('path');
 var execFile = require('child_process').execFile;
 
-var protoc = path.resolve(__dirname, 'protoc');
+var exe_ext = process.platform === 'win32' ? '.exe' : '';
+
+var protoc = path.resolve(__dirname, 'protoc' + exe_ext);
 
 execFile(protoc, process.argv.slice(2), function(error, stdout, stderr) {
   if (error) {
diff --git a/src/node/tools/bin/protoc_plugin.js b/src/node/tools/bin/protoc_plugin.js
index 0e0bb9406e..281ec0d85e 100755
--- a/src/node/tools/bin/protoc_plugin.js
+++ b/src/node/tools/bin/protoc_plugin.js
@@ -43,9 +43,11 @@
 var path = require('path');
 var execFile = require('child_process').execFile;
 
-var protoc = path.resolve(__dirname, 'grpc_node_plugin');
+var exe_ext = process.platform === 'win32' ? '.exe' : '';
 
-execFile(protoc, process.argv.slice(2), function(error, stdout, stderr) {
+var plugin = path.resolve(__dirname, 'grpc_node_plugin' + exe_ext);
+
+execFile(plugin, process.argv.slice(2), function(error, stdout, stderr) {
   if (error) {
     throw error;
   }
-- 
GitLab


From 777c26329cf1c1bfe06cd4d719a8fb9dbe24603f Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Mon, 2 May 2016 23:11:57 +0200
Subject: [PATCH 297/525] Properly using our build.yaml source of truth to
 generate our list of public APIs.

---
 tools/buildgen/plugins/list_api.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tools/buildgen/plugins/list_api.py b/tools/buildgen/plugins/list_api.py
index ff937a0ab8..1fc4f4123c 100755
--- a/tools/buildgen/plugins/list_api.py
+++ b/tools/buildgen/plugins/list_api.py
@@ -64,12 +64,13 @@ def headers_under(directory):
 
 def mako_plugin(dictionary):
   apis = []
+  headers = []
 
-#  for lib in dictionary['libs']:
-#    if lib['name'] == 'grpc':
-#      apis.extend(list_c_apis(lib['public_headers']))
-  apis.extend(list_c_apis(sorted(headers_under('include/grpc'))))
+  for lib in dictionary['libs']:
+    if lib['name'] in ['grpc', 'gpr']:
+      headers.extend(lib['public_headers'])
 
+  apis.extend(list_c_apis(sorted(set(headers))))
   dictionary['c_apis'] = apis
 
 
-- 
GitLab


From 6a45e9340701f3107f5d39cc5f5c0366204faa23 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 2 May 2016 14:25:49 -0700
Subject: [PATCH 298/525] Made ruby plugin support empty package names

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

diff --git a/src/compiler/ruby_generator.cc b/src/compiler/ruby_generator.cc
index 5ac56ad289..4ca06a4554 100644
--- a/src/compiler/ruby_generator.cc
+++ b/src/compiler/ruby_generator.cc
@@ -98,7 +98,7 @@ void PrintService(const ServiceDescriptor *service, const grpc::string &package,
   out->Print("self.marshal_class_method = :encode\n");
   out->Print("self.unmarshal_class_method = :decode\n");
   std::map<grpc::string, grpc::string> pkg_vars =
-      ListToDict({"service.name", service->name(), "pkg.name", package, });
+      ListToDict({"service_full_namename", service->full_name()});
   out->Print(pkg_vars, "self.service_name = '$pkg.name$.$service.name$'\n");
   out->Print("\n");
   for (int i = 0; i < service->method_count(); ++i) {
-- 
GitLab


From df8b62cea7c0d37cdf6918f1761137d95ab8a879 Mon Sep 17 00:00:00 2001
From: Vijay Pai <vpai@google.com>
Date: Mon, 2 May 2016 14:34:24 -0700
Subject: [PATCH 299/525] Add coverage for secure async end2end testing

---
 test/cpp/end2end/async_end2end_test.cc | 225 +++++++++++++++----------
 1 file changed, 136 insertions(+), 89 deletions(-)

diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc
index 7e4d6046d6..8d58726f13 100644
--- a/test/cpp/end2end/async_end2end_test.cc
+++ b/test/cpp/end2end/async_end2end_test.cc
@@ -51,6 +51,7 @@
 #include "test/core/util/port.h"
 #include "test/core/util/test_config.h"
 #include "test/cpp/util/string_ref_helper.h"
+#include "test/cpp/util/test_credentials_provider.h"
 
 #ifdef GPR_POSIX_SOCKET
 #include "src/core/lib/iomgr/ev_posix.h"
@@ -58,6 +59,7 @@
 
 using grpc::testing::EchoRequest;
 using grpc::testing::EchoResponse;
+using grpc::testing::kTlsCredentialsType;
 using std::chrono::system_clock;
 
 GPR_TLS_DECL(g_is_async_end2end_test);
@@ -197,20 +199,28 @@ class Verifier {
   bool spin_;
 };
 
-class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
+class TestScenario {
+ public:
+  TestScenario(bool non_block, const grpc::string& creds_type)
+      : disable_blocking(non_block), credentials_type(creds_type) {}
+  bool disable_blocking;
+  const grpc::string credentials_type;
+};
+
+class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
  protected:
   AsyncEnd2endTest() {}
 
   void SetUp() GRPC_OVERRIDE {
-    poll_overrider_.reset(new PollingOverrider(!GetParam()));
+    poll_overrider_.reset(new PollingOverrider(!GetParam().disable_blocking));
 
     int port = grpc_pick_unused_port_or_die();
     server_address_ << "localhost:" << port;
 
     // Setup server
     ServerBuilder builder;
-    builder.AddListeningPort(server_address_.str(),
-                             grpc::InsecureServerCredentials());
+    auto server_creds = GetServerCredentials(GetParam().credentials_type);
+    builder.AddListeningPort(server_address_.str(), server_creds);
     builder.RegisterService(&service_);
     cq_ = builder.AddCompletionQueue();
     server_ = builder.BuildAndStart();
@@ -230,8 +240,11 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
   }
 
   void ResetStub() {
+    ChannelArguments args;
+    auto channel_creds =
+        GetChannelCredentials(GetParam().credentials_type, &args);
     std::shared_ptr<Channel> channel =
-        CreateChannel(server_address_.str(), InsecureChannelCredentials());
+        CreateCustomChannel(server_address_.str(), channel_creds, args);
     stub_ = grpc::testing::EchoTestService::NewStub(channel);
   }
 
@@ -254,15 +267,15 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> {
       service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                            cq_.get(), tag(2));
 
-      Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
       EXPECT_EQ(send_request.message(), recv_request.message());
 
       send_response.set_message(recv_request.message());
       response_writer.Finish(send_response, Status::OK, tag(3));
-      Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
       response_reader->Finish(&recv_response, &recv_status, tag(4));
-      Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
 
       EXPECT_EQ(send_response.message(), recv_response.message());
       EXPECT_TRUE(recv_status.ok());
@@ -310,23 +323,25 @@ TEST_P(AsyncEnd2endTest, AsyncNextRpc) {
       std::chrono::system_clock::now());
   std::chrono::system_clock::time_point time_limit(
       std::chrono::system_clock::now() + std::chrono::seconds(10));
-  Verifier(GetParam()).Verify(cq_.get(), time_now);
-  Verifier(GetParam()).Verify(cq_.get(), time_now);
+  Verifier(GetParam().disable_blocking).Verify(cq_.get(), time_now);
+  Verifier(GetParam().disable_blocking).Verify(cq_.get(), time_now);
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                        cq_.get(), tag(2));
 
-  Verifier(GetParam()).Expect(2, true).Verify(cq_.get(), time_limit);
+  Verifier(GetParam().disable_blocking)
+      .Expect(2, true)
+      .Verify(cq_.get(), time_limit);
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(3));
-  Verifier(GetParam())
+  Verifier(GetParam().disable_blocking)
       .Expect(3, true)
       .Verify(cq_.get(), std::chrono::system_clock::time_point::max());
 
   response_reader->Finish(&recv_response, &recv_status, tag(4));
-  Verifier(GetParam())
+  Verifier(GetParam().disable_blocking)
       .Expect(4, true)
       .Verify(cq_.get(), std::chrono::system_clock::time_point::max());
 
@@ -354,34 +369,37 @@ TEST_P(AsyncEnd2endTest, SimpleClientStreaming) {
   service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
                                 tag(2));
 
-  Verifier(GetParam()).Expect(2, true).Expect(1, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(2, true)
+      .Expect(1, true)
+      .Verify(cq_.get());
 
   cli_stream->Write(send_request, tag(3));
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
   srv_stream.Read(&recv_request, tag(4));
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   cli_stream->Write(send_request, tag(5));
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
 
   srv_stream.Read(&recv_request, tag(6));
-  Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
 
   EXPECT_EQ(send_request.message(), recv_request.message());
   cli_stream->WritesDone(tag(7));
-  Verifier(GetParam()).Expect(7, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(7, true).Verify(cq_.get());
 
   srv_stream.Read(&recv_request, tag(8));
-  Verifier(GetParam()).Expect(8, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(8, false).Verify(cq_.get());
 
   send_response.set_message(recv_request.message());
   srv_stream.Finish(send_response, Status::OK, tag(9));
-  Verifier(GetParam()).Expect(9, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(9, true).Verify(cq_.get());
 
   cli_stream->Finish(&recv_status, tag(10));
-  Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
@@ -407,32 +425,35 @@ TEST_P(AsyncEnd2endTest, SimpleServerStreaming) {
   service_.RequestResponseStream(&srv_ctx, &recv_request, &srv_stream,
                                  cq_.get(), cq_.get(), tag(2));
 
-  Verifier(GetParam()).Expect(1, true).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(1, true)
+      .Expect(2, true)
+      .Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   send_response.set_message(recv_request.message());
   srv_stream.Write(send_response, tag(3));
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
   cli_stream->Read(&recv_response, tag(4));
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
 
   srv_stream.Write(send_response, tag(5));
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
 
   cli_stream->Read(&recv_response, tag(6));
-  Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
 
   srv_stream.Finish(Status::OK, tag(7));
-  Verifier(GetParam()).Expect(7, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(7, true).Verify(cq_.get());
 
   cli_stream->Read(&recv_response, tag(8));
-  Verifier(GetParam()).Expect(8, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(8, false).Verify(cq_.get());
 
   cli_stream->Finish(&recv_status, tag(9));
-  Verifier(GetParam()).Expect(9, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(9, true).Verify(cq_.get());
 
   EXPECT_TRUE(recv_status.ok());
 }
@@ -457,34 +478,37 @@ TEST_P(AsyncEnd2endTest, SimpleBidiStreaming) {
   service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
                              tag(2));
 
-  Verifier(GetParam()).Expect(1, true).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(1, true)
+      .Expect(2, true)
+      .Verify(cq_.get());
 
   cli_stream->Write(send_request, tag(3));
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
   srv_stream.Read(&recv_request, tag(4));
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   send_response.set_message(recv_request.message());
   srv_stream.Write(send_response, tag(5));
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
 
   cli_stream->Read(&recv_response, tag(6));
-  Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
 
   cli_stream->WritesDone(tag(7));
-  Verifier(GetParam()).Expect(7, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(7, true).Verify(cq_.get());
 
   srv_stream.Read(&recv_request, tag(8));
-  Verifier(GetParam()).Expect(8, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(8, false).Verify(cq_.get());
 
   srv_stream.Finish(Status::OK, tag(9));
-  Verifier(GetParam()).Expect(9, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(9, true).Verify(cq_.get());
 
   cli_stream->Finish(&recv_status, tag(10));
-  Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
 
   EXPECT_TRUE(recv_status.ok());
 }
@@ -516,7 +540,7 @@ TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) {
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                        cq_.get(), tag(2));
-  Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
   auto client_initial_metadata = srv_ctx.client_metadata();
   EXPECT_EQ(meta1.second,
@@ -530,10 +554,10 @@ TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) {
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(3));
 
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
   response_reader->Finish(&recv_response, &recv_status, tag(4));
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
@@ -561,15 +585,15 @@ TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) {
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                        cq_.get(), tag(2));
-  Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
   srv_ctx.AddInitialMetadata(meta1.first, meta1.second);
   srv_ctx.AddInitialMetadata(meta2.first, meta2.second);
   response_writer.SendInitialMetadata(tag(3));
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
   response_reader->ReadInitialMetadata(tag(4));
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
   auto server_initial_metadata = cli_ctx.GetServerInitialMetadata();
   EXPECT_EQ(meta1.second,
             ToString(server_initial_metadata.find(meta1.first)->second));
@@ -579,10 +603,10 @@ TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) {
 
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(5));
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
 
   response_reader->Finish(&recv_response, &recv_status, tag(6));
-  Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
@@ -610,20 +634,20 @@ TEST_P(AsyncEnd2endTest, ServerTrailingMetadataRpc) {
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                        cq_.get(), tag(2));
-  Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
   response_writer.SendInitialMetadata(tag(3));
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
   send_response.set_message(recv_request.message());
   srv_ctx.AddTrailingMetadata(meta1.first, meta1.second);
   srv_ctx.AddTrailingMetadata(meta2.first, meta2.second);
   response_writer.Finish(send_response, Status::OK, tag(4));
 
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
 
   response_reader->Finish(&recv_response, &recv_status, tag(5));
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
   auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata();
@@ -671,7 +695,7 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                        cq_.get(), tag(2));
-  Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
   auto client_initial_metadata = srv_ctx.client_metadata();
   EXPECT_EQ(meta1.second,
@@ -683,9 +707,9 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
   srv_ctx.AddInitialMetadata(meta3.first, meta3.second);
   srv_ctx.AddInitialMetadata(meta4.first, meta4.second);
   response_writer.SendInitialMetadata(tag(3));
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
   response_reader->ReadInitialMetadata(tag(4));
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
   auto server_initial_metadata = cli_ctx.GetServerInitialMetadata();
   EXPECT_EQ(meta3.second,
             ToString(server_initial_metadata.find(meta3.first)->second));
@@ -698,10 +722,10 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
   srv_ctx.AddTrailingMetadata(meta6.first, meta6.second);
   response_writer.Finish(send_response, Status::OK, tag(5));
 
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
 
   response_reader->Finish(&recv_response, &recv_status, tag(6));
-  Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
   auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata();
@@ -734,15 +758,15 @@ TEST_P(AsyncEnd2endTest, ServerCheckCancellation) {
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                        cq_.get(), tag(2));
 
-  Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   cli_ctx.TryCancel();
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
   EXPECT_TRUE(srv_ctx.IsCancelled());
 
   response_reader->Finish(&recv_response, &recv_status, tag(4));
-  Verifier(GetParam()).Expect(4, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, false).Verify(cq_.get());
 
   EXPECT_EQ(StatusCode::CANCELLED, recv_status.error_code());
 }
@@ -769,25 +793,28 @@ TEST_P(AsyncEnd2endTest, ServerCheckDone) {
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, cq_.get(),
                        cq_.get(), tag(2));
 
-  Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(3));
-  Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
-  Verifier(GetParam()).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
   EXPECT_FALSE(srv_ctx.IsCancelled());
 
   response_reader->Finish(&recv_response, &recv_status, tag(4));
-  Verifier(GetParam()).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
 }
 
 TEST_P(AsyncEnd2endTest, UnimplementedRpc) {
+  ChannelArguments args;
+  auto channel_creds =
+      GetChannelCredentials(GetParam().credentials_type, &args);
   std::shared_ptr<Channel> channel =
-      CreateChannel(server_address_.str(), InsecureChannelCredentials());
+      CreateCustomChannel(server_address_.str(), channel_creds, args);
   std::unique_ptr<grpc::testing::UnimplementedService::Stub> stub;
   stub = grpc::testing::UnimplementedService::NewStub(channel);
   EchoRequest send_request;
@@ -800,7 +827,7 @@ TEST_P(AsyncEnd2endTest, UnimplementedRpc) {
       stub->AsyncUnimplemented(&cli_ctx, send_request, cq_.get()));
 
   response_reader->Finish(&recv_response, &recv_status, tag(4));
-  Verifier(GetParam()).Expect(4, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking).Expect(4, false).Verify(cq_.get());
 
   EXPECT_EQ(StatusCode::UNIMPLEMENTED, recv_status.error_code());
   EXPECT_EQ("", recv_status.error_message());
@@ -847,23 +874,25 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
     // Initiate the 'RequestStream' call on client
     std::unique_ptr<ClientAsyncWriter<EchoRequest>> cli_stream(
         stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1)));
-    Verifier(GetParam()).Expect(1, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(1, true).Verify(cq_.get());
 
     // On the server, request to be notified of 'RequestStream' calls
     // and receive the 'RequestStream' call just made by the client
     srv_ctx.AsyncNotifyWhenDone(tag(11));
     service_.RequestRequestStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
                                   tag(2));
-    Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
 
     // Client sends 3 messages (tags 3, 4 and 5)
     for (int tag_idx = 3; tag_idx <= 5; tag_idx++) {
       send_request.set_message("Ping " + std::to_string(tag_idx));
       cli_stream->Write(send_request, tag(tag_idx));
-      Verifier(GetParam()).Expect(tag_idx, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking)
+          .Expect(tag_idx, true)
+          .Verify(cq_.get());
     }
     cli_stream->WritesDone(tag(6));
-    Verifier(GetParam()).Expect(6, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
 
     bool expected_server_cq_result = true;
     bool ignore_cq_result = false;
@@ -871,7 +900,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
 
     if (server_try_cancel == CANCEL_BEFORE_PROCESSING) {
       srv_ctx.TryCancel();
-      Verifier(GetParam()).Expect(11, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking).Expect(11, true).Verify(cq_.get());
       EXPECT_TRUE(srv_ctx.IsCancelled());
 
       // Since cancellation is done before server reads any results, we know
@@ -881,7 +910,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
 
     std::thread* server_try_cancel_thd = NULL;
 
-    auto verif = Verifier(GetParam());
+    auto verif = Verifier(GetParam().disable_blocking);
 
     if (server_try_cancel == CANCEL_DURING_PROCESSING) {
       server_try_cancel_thd =
@@ -939,13 +968,13 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
     // Server sends the final message and cancelled status (but the RPC is
     // already cancelled at this point. So we expect the operation to fail)
     srv_stream.Finish(send_response, Status::CANCELLED, tag(9));
-    Verifier(GetParam()).Expect(9, false).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(9, false).Verify(cq_.get());
 
     // Client will see the cancellation
     cli_stream->Finish(&recv_status, tag(10));
     // TODO(sreek): The expectation here should be true. This is a bug (github
     // issue #4972)
-    Verifier(GetParam()).Expect(10, false).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(10, false).Verify(cq_.get());
     EXPECT_FALSE(recv_status.ok());
     EXPECT_EQ(::grpc::StatusCode::CANCELLED, recv_status.error_code());
   }
@@ -979,13 +1008,13 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
     // Initiate the 'ResponseStream' call on the client
     std::unique_ptr<ClientAsyncReader<EchoResponse>> cli_stream(
         stub_->AsyncResponseStream(&cli_ctx, send_request, cq_.get(), tag(1)));
-    Verifier(GetParam()).Expect(1, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(1, true).Verify(cq_.get());
     // On the server, request to be notified of 'ResponseStream' calls and
     // receive the call just made by the client
     srv_ctx.AsyncNotifyWhenDone(tag(11));
     service_.RequestResponseStream(&srv_ctx, &recv_request, &srv_stream,
                                    cq_.get(), cq_.get(), tag(2));
-    Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
     EXPECT_EQ(send_request.message(), recv_request.message());
 
     bool expected_cq_result = true;
@@ -994,7 +1023,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
 
     if (server_try_cancel == CANCEL_BEFORE_PROCESSING) {
       srv_ctx.TryCancel();
-      Verifier(GetParam()).Expect(11, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking).Expect(11, true).Verify(cq_.get());
       EXPECT_TRUE(srv_ctx.IsCancelled());
 
       // We know for sure that all cq results will be false from this point
@@ -1004,7 +1033,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
 
     std::thread* server_try_cancel_thd = NULL;
 
-    auto verif = Verifier(GetParam());
+    auto verif = Verifier(GetParam().disable_blocking);
 
     if (server_try_cancel == CANCEL_DURING_PROCESSING) {
       server_try_cancel_thd =
@@ -1064,7 +1093,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
     // Client attemts to read the three messages from the server
     for (int tag_idx = 6; tag_idx <= 8; tag_idx++) {
       cli_stream->Read(&recv_response, tag(tag_idx));
-      Verifier(GetParam())
+      Verifier(GetParam().disable_blocking)
           .Expect(tag_idx, expected_cq_result)
           .Verify(cq_.get(), ignore_cq_result);
     }
@@ -1075,11 +1104,11 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
 
     // Server finishes the stream (but the RPC is already cancelled)
     srv_stream.Finish(Status::CANCELLED, tag(9));
-    Verifier(GetParam()).Expect(9, false).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(9, false).Verify(cq_.get());
 
     // Client will see the cancellation
     cli_stream->Finish(&recv_status, tag(10));
-    Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
     EXPECT_FALSE(recv_status.ok());
     EXPECT_EQ(::grpc::StatusCode::CANCELLED, recv_status.error_code());
   }
@@ -1114,19 +1143,19 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
     // Initiate the call from the client side
     std::unique_ptr<ClientAsyncReaderWriter<EchoRequest, EchoResponse>>
         cli_stream(stub_->AsyncBidiStream(&cli_ctx, cq_.get(), tag(1)));
-    Verifier(GetParam()).Expect(1, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(1, true).Verify(cq_.get());
 
     // On the server, request to be notified of the 'BidiStream' call and
     // receive the call just made by the client
     srv_ctx.AsyncNotifyWhenDone(tag(11));
     service_.RequestBidiStream(&srv_ctx, &srv_stream, cq_.get(), cq_.get(),
                                tag(2));
-    Verifier(GetParam()).Expect(2, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(2, true).Verify(cq_.get());
 
     // Client sends the first and the only message
     send_request.set_message("Ping");
     cli_stream->Write(send_request, tag(3));
-    Verifier(GetParam()).Expect(3, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
 
     bool expected_cq_result = true;
     bool ignore_cq_result = false;
@@ -1134,7 +1163,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
 
     if (server_try_cancel == CANCEL_BEFORE_PROCESSING) {
       srv_ctx.TryCancel();
-      Verifier(GetParam()).Expect(11, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking).Expect(11, true).Verify(cq_.get());
       EXPECT_TRUE(srv_ctx.IsCancelled());
 
       // We know for sure that all cq results will be false from this point
@@ -1144,7 +1173,7 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
 
     std::thread* server_try_cancel_thd = NULL;
 
-    auto verif = Verifier(GetParam());
+    auto verif = Verifier(GetParam().disable_blocking);
 
     if (server_try_cancel == CANCEL_DURING_PROCESSING) {
       server_try_cancel_thd =
@@ -1244,10 +1273,10 @@ class AsyncEnd2endServerTryCancelTest : public AsyncEnd2endTest {
     // know that cq results are supposed to return false on server.
 
     srv_stream.Finish(Status::CANCELLED, tag(9));
-    Verifier(GetParam()).Expect(9, false).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(9, false).Verify(cq_.get());
 
     cli_stream->Finish(&recv_status, tag(10));
-    Verifier(GetParam()).Expect(10, true).Verify(cq_.get());
+    Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
     EXPECT_FALSE(recv_status.ok());
     EXPECT_EQ(grpc::StatusCode::CANCELLED, recv_status.error_code());
   }
@@ -1289,11 +1318,29 @@ TEST_P(AsyncEnd2endServerTryCancelTest, ServerBidiStreamingTryCancelAfter) {
   TestBidiStreamingServerCancel(CANCEL_AFTER_PROCESSING);
 }
 
+std::vector<TestScenario> CreateTestScenarios(bool test_disable_blocking,
+                                              bool test_secure) {
+  std::vector<TestScenario> scenarios;
+  std::vector<grpc::string> credentials_types;
+  if (test_secure) {
+    credentials_types = GetSecureCredentialsTypeList();
+  }
+  credentials_types.push_back(kInsecureCredentialsType);
+  for (auto it = credentials_types.begin(); it != credentials_types.end();
+       ++it) {
+    scenarios.push_back(TestScenario(false, *it));
+    if (test_disable_blocking) {
+      scenarios.push_back(TestScenario(true, *it));
+    }
+  }
+  return scenarios;
+}
+
 INSTANTIATE_TEST_CASE_P(AsyncEnd2end, AsyncEnd2endTest,
-                        ::testing::Values(false, true));
+                        ::testing::ValuesIn(CreateTestScenarios(true, true)));
 INSTANTIATE_TEST_CASE_P(AsyncEnd2endServerTryCancel,
                         AsyncEnd2endServerTryCancelTest,
-                        ::testing::Values(false));
+                        ::testing::ValuesIn(CreateTestScenarios(false, false)));
 
 }  // namespace
 }  // namespace testing
-- 
GitLab


From 957fe8dc5de97d9b59de91522c8afab294abe9f4 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 2 May 2016 15:03:55 -0700
Subject: [PATCH 300/525] Updated a couple more scripts

---
 tools/gce/linux_performance_worker_init.sh     | 3 +++
 tools/run_tests/performance/run_worker_node.sh | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh
index 25ac3bcede..df29581e69 100755
--- a/tools/gce/linux_performance_worker_init.sh
+++ b/tools/gce/linux_performance_worker_init.sh
@@ -95,6 +95,9 @@ sudo pip install tox
 touch .profile
 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
 nvm install 0.12 && npm config set cache /tmp/npm-cache
+nvm install 4 && npm config set cache /tmp/npm-cache
+nvm install 5 && npm config set cache /tmp/npm-cache
+nvm alias default 4
 
 # C# dependencies (http://www.mono-project.com/docs/getting-started/install/linux/#debian-ubuntu-and-derivatives)
 
diff --git a/tools/run_tests/performance/run_worker_node.sh b/tools/run_tests/performance/run_worker_node.sh
index 46b6ff0177..9a53a311f4 100755
--- a/tools/run_tests/performance/run_worker_node.sh
+++ b/tools/run_tests/performance/run_worker_node.sh
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 source ~/.nvm/nvm.sh
-nvm use 0.12
+nvm use 4
 
 set -ex
 
-- 
GitLab


From dedae79cd46cb84187ca68854e191dbdb4cb9fae Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 2 May 2016 15:05:37 -0700
Subject: [PATCH 301/525] Finished ruby generator change

---
 src/compiler/ruby_generator.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/compiler/ruby_generator.cc b/src/compiler/ruby_generator.cc
index 4ca06a4554..936a186beb 100644
--- a/src/compiler/ruby_generator.cc
+++ b/src/compiler/ruby_generator.cc
@@ -98,8 +98,8 @@ void PrintService(const ServiceDescriptor *service, const grpc::string &package,
   out->Print("self.marshal_class_method = :encode\n");
   out->Print("self.unmarshal_class_method = :decode\n");
   std::map<grpc::string, grpc::string> pkg_vars =
-      ListToDict({"service_full_namename", service->full_name()});
-  out->Print(pkg_vars, "self.service_name = '$pkg.name$.$service.name$'\n");
+      ListToDict({"service_full_name", service->full_name()});
+  out->Print(pkg_vars, "self.service_name = '$service_full_name$'\n");
   out->Print("\n");
   for (int i = 0; i < service->method_count(); ++i) {
     PrintMethod(service->method(i), package, out);
-- 
GitLab


From d7b1e704a829ccdc9e353e80faee634b1414265e Mon Sep 17 00:00:00 2001
From: Vijay Pai <vpai@google.com>
Date: Mon, 2 May 2016 15:10:21 -0700
Subject: [PATCH 302/525] Cover large message sent securely or insecurely over
 async

---
 test/cpp/end2end/async_end2end_test.cc | 80 +++++++++++++++++---------
 1 file changed, 54 insertions(+), 26 deletions(-)

diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc
index 8d58726f13..4de181b901 100644
--- a/test/cpp/end2end/async_end2end_test.cc
+++ b/test/cpp/end2end/async_end2end_test.cc
@@ -201,15 +201,24 @@ class Verifier {
 
 class TestScenario {
  public:
-  TestScenario(bool non_block, const grpc::string& creds_type)
-      : disable_blocking(non_block), credentials_type(creds_type) {}
+  TestScenario(bool non_block, const grpc::string& creds_type,
+               const grpc::string& content)
+      : disable_blocking(non_block),
+        credentials_type(creds_type),
+        message_content(content) {}
+  void Log() const {
+    gpr_log(GPR_INFO,
+            "Scenario: disable_blocking %d, credentials %s, message size %d",
+            disable_blocking, credentials_type.c_str(), message_content.size());
+  }
   bool disable_blocking;
   const grpc::string credentials_type;
+  const grpc::string message_content;
 };
 
 class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
  protected:
-  AsyncEnd2endTest() {}
+  AsyncEnd2endTest() { GetParam().Log(); }
 
   void SetUp() GRPC_OVERRIDE {
     poll_overrider_.reset(new PollingOverrider(!GetParam().disable_blocking));
@@ -260,7 +269,7 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
       ServerContext srv_ctx;
       grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-      send_request.set_message("Hello");
+      send_request.set_message(GetParam().message_content);
       std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
           stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
 
@@ -315,7 +324,7 @@ TEST_P(AsyncEnd2endTest, AsyncNextRpc) {
   ServerContext srv_ctx;
   grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
       stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
 
@@ -362,7 +371,7 @@ TEST_P(AsyncEnd2endTest, SimpleClientStreaming) {
   ServerContext srv_ctx;
   ServerAsyncReader<EchoResponse, EchoRequest> srv_stream(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::unique_ptr<ClientAsyncWriter<EchoRequest>> cli_stream(
       stub_->AsyncRequestStream(&cli_ctx, &recv_response, cq_.get(), tag(1)));
 
@@ -418,7 +427,7 @@ TEST_P(AsyncEnd2endTest, SimpleServerStreaming) {
   ServerContext srv_ctx;
   ServerAsyncWriter<EchoResponse> srv_stream(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::unique_ptr<ClientAsyncReader<EchoResponse>> cli_stream(
       stub_->AsyncResponseStream(&cli_ctx, send_request, cq_.get(), tag(1)));
 
@@ -471,7 +480,7 @@ TEST_P(AsyncEnd2endTest, SimpleBidiStreaming) {
   ServerContext srv_ctx;
   ServerAsyncReaderWriter<EchoResponse, EchoRequest> srv_stream(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::unique_ptr<ClientAsyncReaderWriter<EchoRequest, EchoResponse>>
       cli_stream(stub_->AsyncBidiStream(&cli_ctx, cq_.get(), tag(1)));
 
@@ -527,7 +536,7 @@ TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) {
   ServerContext srv_ctx;
   grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::pair<grpc::string, grpc::string> meta1("key1", "val1");
   std::pair<grpc::string, grpc::string> meta2("key2", "val2");
   std::pair<grpc::string, grpc::string> meta3("g.r.d-bin", "xyz");
@@ -576,7 +585,7 @@ TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) {
   ServerContext srv_ctx;
   grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::pair<grpc::string, grpc::string> meta1("key1", "val1");
   std::pair<grpc::string, grpc::string> meta2("key2", "val2");
 
@@ -625,7 +634,7 @@ TEST_P(AsyncEnd2endTest, ServerTrailingMetadataRpc) {
   ServerContext srv_ctx;
   grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::pair<grpc::string, grpc::string> meta1("key1", "val1");
   std::pair<grpc::string, grpc::string> meta2("key2", "val2");
 
@@ -671,7 +680,7 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
   ServerContext srv_ctx;
   grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::pair<grpc::string, grpc::string> meta1("key1", "val1");
   std::pair<grpc::string, grpc::string> meta2(
       "key2-bin",
@@ -750,7 +759,7 @@ TEST_P(AsyncEnd2endTest, ServerCheckCancellation) {
   ServerContext srv_ctx;
   grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
       stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
 
@@ -785,7 +794,7 @@ TEST_P(AsyncEnd2endTest, ServerCheckDone) {
   ServerContext srv_ctx;
   grpc::ServerAsyncResponseWriter<EchoResponse> response_writer(&srv_ctx);
 
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
       stub_->AsyncEcho(&cli_ctx, send_request, cq_.get()));
 
@@ -822,7 +831,7 @@ TEST_P(AsyncEnd2endTest, UnimplementedRpc) {
   Status recv_status;
 
   ClientContext cli_ctx;
-  send_request.set_message("Hello");
+  send_request.set_message(GetParam().message_content);
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
       stub->AsyncUnimplemented(&cli_ctx, send_request, cq_.get()));
 
@@ -1319,28 +1328,47 @@ TEST_P(AsyncEnd2endServerTryCancelTest, ServerBidiStreamingTryCancelAfter) {
 }
 
 std::vector<TestScenario> CreateTestScenarios(bool test_disable_blocking,
-                                              bool test_secure) {
+                                              bool test_secure,
+                                              int test_big_limit) {
   std::vector<TestScenario> scenarios;
   std::vector<grpc::string> credentials_types;
-  if (test_secure) {
-    credentials_types = GetSecureCredentialsTypeList();
-  }
+  std::vector<grpc::string> messages;
+
   credentials_types.push_back(kInsecureCredentialsType);
-  for (auto it = credentials_types.begin(); it != credentials_types.end();
-       ++it) {
-    scenarios.push_back(TestScenario(false, *it));
-    if (test_disable_blocking) {
-      scenarios.push_back(TestScenario(true, *it));
+  auto sec_list = GetSecureCredentialsTypeList();
+  for (auto sec = sec_list.begin(); sec != sec_list.end(); sec++) {
+    credentials_types.push_back(*sec);
+  }
+
+  messages.push_back("Hello");
+  for (int sz = 1; sz < test_big_limit; sz *= 2) {
+    grpc::string big_msg;
+    for (int i = 0; i < sz * 1024; i++) {
+      char c = 'a' + (i % 26);
+      big_msg += c;
+    }
+    messages.push_back(big_msg);
+  }
+
+  for (auto cred = credentials_types.begin(); cred != credentials_types.end();
+       ++cred) {
+    for (auto msg = messages.begin(); msg != messages.end(); msg++) {
+      scenarios.push_back(TestScenario(false, *cred, *msg));
+      if (test_disable_blocking) {
+        scenarios.push_back(TestScenario(true, *cred, *msg));
+      }
     }
   }
   return scenarios;
 }
 
 INSTANTIATE_TEST_CASE_P(AsyncEnd2end, AsyncEnd2endTest,
-                        ::testing::ValuesIn(CreateTestScenarios(true, true)));
+                        ::testing::ValuesIn(CreateTestScenarios(true, true,
+                                                                1024)));
 INSTANTIATE_TEST_CASE_P(AsyncEnd2endServerTryCancel,
                         AsyncEnd2endServerTryCancelTest,
-                        ::testing::ValuesIn(CreateTestScenarios(false, false)));
+                        ::testing::ValuesIn(CreateTestScenarios(false, false,
+                                                                0)));
 
 }  // namespace
 }  // namespace testing
-- 
GitLab


From 7edab7c5e32c74d996b077de6bb7cf5085846d62 Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Fri, 29 Apr 2016 19:09:37 -0700
Subject: [PATCH 303/525] Ruby docker files and config

---
 .../Dockerfile.template                       | 41 ++++++++
 .../grpc_interop_stress_ruby/Dockerfile       | 99 +++++++++++++++++++
 .../build_interop_stress.sh                   | 48 +++++++++
 tools/gcp/stress_test/run_ruby.sh             | 37 +++++++
 tools/run_tests/stress_test/configs/ruby.json | 92 +++++++++++++++++
 5 files changed, 317 insertions(+)
 create mode 100644 templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template
 create mode 100644 tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile
 create mode 100755 tools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh
 create mode 100755 tools/gcp/stress_test/run_ruby.sh
 create mode 100644 tools/run_tests/stress_test/configs/ruby.json

diff --git a/templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template b/templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template
new file mode 100644
index 0000000000..8b933aaa32
--- /dev/null
+++ b/templates/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile.template
@@ -0,0 +1,41 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../ccache_setup.include"/>
+  <%include file="../../cxx_deps.include"/>
+  <%include file="../../gcp_api_libraries.include"/>
+  <%include file="../../ruby_deps.include"/>
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile
new file mode 100644
index 0000000000..36b54ddafe
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/Dockerfile
@@ -0,0 +1,99 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM debian:jessie
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+  autoconf \
+  autotools-dev \
+  build-essential \
+  bzip2 \
+  ccache \
+  curl \
+  gcc \
+  gcc-multilib \
+  git \
+  golang \
+  gyp \
+  lcov \
+  libc6 \
+  libc6-dbg \
+  libc6-dev \
+  libgtest-dev \
+  libtool \
+  make \
+  perl \
+  strace \
+  python-dev \
+  python-setuptools \
+  python-yaml \
+  telnet \
+  unzip \
+  wget \
+  zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
+# Google Cloud platform API libraries
+RUN apt-get update && apt-get install -y python-pip && apt-get clean
+RUN pip install --upgrade google-api-python-client
+
+
+#==================
+# Ruby dependencies
+
+# Install rvm
+RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
+RUN \curl -sSL https://get.rvm.io | bash -s stable
+
+# Install Ruby 2.1
+RUN /bin/bash -l -c "rvm install ruby-2.1"
+RUN /bin/bash -l -c "rvm use --default ruby-2.1"
+RUN /bin/bash -l -c "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
+RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
+RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
+RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh
new file mode 100755
index 0000000000..1b7567d87a
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_ruby/build_interop_stress.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Builds Ruby interop server and client in a base image.
+set -e
+
+mkdir -p /var/local/git
+git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
+
+# Copy service account keys if available
+cp -r /var/local/jenkins/service_account $HOME || true
+
+cd /var/local/git/grpc
+rvm --default use ruby-2.1
+
+# Build Ruby interop client and server
+(cd src/ruby && gem update bundler && bundle && rake compile)
+
+# Build c++ metrics client to query the metrics from ruby stress client
+make metrics_client -j
+
diff --git a/tools/gcp/stress_test/run_ruby.sh b/tools/gcp/stress_test/run_ruby.sh
new file mode 100755
index 0000000000..80d0567447
--- /dev/null
+++ b/tools/gcp/stress_test/run_ruby.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+# Copyright 2015-2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# This is a wrapper script that was created to help run_server.py and
+# run_client.py to launch 'node js' stress clients and stress servers
+source /etc/profile.d/rvm.sh
+
+set -ex
+
+$@
diff --git a/tools/run_tests/stress_test/configs/ruby.json b/tools/run_tests/stress_test/configs/ruby.json
new file mode 100644
index 0000000000..a323fa72b6
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/ruby.json
@@ -0,0 +1,92 @@
+{
+  "dockerImages": {
+    "grpc_stress_ruby" : {
+      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "dockerFileDir": "grpc_interop_stress_ruby"
+    }
+  },
+
+  "clientTemplates": {
+    "baseTemplates": {
+      "default": {
+        "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+        "pollIntervalSecs": 60,
+        "clientArgs": {
+          "num_channels_per_server":5,
+          "num_stubs_per_channel":10,
+          "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+          "metrics_port": 8081
+        },
+        "metricsPort": 8081,
+        "metricsArgs": {
+          "metrics_server_address": "localhost:8081",
+          "total_only": "true"
+        }
+      }
+    },
+    "templates": {
+      "ruby_client": {
+        "baseTemplate": "default",
+        "stressClientCmd": [
+          "/var/local/git/grpc/tools/gcp/stress_test/run_ruby.sh",
+          "ruby",
+          "/var/local/git/grpc/src/ruby/stress/stress_client.rb"
+        ],
+        "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+      }
+    }
+  },
+
+  "serverTemplates": {
+    "baseTemplates":{
+      "default": {
+        "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+        "serverPort": 8080,
+        "serverArgs": {
+          "port": 8080
+        }
+      }
+    },
+    "templates": {
+      "ruby_server": {
+        "baseTemplate": "default",
+        "stressServerCmd": [
+          "/var/local/git/grpc/tools/gcp/stress_test/run_ruby.sh",
+          "ruby",
+          "/var/local/git/grpc/src/ruby/pb/test/server.rb"
+        ]
+      }
+    }
+  },
+
+  "testMatrix": {
+    "serverPodSpecs": {
+      "stress-server-ruby": {
+        "serverTemplate": "ruby_server",
+        "dockerImage": "grpc_stress_ruby",
+        "numInstances": 1
+      }
+    },
+
+    "clientPodSpecs": {
+      "stress-client-ruby": {
+        "clientTemplate": "ruby_client",
+        "dockerImage": "grpc_stress_ruby",
+        "numInstances": 10,
+        "serverPodSpec": "stress-server-ruby"
+      }
+    }
+  },
+
+  "globalSettings": {
+    "buildDockerImages": true,
+    "pollIntervalSecs": 60,
+    "testDurationSecs": 7200,
+    "kubernetesProxyPort": 8001,
+    "datasetIdNamePrefix": "stress_test_ruby",
+    "summaryTableId": "summary",
+    "qpsTableId": "qps",
+    "podWarmupSecs": 60
+  }
+}
+
-- 
GitLab


From 70f697ba1e6ad17422928a398807e84f8f469724 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Mon, 2 May 2016 22:29:21 -0700
Subject: [PATCH 304/525] reran generate_projects.sh after @nnoble's fix in
 PR6399.

---
 grpc.def                                           | 1 -
 src/python/grpcio/grpc/_cython/imports.generated.c | 2 --
 src/python/grpcio/grpc/_cython/imports.generated.h | 4 ----
 src/ruby/ext/grpc/rb_grpc_imports.generated.c      | 2 --
 src/ruby/ext/grpc/rb_grpc_imports.generated.h      | 4 ----
 5 files changed, 13 deletions(-)

diff --git a/grpc.def b/grpc.def
index 09a94a6cd0..61948ed1b8 100644
--- a/grpc.def
+++ b/grpc.def
@@ -87,7 +87,6 @@ EXPORTS
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
     grpc_call_error_to_string
-    grpc_cronet_secure_channel_create
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index 09551472b5..f0a40dbb35 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -125,7 +125,6 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
-grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -396,7 +395,6 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
-  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index 54c8aaad13..d5e810b7cf 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -43,7 +43,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -326,9 +325,6 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
-typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
-extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
-#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index cebbe8c40f..bc43f9d36b 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -125,7 +125,6 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
-grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -392,7 +391,6 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
-  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index d7ea6c574c..b67361ca25 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -43,7 +43,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -326,9 +325,6 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
-typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
-extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
-#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
-- 
GitLab


From 97eb4f6779ad232792c7f79738276d5ce13aa343 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 13:08:12 -0700
Subject: [PATCH 305/525] add more tests

---
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 61 +++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index a678e4dafe..605072b323 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -32,6 +32,7 @@
 #endregion
 
 using System;
+using System.Collections.Generic;
 using System.Runtime.InteropServices;
 using System.Threading.Tasks;
 
@@ -118,6 +119,14 @@ namespace Grpc.Core.Internal.Tests
             AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.Internal);
         }
 
+        [Test]
+        public void ClientStreaming_StreamingReadNotAllowed()
+        {
+            asyncCall.ClientStreamingCallAsync();
+            Assert.Throws(typeof(InvalidOperationException),
+                () => asyncCall.StartReadMessage((x,y) => {}));
+        }
+
         [Test]
         public void ClientStreaming_NoRequest_Success()
         {
@@ -142,6 +151,47 @@ namespace Grpc.Core.Internal.Tests
             AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.InvalidArgument);
         }
 
+        [Test]
+        public void ServerStreaming_StreamingSendNotAllowed()
+        {
+            asyncCall.StartServerStreamingCall("request1");
+            Assert.Throws(typeof(InvalidOperationException),
+                () => asyncCall.StartSendMessage("abc", new WriteFlags(), (x,y) => {}));
+        }
+
+        [Test]
+        public void ServerStreaming_NoResponse1_Success()
+        {
+            asyncCall.StartServerStreamingCall("request1");
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+            var readTask = responseStream.MoveNext();
+
+            fakeCall.ReceivedResponseHeadersHandler(true, new Metadata());
+            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+
+            fakeCall.ReceivedMessageHandler(true, null);
+            fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+            AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+        }
+
+        [Test]
+        public void ServerStreaming_NoResponse2_Success()
+        {
+            asyncCall.StartServerStreamingCall("request1");
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+            var readTask = responseStream.MoveNext();
+
+            fakeCall.ReceivedResponseHeadersHandler(true, new Metadata());
+            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+
+            // try alternative order of completions
+            fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+            fakeCall.ReceivedMessageHandler(true, null);
+
+            AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+        }
+
         ClientSideStatus CreateClientSideStatus(StatusCode statusCode)
         {
             return new ClientSideStatus(new Status(statusCode, ""), new Metadata());
@@ -163,6 +213,17 @@ namespace Grpc.Core.Internal.Tests
             Assert.AreEqual("response1", resultTask.Result);
         }
 
+        static void AssertStreamingResponseSuccess(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<bool> moveNextTask)
+        {
+            Assert.IsTrue(moveNextTask.IsCompleted);
+            Assert.IsTrue(fakeCall.IsDisposed);
+
+            Assert.IsFalse(moveNextTask.Result);
+            Assert.AreEqual(Status.DefaultSuccess, asyncCall.GetStatus());
+            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+            Assert.AreEqual(0, asyncCall.GetTrailers().Count);
+        }
+
         static void AssertUnaryResponseError(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<string> resultTask, StatusCode expectedStatusCode)
         {
             Assert.IsTrue(resultTask.IsCompleted);
-- 
GitLab


From 69274c2a0d316ccac66a5fa726255de0c8197834 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 15:34:40 -0700
Subject: [PATCH 306/525] add more features

---
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 31 +++++++++++++++++--
 .../Grpc.Core/Internal/AsyncCallBase.cs       |  6 ++--
 2 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index 605072b323..324b682510 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -160,7 +160,7 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void ServerStreaming_NoResponse1_Success()
+        public void ServerStreaming_NoResponse_Success1()
         {
             asyncCall.StartServerStreamingCall("request1");
             var responseStream = new ClientResponseStream<string, string>(asyncCall);
@@ -176,7 +176,7 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void ServerStreaming_NoResponse2_Success()
+        public void ServerStreaming_NoResponse_Success2()
         {
             asyncCall.StartServerStreamingCall("request1");
             var responseStream = new ClientResponseStream<string, string>(asyncCall);
@@ -192,6 +192,22 @@ namespace Grpc.Core.Internal.Tests
             AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
         }
 
+        [Test]
+        public void ServerStreaming_NoResponse_ReadFailure()
+        {
+            asyncCall.StartServerStreamingCall("request1");
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+            var readTask = responseStream.MoveNext();
+
+            fakeCall.ReceivedResponseHeadersHandler(true, new Metadata());
+            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+
+            fakeCall.ReceivedMessageHandler(false, null);  // after a failed read, we rely on C core to deliver appropriate status code.
+            fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Internal));
+
+            AssertStreamingResponseError(asyncCall, fakeCall, readTask, StatusCode.Internal);
+        }
+
         ClientSideStatus CreateClientSideStatus(StatusCode statusCode)
         {
             return new ClientSideStatus(new Status(statusCode, ""), new Metadata());
@@ -236,6 +252,17 @@ namespace Grpc.Core.Internal.Tests
             Assert.AreEqual(0, asyncCall.GetTrailers().Count);
         }
 
+        static void AssertStreamingResponseError(AsyncCall<string, string> asyncCall, FakeNativeCall fakeCall, Task<bool> moveNextTask, StatusCode expectedStatusCode)
+        {
+            Assert.IsTrue(moveNextTask.IsCompleted);
+            Assert.IsTrue(fakeCall.IsDisposed);
+
+            var ex = Assert.ThrowsAsync<RpcException>(async () => await moveNextTask);
+            Assert.AreEqual(expectedStatusCode, asyncCall.GetStatus().StatusCode);
+            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
+            Assert.AreEqual(0, asyncCall.GetTrailers().Count);
+        }
+
         internal class FakeNativeCall : INativeCall
         {
             public UnaryResponseClientHandler UnaryResponseClientHandler
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
index ccd047f469..877b997aba 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
@@ -346,6 +346,10 @@ namespace Grpc.Core.Internal
         /// </summary>
         protected void HandleReadFinished(bool success, byte[] receivedMessage)
         {
+            // if success == false, received message will be null. It that case we will
+            // treat this completion as the last read an rely on C core to handle the failed
+            // read (e.g. deliver approriate statusCode on the clientside).
+
             TRead msg = default(TRead);
             var deserializeException = (success && receivedMessage != null) ? TryDeserialize(receivedMessage, out msg) : null;
 
@@ -370,8 +374,6 @@ namespace Grpc.Core.Internal
                 ReleaseResourcesIfPossible();
             }
 
-            // TODO: handle the case when success==false
-
             if (deserializeException != null && !IsClient)
             {
                 FireCompletion(origCompletionDelegate, default(TRead), new IOException("Failed to deserialize request message.", deserializeException));
-- 
GitLab


From a83ad2aa65a04d16b484e7c4373b7db5575221a4 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 17:13:00 -0700
Subject: [PATCH 307/525] add idempotency test

---
 .../Grpc.Core.Tests/ClientServerTest.cs       | 31 +++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
index 6c13a4fa48..44be94c5ae 100644
--- a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
@@ -166,6 +166,37 @@ namespace Grpc.Core.Tests
             Assert.IsNotNull("xyz", call.GetTrailers()[0].Key);
         }
 
+        [Test]
+        public async Task ServerStreamingCall_EndOfStreamIsIdempotent()
+        {
+            helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
+            {
+            });
+
+            var call = Calls.AsyncServerStreamingCall(helper.CreateServerStreamingCall(), "");
+
+            Assert.IsFalse(await call.ResponseStream.MoveNext());
+            Assert.IsFalse(await call.ResponseStream.MoveNext());
+        }
+
+        [Test]
+        public async Task ServerStreamingCall_ErrorCanBeAwaitedTwice()
+        {
+            helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
+            {
+                context.Status = new Status(StatusCode.InvalidArgument, "");
+            });
+
+            var call = Calls.AsyncServerStreamingCall(helper.CreateServerStreamingCall(), "");
+
+            var ex = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseStream.MoveNext());
+            Assert.AreEqual(StatusCode.InvalidArgument, ex.Status.StatusCode);
+
+            // attempting MoveNext again should result in throwing the same exception.
+            var ex2 = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseStream.MoveNext());
+            Assert.AreEqual(StatusCode.InvalidArgument, ex2.Status.StatusCode);
+        }
+
         [Test]
         public async Task DuplexStreamingCall()
         {
-- 
GitLab


From 96f21a27cb7975d52aa92197536eef0ad8dca455 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 17:17:18 -0700
Subject: [PATCH 308/525] make end-of-stream idempotent

---
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 39 +++++++++++++------
 src/csharp/Grpc.Core/Internal/AsyncCall.cs    |  5 +--
 .../Grpc.Core/Internal/AsyncCallBase.cs       | 39 ++++++++++++-------
 .../Grpc.Core/Internal/AsyncCallServer.cs     |  5 +--
 .../Internal/ClientResponseStream.cs          |  4 +-
 .../Grpc.Core/Internal/ServerRequestStream.cs |  4 +-
 6 files changed, 58 insertions(+), 38 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index 324b682510..96749cda14 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -76,8 +76,8 @@ namespace Grpc.Core.Internal.Tests
         public void AsyncUnary_StreamingOperationsNotAllowed()
         {
             asyncCall.UnaryCallAsync("request1");
-            Assert.Throws(typeof(InvalidOperationException),
-                () => asyncCall.StartReadMessage((x,y) => {}));
+            Assert.ThrowsAsync(typeof(InvalidOperationException),
+                async () => await asyncCall.ReadMessageAsync());
             Assert.Throws(typeof(InvalidOperationException),
                 () => asyncCall.StartSendMessage("abc", new WriteFlags(), (x,y) => {}));
         }
@@ -123,8 +123,8 @@ namespace Grpc.Core.Internal.Tests
         public void ClientStreaming_StreamingReadNotAllowed()
         {
             asyncCall.ClientStreamingCallAsync();
-            Assert.Throws(typeof(InvalidOperationException),
-                () => asyncCall.StartReadMessage((x,y) => {}));
+            Assert.ThrowsAsync(typeof(InvalidOperationException),
+                async () => await asyncCall.ReadMessageAsync());
         }
 
         [Test]
@@ -182,9 +182,6 @@ namespace Grpc.Core.Internal.Tests
             var responseStream = new ClientResponseStream<string, string>(asyncCall);
             var readTask = responseStream.MoveNext();
 
-            fakeCall.ReceivedResponseHeadersHandler(true, new Metadata());
-            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
-
             // try alternative order of completions
             fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
             fakeCall.ReceivedMessageHandler(true, null);
@@ -199,15 +196,35 @@ namespace Grpc.Core.Internal.Tests
             var responseStream = new ClientResponseStream<string, string>(asyncCall);
             var readTask = responseStream.MoveNext();
 
-            fakeCall.ReceivedResponseHeadersHandler(true, new Metadata());
-            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
-
             fakeCall.ReceivedMessageHandler(false, null);  // after a failed read, we rely on C core to deliver appropriate status code.
             fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Internal));
 
             AssertStreamingResponseError(asyncCall, fakeCall, readTask, StatusCode.Internal);
         }
 
+        [Test]
+        public void ServerStreaming_MoreResponses_Success()
+        {
+            asyncCall.StartServerStreamingCall("request1");
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+            var readTask1 = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+            Assert.IsTrue(readTask1.Result);
+            Assert.AreEqual("response1", responseStream.Current);
+
+            var readTask2 = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+            Assert.IsTrue(readTask2.Result);
+            Assert.AreEqual("response1", responseStream.Current);
+
+            var readTask3 = responseStream.MoveNext();
+            fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+            fakeCall.ReceivedMessageHandler(true, null);
+
+            AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask3);
+        }
+
         ClientSideStatus CreateClientSideStatus(StatusCode statusCode)
         {
             return new ClientSideStatus(new Status(statusCode, ""), new Metadata());
@@ -236,7 +253,6 @@ namespace Grpc.Core.Internal.Tests
 
             Assert.IsFalse(moveNextTask.Result);
             Assert.AreEqual(Status.DefaultSuccess, asyncCall.GetStatus());
-            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
             Assert.AreEqual(0, asyncCall.GetTrailers().Count);
         }
 
@@ -259,7 +275,6 @@ namespace Grpc.Core.Internal.Tests
 
             var ex = Assert.ThrowsAsync<RpcException>(async () => await moveNextTask);
             Assert.AreEqual(expectedStatusCode, asyncCall.GetStatus().StatusCode);
-            Assert.AreEqual(0, asyncCall.ResponseHeadersAsync.Result.Count);
             Assert.AreEqual(0, asyncCall.GetTrailers().Count);
         }
 
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index 50ba617cdb..f522174bd0 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -241,11 +241,10 @@ namespace Grpc.Core.Internal
 
         /// <summary>
         /// Receives a streaming response. Only one pending read action is allowed at any given time.
-        /// completionDelegate is called when the operation finishes.
         /// </summary>
-        public void StartReadMessage(AsyncCompletionDelegate<TResponse> completionDelegate)
+        public Task<TResponse> ReadMessageAsync()
         {
-            StartReadMessageInternal(completionDelegate);
+            return ReadMessageInternalAsync();
         }
 
         /// <summary>
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
index 877b997aba..abacfabadb 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
@@ -68,7 +68,7 @@ namespace Grpc.Core.Internal
         protected bool cancelRequested;
 
         protected AsyncCompletionDelegate<object> sendCompletionDelegate;  // Completion of a pending send or sendclose if not null.
-        protected AsyncCompletionDelegate<TRead> readCompletionDelegate;  // Completion of a pending send or sendclose if not null.
+        protected TaskCompletionSource<TRead> streamingReadTcs;  // Completion of a pending streaming read if not null.
 
         protected bool readingDone;  // True if last read (i.e. read with null payload) was already received.
         protected bool halfcloseRequested;  // True if send close have been initiated.
@@ -150,15 +150,25 @@ namespace Grpc.Core.Internal
         /// Initiates reading a message. Only one read operation can be active at a time.
         /// completionDelegate is invoked upon completion.
         /// </summary>
-        protected void StartReadMessageInternal(AsyncCompletionDelegate<TRead> completionDelegate)
+        protected Task<TRead> ReadMessageInternalAsync()
         {
             lock (myLock)
             {
-                GrpcPreconditions.CheckNotNull(completionDelegate, "Completion delegate cannot be null");
                 CheckReadingAllowed();
+                if (readingDone)
+                {
+                    // the last read that returns null or throws an exception is idempotent
+                    // and maintain its state.
+                    GrpcPreconditions.CheckState(streamingReadTcs != null, "Call does not support streaming reads.");
+                    return streamingReadTcs.Task;
+                }
+
+                GrpcPreconditions.CheckState(streamingReadTcs == null, "Only one read can be pending at a time");
+                GrpcPreconditions.CheckState(!disposed);
 
                 call.StartReceiveMessage(HandleReadFinished);
-                readCompletionDelegate = completionDelegate;
+                streamingReadTcs = new TaskCompletionSource<TRead>();
+                return streamingReadTcs.Task;
             }
         }
 
@@ -216,10 +226,6 @@ namespace Grpc.Core.Internal
         protected virtual void CheckReadingAllowed()
         {
             GrpcPreconditions.CheckState(started);
-            GrpcPreconditions.CheckState(!disposed);
-
-            GrpcPreconditions.CheckState(!readingDone, "Stream has already been closed.");
-            GrpcPreconditions.CheckState(readCompletionDelegate == null, "Only one read can be pending at a time");
         }
 
         protected void CheckNotCancelled()
@@ -353,12 +359,10 @@ namespace Grpc.Core.Internal
             TRead msg = default(TRead);
             var deserializeException = (success && receivedMessage != null) ? TryDeserialize(receivedMessage, out msg) : null;
 
-            AsyncCompletionDelegate<TRead> origCompletionDelegate = null;
+            TaskCompletionSource<TRead> origTcs = null;
             lock (myLock)
             {
-                origCompletionDelegate = readCompletionDelegate;
-                readCompletionDelegate = null;
-
+                origTcs = streamingReadTcs;
                 if (receivedMessage == null)
                 {
                     // This was the last read.
@@ -368,18 +372,25 @@ namespace Grpc.Core.Internal
                 if (deserializeException != null && IsClient)
                 {
                     readingDone = true;
+
+                    // TODO(jtattermusch): it might be too late to set the status
                     CancelWithStatus(DeserializeResponseFailureStatus);
                 }
 
+                if (!readingDone)
+                {
+                    streamingReadTcs = null;
+                }
+
                 ReleaseResourcesIfPossible();
             }
 
             if (deserializeException != null && !IsClient)
             {
-                FireCompletion(origCompletionDelegate, default(TRead), new IOException("Failed to deserialize request message.", deserializeException));
+                origTcs.SetException(new IOException("Failed to deserialize request message.", deserializeException));
                 return;
             }
-            FireCompletion(origCompletionDelegate, msg, null);
+            origTcs.SetResult(msg);
         }
     }
 }
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index bea2b3660c..cce480b2c4 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -91,11 +91,10 @@ namespace Grpc.Core.Internal
 
         /// <summary>
         /// Receives a streaming request. Only one pending read action is allowed at any given time.
-        /// completionDelegate is called when the operation finishes.
         /// </summary>
-        public void StartReadMessage(AsyncCompletionDelegate<TRequest> completionDelegate)
+        public Task<TRequest> ReadMessageAsync()
         {
-            StartReadMessageInternal(completionDelegate);
+            return ReadMessageInternalAsync();
         }
 
         /// <summary>
diff --git a/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs b/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs
index d6e34a0f04..ad9423ff58 100644
--- a/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs
+++ b/src/csharp/Grpc.Core/Internal/ClientResponseStream.cs
@@ -68,9 +68,7 @@ namespace Grpc.Core.Internal
             {
                 throw new InvalidOperationException("Cancellation of individual reads is not supported.");
             }
-            var taskSource = new AsyncCompletionTaskSource<TResponse>();
-            call.StartReadMessage(taskSource.CompletionDelegate);
-            var result = await taskSource.Task.ConfigureAwait(false);
+            var result = await call.ReadMessageAsync().ConfigureAwait(false);
             this.current = result;
 
             if (result == null)
diff --git a/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs b/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs
index e7be82c318..d76030d1ad 100644
--- a/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerRequestStream.cs
@@ -68,9 +68,7 @@ namespace Grpc.Core.Internal
             {
                 throw new InvalidOperationException("Cancellation of individual reads is not supported.");
             }
-            var taskSource = new AsyncCompletionTaskSource<TRequest>();
-            call.StartReadMessage(taskSource.CompletionDelegate);
-            var result = await taskSource.Task.ConfigureAwait(false);
+            var result = await call.ReadMessageAsync().ConfigureAwait(false);
             this.current = result;
             return result != null;
         }
-- 
GitLab


From a2966776f7f40e2095bba1f4d8b5922c239dfe9e Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 2 May 2016 18:29:23 -0700
Subject: [PATCH 309/525] add more tests

---
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 206 ++++++++++++++++++
 1 file changed, 206 insertions(+)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index 96749cda14..ed2d22815b 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -41,6 +41,9 @@ using NUnit.Framework;
 
 namespace Grpc.Core.Internal.Tests
 {
+    /// <summary>
+    /// Uses fake native call to test interaction of wrapping code with C core in different situations.
+    /// </summary>
     public class AsyncCallTest
     {
         Channel channel;
@@ -151,6 +154,99 @@ namespace Grpc.Core.Internal.Tests
             AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.InvalidArgument);
         }
 
+        [Test]
+        public void ClientStreaming_MoreRequests_Success()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+            var writeTask = requestStream.WriteAsync("request1");
+            fakeCall.SendCompletionHandler(true);
+            writeTask.Wait();
+
+            var writeTask2 = requestStream.WriteAsync("request2");
+            fakeCall.SendCompletionHandler(true);
+            writeTask2.Wait();
+
+            var completeTask = requestStream.CompleteAsync();
+            fakeCall.SendCompletionHandler(true);
+            completeTask.Wait();
+
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+        }
+
+        [Test]
+        public void ClientStreaming_WriteFailure()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+            var writeTask = requestStream.WriteAsync("request1");
+            fakeCall.SendCompletionHandler(false);
+            Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await writeTask);
+
+            fakeCall.UnaryResponseClientHandler(true,
+                CreateClientSideStatus(StatusCode.Internal),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.Internal);
+        }
+
+        [Test]
+        public void ClientStreaming_WriteAfterReceivingStatusFails()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+            Assert.Throws(typeof(InvalidOperationException), () => requestStream.WriteAsync("request1"));
+        }
+
+        [Test]
+        public void ClientStreaming_CompleteAfterReceivingStatusSucceeds()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+            Assert.DoesNotThrowAsync(async () => await requestStream.CompleteAsync());
+        }
+
+        [Test]
+        public void ClientStreaming_WriteAfterCancellationRequestFails()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+            asyncCall.Cancel();
+            Assert.IsTrue(fakeCall.IsCancelled);
+
+            Assert.Throws(typeof(OperationCanceledException), () => requestStream.WriteAsync("request1"));
+
+            fakeCall.UnaryResponseClientHandler(true,
+                CreateClientSideStatus(StatusCode.Cancelled),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.Cancelled);
+        }
+
         [Test]
         public void ServerStreaming_StreamingSendNotAllowed()
         {
@@ -225,6 +321,116 @@ namespace Grpc.Core.Internal.Tests
             AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask3);
         }
 
+        [Test]
+        public void DuplexStreaming_NoRequestNoResponse_Success()
+        {
+            asyncCall.StartDuplexStreamingCall();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+            var writeTask1 = requestStream.CompleteAsync();
+            fakeCall.SendCompletionHandler(true);
+            Assert.DoesNotThrowAsync(async () => await writeTask1);
+
+            var readTask = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+            AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+        }
+
+        [Test]
+        public void DuplexStreaming_WriteAfterReceivingStatusFails()
+        {
+            asyncCall.StartDuplexStreamingCall();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+            var readTask = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+            AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+
+            Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await requestStream.WriteAsync("request1"));
+        }
+
+        [Test]
+        public void DuplexStreaming_CompleteAfterReceivingStatusFails()
+        {
+            asyncCall.StartDuplexStreamingCall();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+            var readTask = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            fakeCall.ReceivedStatusOnClientHandler(true, new ClientSideStatus(Status.DefaultSuccess, new Metadata()));
+
+            AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
+
+            Assert.DoesNotThrowAsync(async () => await requestStream.CompleteAsync());
+        }
+
+        [Test]
+        public void DuplexStreaming_WriteAfterCancellationRequestFails()
+        {
+            asyncCall.StartDuplexStreamingCall();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+            asyncCall.Cancel();
+            Assert.IsTrue(fakeCall.IsCancelled);
+            Assert.Throws(typeof(OperationCanceledException), () => requestStream.WriteAsync("request1"));
+
+            var readTask = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled));
+
+            AssertStreamingResponseError(asyncCall, fakeCall, readTask, StatusCode.Cancelled);
+        }
+
+        [Test]
+        public void DuplexStreaming_ReadAfterCancellationRequestCanSucceed()
+        {
+            asyncCall.StartDuplexStreamingCall();
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+            asyncCall.Cancel();
+            Assert.IsTrue(fakeCall.IsCancelled);
+
+            var readTask1 = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+            Assert.IsTrue(readTask1.Result);
+            Assert.AreEqual("response1", responseStream.Current);
+
+            var readTask2 = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled));
+
+            AssertStreamingResponseError(asyncCall, fakeCall, readTask2, StatusCode.Cancelled);
+        }
+
+        [Test]
+        public void DuplexStreaming_ReadStartedBeforeCancellationRequestCanSucceed()
+        {
+            asyncCall.StartDuplexStreamingCall();
+            var responseStream = new ClientResponseStream<string, string>(asyncCall);
+
+            var readTask1 = responseStream.MoveNext();  // initiate the read before cancel request
+            asyncCall.Cancel();
+            Assert.IsTrue(fakeCall.IsCancelled);
+
+            fakeCall.ReceivedMessageHandler(true, CreateResponsePayload());
+            Assert.IsTrue(readTask1.Result);
+            Assert.AreEqual("response1", responseStream.Current);
+
+            var readTask2 = responseStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            fakeCall.ReceivedStatusOnClientHandler(true, CreateClientSideStatus(StatusCode.Cancelled));
+
+            AssertStreamingResponseError(asyncCall, fakeCall, readTask2, StatusCode.Cancelled);
+        }
+
         ClientSideStatus CreateClientSideStatus(StatusCode statusCode)
         {
             return new ClientSideStatus(new Status(statusCode, ""), new Metadata());
-- 
GitLab


From 51050562460bee6e0ecf831af037430a249f6d73 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 09:39:41 -0700
Subject: [PATCH 310/525] add one more client server test

---
 .../Grpc.Core.Tests/ClientServerTest.cs       | 33 +++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
index 44be94c5ae..d4a41f293e 100644
--- a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
@@ -239,6 +239,39 @@ namespace Grpc.Core.Tests
             Assert.AreEqual(StatusCode.Cancelled, ex.Status.StatusCode);
         }
 
+        [Test]
+        public async Task ClientStreamingCall_ServerSideReadAfterCancelNotificationReturnsNull()
+        {
+            var handlerStartedBarrier = new TaskCompletionSource<object>();
+            var cancelNotificationReceivedBarrier = new TaskCompletionSource<object>();
+            var successTcs = new TaskCompletionSource<string>();
+
+            helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
+            {
+                
+                handlerStartedBarrier.SetResult(null);
+
+                // wait for cancellation to be delivered.
+                context.CancellationToken.Register(() => cancelNotificationReceivedBarrier.SetResult(null));
+                await cancelNotificationReceivedBarrier.Task;
+
+                var moveNextResult = await requestStream.MoveNext();
+                successTcs.SetResult(!moveNextResult ? "SUCCESS" : "FAIL");
+                return "";
+            });
+
+            var cts = new CancellationTokenSource();
+            var call = Calls.AsyncClientStreamingCall(helper.CreateClientStreamingCall(new CallOptions(cancellationToken: cts.Token)));
+
+            await handlerStartedBarrier.Task;
+            cts.Cancel();
+
+            var ex = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseAsync);
+            Assert.AreEqual(StatusCode.Cancelled, ex.Status.StatusCode);
+
+            Assert.AreEqual("SUCCESS", await successTcs.Task);
+        }
+
         [Test]
         public async Task AsyncUnaryCall_EchoMetadata()
         {
-- 
GitLab


From 230c93279f753164db49e46db7204a1b8408ee09 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 09:40:18 -0700
Subject: [PATCH 311/525] fixup

---
 src/csharp/Grpc.Core.Tests/ClientServerTest.cs | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
index d4a41f293e..d92addbf54 100644
--- a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
@@ -248,7 +248,6 @@ namespace Grpc.Core.Tests
 
             helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
             {
-                
                 handlerStartedBarrier.SetResult(null);
 
                 // wait for cancellation to be delivered.
-- 
GitLab


From 19abba3661c7d39231324eb815fec62d4d3187ea Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date: Tue, 3 May 2016 10:06:29 -0700
Subject: [PATCH 312/525] Improve docs on GRPC_OP_RECV_CLOSE_ON_SERVER

---
 include/grpc/impl/codegen/grpc_types.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h
index 4c7373006b..fa287d5238 100644
--- a/include/grpc/impl/codegen/grpc_types.h
+++ b/include/grpc/impl/codegen/grpc_types.h
@@ -307,7 +307,9 @@ typedef enum {
   GRPC_OP_RECV_STATUS_ON_CLIENT,
   /** Receive close on the server: one and only one must be made on the
       server.
-      This op completes after the close has been received by the server. */
+      This op completes after the close has been received by the server. 
+      This operation always succeeds, meaning ops paired with this operation
+      will also appear to succeed, even though they may not have. */
   GRPC_OP_RECV_CLOSE_ON_SERVER
 } grpc_op_type;
 
-- 
GitLab


From 8a1d8052eb8629643333ca4449180e27f65aa8dc Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Tue, 3 May 2016 10:44:56 -0700
Subject: [PATCH 313/525] Added bad_client test to check that the server
 rejects requests with too much metadata and refuses to send responses with
 too much metadata.

---
 Makefile                                      |  24 +
 include/grpc/impl/codegen/slice_buffer.h      |   5 +-
 .../chttp2/transport/chttp2_transport.c       |  24 +-
 .../chttp2/transport/frame_rst_stream.c       |   5 +
 .../ext/transport/chttp2/transport/internal.h |  15 +-
 .../ext/transport/chttp2/transport/parsing.c  |  30 +-
 test/core/bad_client/bad_client.c             |  41 +-
 test/core/bad_client/bad_client.h             |  18 +-
 test/core/bad_client/gen_build_yaml.py        |   3 +-
 test/core/bad_client/tests/badreq.c           |  10 +-
 .../core/bad_client/tests/connection_prefix.c |  49 +-
 test/core/bad_client/tests/headers.c          | 120 ++---
 .../bad_client/tests/initial_settings_frame.c |  54 +-
 test/core/bad_client/tests/large_metadata.c   | 478 ++++++++++++++++++
 .../bad_client/tests/large_metadata.headers   | 106 ++++
 .../tests/server_registered_method.c          |  22 +-
 test/core/bad_client/tests/simple_request.c   |  24 +-
 test/core/bad_client/tests/unknown_frame.c    |   2 +-
 tools/codegen/core/gen_header_frame.py        |   7 +-
 tools/run_tests/sources_and_headers.json      |  17 +
 tools/run_tests/tests.json                    |  21 +
 vsprojects/buildtests_c.sln                   |  28 +
 .../large_metadata_bad_client_test.vcxproj    | 202 ++++++++
 ...e_metadata_bad_client_test.vcxproj.filters |  24 +
 24 files changed, 1145 insertions(+), 184 deletions(-)
 create mode 100644 test/core/bad_client/tests/large_metadata.c
 create mode 100644 test/core/bad_client/tests/large_metadata.headers
 create mode 100644 vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj
 create mode 100644 vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters

diff --git a/Makefile b/Makefile
index 922e0b0568..e85a5266fe 100644
--- a/Makefile
+++ b/Makefile
@@ -1089,6 +1089,7 @@ connection_prefix_bad_client_test: $(BINDIR)/$(CONFIG)/connection_prefix_bad_cli
 head_of_line_blocking_bad_client_test: $(BINDIR)/$(CONFIG)/head_of_line_blocking_bad_client_test
 headers_bad_client_test: $(BINDIR)/$(CONFIG)/headers_bad_client_test
 initial_settings_frame_bad_client_test: $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test
+large_metadata_bad_client_test: $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test
 server_registered_method_bad_client_test: $(BINDIR)/$(CONFIG)/server_registered_method_bad_client_test
 simple_request_bad_client_test: $(BINDIR)/$(CONFIG)/simple_request_bad_client_test
 unknown_frame_bad_client_test: $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test
@@ -1318,6 +1319,7 @@ buildtests_c: privatelibs_c \
   $(BINDIR)/$(CONFIG)/head_of_line_blocking_bad_client_test \
   $(BINDIR)/$(CONFIG)/headers_bad_client_test \
   $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test \
+  $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test \
   $(BINDIR)/$(CONFIG)/server_registered_method_bad_client_test \
   $(BINDIR)/$(CONFIG)/simple_request_bad_client_test \
   $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test \
@@ -1656,6 +1658,8 @@ test_c: buildtests_c
 	$(Q) $(BINDIR)/$(CONFIG)/headers_bad_client_test || ( echo test headers_bad_client_test failed ; exit 1 )
 	$(E) "[RUN]     Testing initial_settings_frame_bad_client_test"
 	$(Q) $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test || ( echo test initial_settings_frame_bad_client_test failed ; exit 1 )
+	$(E) "[RUN]     Testing large_metadata_bad_client_test"
+	$(Q) $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test || ( echo test large_metadata_bad_client_test failed ; exit 1 )
 	$(E) "[RUN]     Testing server_registered_method_bad_client_test"
 	$(Q) $(BINDIR)/$(CONFIG)/server_registered_method_bad_client_test || ( echo test server_registered_method_bad_client_test failed ; exit 1 )
 	$(E) "[RUN]     Testing simple_request_bad_client_test"
@@ -13100,6 +13104,26 @@ ifneq ($(NO_DEPS),true)
 endif
 
 
+LARGE_METADATA_BAD_CLIENT_TEST_SRC = \
+    test/core/bad_client/tests/large_metadata.c \
+
+LARGE_METADATA_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LARGE_METADATA_BAD_CLIENT_TEST_SRC))))
+
+
+$(BINDIR)/$(CONFIG)/large_metadata_bad_client_test: $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LD) $(LDFLAGS) $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) -o $(BINDIR)/$(CONFIG)/large_metadata_bad_client_test
+
+$(OBJDIR)/$(CONFIG)/test/core/bad_client/tests/large_metadata.o:  $(LIBDIR)/$(CONFIG)/libbad_client_test.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_large_metadata_bad_client_test: $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_DEPS),true)
+-include $(LARGE_METADATA_BAD_CLIENT_TEST_OBJS:.o=.dep)
+endif
+
+
 SERVER_REGISTERED_METHOD_BAD_CLIENT_TEST_SRC = \
     test/core/bad_client/tests/server_registered_method.c \
 
diff --git a/include/grpc/impl/codegen/slice_buffer.h b/include/grpc/impl/codegen/slice_buffer.h
index 8ca51baa47..7858021600 100644
--- a/include/grpc/impl/codegen/slice_buffer.h
+++ b/include/grpc/impl/codegen/slice_buffer.h
@@ -42,9 +42,8 @@ extern "C" {
 
 #define GRPC_SLICE_BUFFER_INLINE_ELEMENTS 8
 
-/* Represents an expandable array of slices, to be interpreted as a single item
-   TODO(ctiller): inline some small number of elements into the struct, to
-                  avoid per-call allocations */
+/* Represents an expandable array of slices, to be interpreted as a
+   single item. */
 typedef struct {
   /* slices in the array */
   gpr_slice *slices;
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 6ee5e0680c..221c7c8050 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -522,7 +522,7 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
                           [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
     *t->accepting_stream = s;
     grpc_chttp2_stream_map_add(&t->parsing_stream_map, s->global.id, s);
-    s->global.in_stream_map = 1;
+    s->global.in_stream_map = true;
   }
 
   grpc_chttp2_run_with_global_lock(exec_ctx, t, s, finish_init_stream_locked,
@@ -838,7 +838,7 @@ static void maybe_start_some_streams(
     grpc_chttp2_stream_map_add(
         &TRANSPORT_FROM_GLOBAL(transport_global)->new_stream_map,
         stream_global->id, STREAM_FROM_GLOBAL(stream_global));
-    stream_global->in_stream_map = 1;
+    stream_global->in_stream_map = true;
     transport_global->concurrent_stream_count++;
     grpc_chttp2_become_writable(transport_global, stream_global);
   }
@@ -944,8 +944,8 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
                                   [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
     if (metadata_size > metadata_peer_limit) {
       gpr_log(GPR_DEBUG,
-              "initial metadata size exceeds peer limit (%lu vs. %lu)",
-              metadata_size, metadata_peer_limit);
+              "to-be-sent initial metadata size exceeds peer limit "
+              "(%lu vs. %lu)", metadata_size, metadata_peer_limit);
       cancel_from_api(exec_ctx, transport_global, stream_global,
                       GRPC_STATUS_RESOURCE_EXHAUSTED);
     } else {
@@ -998,8 +998,8 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
                                   [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
     if (metadata_size > metadata_peer_limit) {
       gpr_log(GPR_DEBUG,
-              "trailing metadata size exceeds peer limit (%lu vs. %lu)",
-              metadata_size, metadata_peer_limit);
+              "to-be-sent trailing metadata size exceeds peer limit "
+              "(%lu vs. %lu)", metadata_size, metadata_peer_limit);
       cancel_from_api(exec_ctx, transport_global, stream_global,
                       GRPC_STATUS_RESOURCE_EXHAUSTED);
     } else {
@@ -1259,7 +1259,7 @@ static void remove_stream(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
     s = grpc_chttp2_stream_map_delete(&t->new_stream_map, id);
   }
   GPR_ASSERT(s);
-  s->global.in_stream_map = 0;
+  s->global.in_stream_map = false;
   if (t->parsing.incoming_stream == &s->parsing) {
     t->parsing.incoming_stream = NULL;
     grpc_chttp2_parsing_become_skip_parser(exec_ctx, &t->parsing);
@@ -1339,7 +1339,7 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx,
               GRPC_MDSTR_GRPC_MESSAGE,
               grpc_mdstr_from_slice(gpr_slice_ref(*slice))));
     }
-    stream_global->published_trailing_metadata = 1;
+    stream_global->published_trailing_metadata = true;
     grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
   }
   if (slice) {
@@ -1369,13 +1369,13 @@ void grpc_chttp2_mark_stream_closed(
   }
   grpc_chttp2_list_add_check_read_ops(transport_global, stream_global);
   if (close_reads && !stream_global->read_closed) {
-    stream_global->read_closed = 1;
-    stream_global->published_initial_metadata = 1;
-    stream_global->published_trailing_metadata = 1;
+    stream_global->read_closed = true;
+    stream_global->published_initial_metadata = true;
+    stream_global->published_trailing_metadata = true;
     decrement_active_streams_locked(exec_ctx, transport_global, stream_global);
   }
   if (close_writes && !stream_global->write_closed) {
-    stream_global->write_closed = 1;
+    stream_global->write_closed = true;
     if (TRANSPORT_FROM_GLOBAL(transport_global)->executor.writing_active) {
       GRPC_CHTTP2_STREAM_REF(stream_global, "finish_writes");
       grpc_chttp2_list_add_closed_waiting_for_writing(transport_global,
diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
index 22467e9ddd..7f01105e3e 100644
--- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
+++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
@@ -45,15 +45,20 @@ gpr_slice grpc_chttp2_rst_stream_create(uint32_t id, uint32_t code,
   stats->framing_bytes += frame_size;
   uint8_t *p = GPR_SLICE_START_PTR(slice);
 
+  // Frame size.
   *p++ = 0;
   *p++ = 0;
   *p++ = 4;
+  // Frame type.
   *p++ = GRPC_CHTTP2_FRAME_RST_STREAM;
+  // Flags.
   *p++ = 0;
+  // Stream ID.
   *p++ = (uint8_t)(id >> 24);
   *p++ = (uint8_t)(id >> 16);
   *p++ = (uint8_t)(id >> 8);
   *p++ = (uint8_t)(id);
+  // Error code.
   *p++ = (uint8_t)(code >> 24);
   *p++ = (uint8_t)(code >> 16);
   *p++ = (uint8_t)(code >> 8);
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index d8f17a30fc..2f3714b2bb 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -419,24 +419,21 @@ typedef struct {
   /** number of streams that are currently being read */
   gpr_refcount active_streams;
 
-  /** when the application requests writes be closed, the write_closed is
-      'queued'; when the close is flow controlled into the send path, we are
-      'sending' it; when the write has been performed it is 'sent' */
+  /** Is this stream closed for writing. */
   bool write_closed;
-  /** is this stream reading half-closed (boolean) */
+  /** Is this stream reading half-closed. */
   bool read_closed;
-  /** are all published incoming byte streams closed */
+  /** Are all published incoming byte streams closed. */
   bool all_incoming_byte_streams_finished;
-  /** is this stream in the stream map? (boolean) */
+  /** Is this stream in the stream map. */
   bool in_stream_map;
-  /** has this stream seen an error? if 1, then pending incoming frames
-      can be thrown away */
+  /** Has this stream seen an error.
+      If true, then pending incoming frames can be thrown away. */
   bool seen_error;
   bool exceeded_metadata_size;
 
   bool published_initial_metadata;
   bool published_trailing_metadata;
-  bool faked_trailing_metadata;
 
   grpc_chttp2_incoming_metadata_buffer received_initial_metadata;
   grpc_chttp2_incoming_metadata_buffer received_trailing_metadata;
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index f101873337..29c26fb3bc 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -634,10 +634,17 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
                             GRPC_MDELEM_LENGTH(md);
     grpc_chttp2_transport_global *transport_global =
         &TRANSPORT_FROM_PARSING(transport_parsing)->global;
-    if (new_size > transport_global->settings
-            [GRPC_LOCAL_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE]) {
-      stream_parsing->seen_error = true;
-      stream_parsing->exceeded_metadata_size = true;
+    const size_t metadata_size_limit =
+        transport_global->settings[GRPC_LOCAL_SETTINGS]
+                                  [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+    if (new_size > metadata_size_limit) {
+      if (!stream_parsing->exceeded_metadata_size) {
+        gpr_log(GPR_DEBUG,
+                "received initial metadata size exceeds limit (%lu vs. %lu)",
+                new_size, metadata_size_limit);
+        stream_parsing->seen_error = true;
+        stream_parsing->exceeded_metadata_size = true;
+      }
       GRPC_MDELEM_UNREF(md);
     } else {
       grpc_chttp2_incoming_metadata_buffer_add(
@@ -673,10 +680,17 @@ static void on_trailing_header(void *tp, grpc_mdelem *md) {
                           GRPC_MDELEM_LENGTH(md);
   grpc_chttp2_transport_global *transport_global =
       &TRANSPORT_FROM_PARSING(transport_parsing)->global;
-  if (new_size > transport_global->settings
-          [GRPC_LOCAL_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE]) {
-    stream_parsing->seen_error = true;
-    stream_parsing->exceeded_metadata_size = true;
+  const size_t metadata_size_limit =
+      transport_global->settings[GRPC_LOCAL_SETTINGS]
+                                [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
+  if (new_size > metadata_size_limit) {
+    if (!stream_parsing->exceeded_metadata_size) {
+      gpr_log(GPR_DEBUG,
+              "received trailing metadata size exceeds limit (%lu vs. %lu)",
+              new_size, metadata_size_limit);
+      stream_parsing->seen_error = true;
+      stream_parsing->exceeded_metadata_size = true;
+    }
     GRPC_MDELEM_UNREF(md);
   } else {
     grpc_chttp2_incoming_metadata_buffer_add(
diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.c
index cd5b541249..aa9125dc7a 100644
--- a/test/core/bad_client/bad_client.c
+++ b/test/core/bad_client/bad_client.c
@@ -75,9 +75,23 @@ static void server_setup_transport(void *ts, grpc_transport *transport) {
   grpc_exec_ctx_finish(&exec_ctx);
 }
 
-void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
-                              const char *client_payload,
-                              size_t client_payload_length, uint32_t flags) {
+typedef struct {
+  grpc_bad_client_client_stream_validator validator;
+  gpr_slice_buffer incoming;
+  gpr_event read_done;
+} read_args;
+
+static void read_done(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
+  read_args *a = arg;
+  a->validator(&a->incoming);
+  gpr_event_set(&a->read_done, (void *)1);
+}
+
+void grpc_run_bad_client_test(
+    grpc_bad_client_server_side_validator server_validator,
+    grpc_bad_client_client_stream_validator client_validator,
+    const char *client_payload,
+    size_t client_payload_length, uint32_t flags) {
   grpc_endpoint_pair sfd;
   thd_args a;
   gpr_thd_id id;
@@ -108,7 +122,7 @@ void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
   a.cq = grpc_completion_queue_create(NULL);
   gpr_event_init(&a.done_thd);
   gpr_event_init(&a.done_write);
-  a.validator = validator;
+  a.validator = server_validator;
   grpc_server_register_completion_queue(a.server, a.cq, NULL);
   a.registered_method =
       grpc_server_register_method(a.server, GRPC_BAD_CLIENT_REGISTERED_METHOD,
@@ -151,8 +165,23 @@ void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
 
   GPR_ASSERT(gpr_event_wait(&a.done_thd, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)));
 
-  /* Shutdown */
-  if (sfd.client) {
+  if (sfd.client != NULL) {
+    // Validate client stream, if requested.
+    if (client_validator != NULL) {
+      read_args args;
+      args.validator = client_validator;
+      gpr_slice_buffer_init(&args.incoming);
+      gpr_event_init(&args.read_done);
+      grpc_closure read_done_closure;
+      grpc_closure_init(&read_done_closure, read_done, &args);
+      grpc_endpoint_read(&exec_ctx, sfd.client, &args.incoming,
+                         &read_done_closure);
+      grpc_exec_ctx_finish(&exec_ctx);
+      GPR_ASSERT(gpr_event_wait(&args.read_done,
+                                GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)));
+      gpr_slice_buffer_destroy(&args.incoming);
+    }
+    // Shutdown.
     grpc_endpoint_shutdown(&exec_ctx, sfd.client);
     grpc_endpoint_destroy(&exec_ctx, sfd.client);
     grpc_exec_ctx_finish(&exec_ctx);
diff --git a/test/core/bad_client/bad_client.h b/test/core/bad_client/bad_client.h
index 19ddba83bf..b6e8a6dd5b 100644
--- a/test/core/bad_client/bad_client.h
+++ b/test/core/bad_client/bad_client.h
@@ -44,18 +44,24 @@ typedef void (*grpc_bad_client_server_side_validator)(grpc_server *server,
                                                       grpc_completion_queue *cq,
                                                       void *registered_method);
 
+typedef void (*grpc_bad_client_client_stream_validator)(
+    gpr_slice_buffer *incoming);
+
 #define GRPC_BAD_CLIENT_DISCONNECT 1
 
 /* Test runner.
 
    Create a server, and send client_payload to it as bytes from a client.
-   Execute validator in a separate thread to assert that the bytes are
+   Execute server_validator in a separate thread to assert that the bytes are
    handled as expected. */
-void grpc_run_bad_client_test(grpc_bad_client_server_side_validator validator,
-                              const char *client_payload,
-                              size_t client_payload_length, uint32_t flags);
+void grpc_run_bad_client_test(
+    grpc_bad_client_server_side_validator server_validator,
+    grpc_bad_client_client_stream_validator client_validator,
+    const char *client_payload, size_t client_payload_length, uint32_t flags);
 
-#define GRPC_RUN_BAD_CLIENT_TEST(validator, payload, flags) \
-  grpc_run_bad_client_test(validator, payload, sizeof(payload) - 1, flags)
+#define GRPC_RUN_BAD_CLIENT_TEST(server_validator, client_validator, \
+                                 payload, flags) \
+  grpc_run_bad_client_test(server_validator, client_validator, \
+                           payload, sizeof(payload) - 1, flags)
 
 #endif /* GRPC_TEST_CORE_BAD_CLIENT_BAD_CLIENT_H */
diff --git a/test/core/bad_client/gen_build_yaml.py b/test/core/bad_client/gen_build_yaml.py
index d49858ed6d..fb86525b1a 100755
--- a/test/core/bad_client/gen_build_yaml.py
+++ b/test/core/bad_client/gen_build_yaml.py
@@ -29,7 +29,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-"""Generates the appropriate build.json data for all the end2end tests."""
+"""Generates the appropriate build.json data for all the bad_client tests."""
 
 
 import collections
@@ -45,6 +45,7 @@ BAD_CLIENT_TESTS = {
     'headers': default_test_options._replace(cpu_cost=0.2),
     'initial_settings_frame': default_test_options._replace(cpu_cost=0.2),
     'head_of_line_blocking': default_test_options,
+    'large_metadata': default_test_options,
     'server_registered_method': default_test_options,
     'simple_request': default_test_options,
     'window_overflow': default_test_options,
diff --git a/test/core/bad_client/tests/badreq.c b/test/core/bad_client/tests/badreq.c
index b17e3b35ee..5d9ffef3f2 100644
--- a/test/core/bad_client/tests/badreq.c
+++ b/test/core/bad_client/tests/badreq.c
@@ -56,7 +56,7 @@ int main(int argc, char **argv) {
 
   /* invalid content type */
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier, PFX_STR
+      verifier, NULL, PFX_STR
       "\x00\x00\xc2\x01\x04\x00\x00\x00\x01"
       "\x10\x05:path\x08/foo/bar"
       "\x10\x07:scheme\x04http"
@@ -71,7 +71,7 @@ int main(int argc, char **argv) {
 
   /* invalid te */
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier, PFX_STR
+      verifier, NULL, PFX_STR
       "\x00\x00\xcb\x01\x04\x00\x00\x00\x01"
       "\x10\x05:path\x08/foo/bar"
       "\x10\x07:scheme\x04http"
@@ -88,7 +88,7 @@ int main(int argc, char **argv) {
 
   /* two path headers */
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier, PFX_STR
+      verifier, NULL, PFX_STR
       "\x00\x00\xd9\x01\x04\x00\x00\x00\x01"
       "\x10\x05:path\x08/foo/bar"
       "\x10\x05:path\x08/foo/bah"
@@ -105,7 +105,7 @@ int main(int argc, char **argv) {
 
   /* bad accept-encoding algorithm */
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier, PFX_STR
+      verifier, NULL, PFX_STR
       "\x00\x00\xd2\x01\x04\x00\x00\x00\x01"
       "\x10\x05:path\x08/foo/bar"
       "\x10\x07:scheme\x04http"
@@ -121,7 +121,7 @@ int main(int argc, char **argv) {
 
   /* bad grpc-encoding algorithm */
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier, PFX_STR
+      verifier, NULL, PFX_STR
       "\x00\x00\xf5\x01\x04\x00\x00\x00\x01"
       "\x10\x05:path\x08/foo/bar"
       "\x10\x07:scheme\x04http"
diff --git a/test/core/bad_client/tests/connection_prefix.c b/test/core/bad_client/tests/connection_prefix.c
index 9a30aad0e9..bc5ed2e393 100644
--- a/test/core/bad_client/tests/connection_prefix.c
+++ b/test/core/bad_client/tests/connection_prefix.c
@@ -46,29 +46,30 @@ static void verifier(grpc_server *server, grpc_completion_queue *cq,
 int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
 
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRIX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI *X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTPX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0X", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\rX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\nX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\rX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSMX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSM\rX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSM\r\nX", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, "PRI * HTTP/2.0\r\n\r\nSM\r\n\rX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRIX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI *X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTPX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0X", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\rX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\nX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\rX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSMX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSM\rX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSM\r\nX", 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, "PRI * HTTP/2.0\r\n\r\nSM\r\n\rX",
+                           0);
   return 0;
 }
diff --git a/test/core/bad_client/tests/headers.c b/test/core/bad_client/tests/headers.c
index 4c1a76743e..f872e5006a 100644
--- a/test/core/bad_client/tests/headers.c
+++ b/test/core/bad_client/tests/headers.c
@@ -51,249 +51,251 @@ int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
 
   /* partial http2 header prefixes */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x04",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x05",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x05",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x01\x04\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+                           PFX_STR "\x00\x00\x00\x01\x04\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+                           PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x01\x04\x00\x00\x00\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
 
   /* test adding prioritization data */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x01\x01\x24\x00\x00\x00\x01"
                            "\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x02\x01\x24\x00\x00\x00\x01"
                            "\x00\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x03\x01\x24\x00\x00\x00\x01"
                            "\x00\x00\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x04\x01\x24\x00\x00\x00\x01"
                            "\x00\x00\x00\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x01\x24\x00\x00\x00\x01"
                            "",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x01\x24\x00\x00\x00\x01"
                            "\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x01\x24\x00\x00\x00\x01"
                            "\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x01\x24\x00\x00\x00\x01"
                            "\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x01\x24\x00\x00\x00\x01"
                            "\x00\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x01\x24\x00\x00\x00\x01"
                            "\x00\x00\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
 
   /* test looking up an invalid index */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x01\x01\x04\x00\x00\x00\x01"
                            "\xfe",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x04\x01\x04\x00\x00\x00\x01"
                            "\x7f\x7f\x01"
                            "a",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x04\x01\x04\x00\x00\x00\x01"
                            "\x0f\x7f\x01"
                            "a",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x04\x01\x04\x00\x00\x00\x01"
                            "\x1f\x7f\x01"
                            "a",
                            0);
   /* test nvr, not indexed in static table */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x03\x01\x04\x00\x00\x00\x01"
                            "\x01\x01"
                            "a",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x03\x01\x04\x00\x00\x00\x01"
                            "\x11\x01"
                            "a",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* illegal op code */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x01\x01\x04\x00\x00\x00\x01"
                            "\x80",
                            0);
   /* parse some long indices */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x02\x01\x04\x00\x00\x00\x01"
                            "\xff\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x03\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x04\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x06\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x07\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80\x80\x00",
                            0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80\x80",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80\x80\x80",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80\x80\x80\x00",
                            0);
   /* overflow on byte 4 */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x06\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80\x7f",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x06\x01\x04\x00\x00\x00\x01"
                            "\xff\xff\xff\xff\xff\x0f",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* overflow after byte 4 */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x08\x01\x04\x00\x00\x00\x01"
                            "\xff\x80\x80\x80\x80\x80\x80\x02",
                            0);
   /* end of headers mid-opcode */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x01\x01\x04\x00\x00\x00\x01"
                            "\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
 
   /* dynamic table size update: set to default */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x03\x01\x04\x00\x00\x00\x01"
                            "\x3f\xe1\x1f",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* dynamic table size update: set too large */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x03\x01\x04\x00\x00\x00\x01"
                            "\x3f\xf1\x1f",
                            0);
   /* dynamic table size update: set twice */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x04\x01\x04\x00\x00\x00\x01"
                            "\x20\x3f\xe1\x1f",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* dynamic table size update: set thrice */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x03\x01\x04\x00\x00\x00\x01"
                            "\x20\x20\x20",
                            0);
 
   /* non-ending header followed by continuation frame */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x00\x01\x00\x00\x00\x00\x01"
                            "\x00\x00\x00\x09\x04\x00\x00\x00\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* non-ending header followed by non-continuation frame */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x00\x01\x00\x00\x00\x00\x01"
                            "\x00\x00\x00\x00\x04\x00\x00\x00\x01",
                            0);
   /* non-ending header followed by a continuation frame for a different stream
    */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x00\x01\x04\x00\x00\x00\x01"
                            "\x00\x00\x00\x01\x00\x00\x00\x00\x03"
                            "\x00\x00\x00\x09\x04\x00\x00\x00\x01",
                            0);
   /* opening with a continuation frame */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x09\x04\x00\x00\x00\x01", 0);
   /* three header frames */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x00\x01\x04\x00\x00\x00\x01"
                            "\x00\x00\x00\x01\x04\x00\x00\x00\x01"
                            "\x00\x00\x00\x01\x04\x00\x00\x00\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
 
   /* an invalid header found with fuzzing */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x01\x39\x67\xed\x1d\x64",
                            GRPC_BAD_CLIENT_DISCONNECT);
 
   /* a badly encoded timeout value */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x19\x01\x04\x00\x00\x00\x01"
                            "\x10\x0cgrpc-timeout\x0a"
                            "15 seconds",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* a badly encoded timeout value: twice (catches caching) */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x19\x01\x04\x00\x00\x00\x01"
                            "\x10\x0cgrpc-timeout\x0a"
                            "15 seconds"
diff --git a/test/core/bad_client/tests/initial_settings_frame.c b/test/core/bad_client/tests/initial_settings_frame.c
index 63a770df91..b84b67a7e5 100644
--- a/test/core/bad_client/tests/initial_settings_frame.c
+++ b/test/core/bad_client/tests/initial_settings_frame.c
@@ -50,70 +50,72 @@ int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
 
   /* various partial prefixes */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x06",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x06",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x06",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x06",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x06",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x06",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x01",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\xff",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\xff",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR "\x00\x00\x00\x04\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+                           PFX_STR "\x00\x00\x00\x04\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00",
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
+                           PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* must not send frames with stream id != 0 */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x04\x00\x00\x00\x00\x01", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x04\x00\x40\x00\x00\x00", 0);
   /* settings frame must be a multiple of six bytes long */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x01\x04\x00\x00\x00\x00\x00", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x02\x04\x00\x00\x00\x00\x00", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x03\x04\x00\x00\x00\x00\x00", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x04\x04\x00\x00\x00\x00\x00", 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x05\x04\x00\x00\x00\x00\x00", 0);
   /* some settings values are illegal */
   /* max frame size = 0 */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR ONE_SETTING_HDR "\x00\x05\x00\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR ONE_SETTING_HDR "\x00\x06\xff\xff\xff\xff",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* update intiial window size */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR ONE_SETTING_HDR "\x00\x04\x00\x01\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* ack with data */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x00\x04\x00\x00\x00\x00\x00"
                            "\x00\x00\x01\x04\x01\x00\x00\x00\x00",
                            0);
   /* settings frame with invalid flags */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x04\x10\x00\x00\x00\x00", 0);
   /* unknown settings should be ignored */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR ONE_SETTING_HDR "\x00\x99\x00\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
 
diff --git a/test/core/bad_client/tests/large_metadata.c b/test/core/bad_client/tests/large_metadata.c
new file mode 100644
index 0000000000..95932205cf
--- /dev/null
+++ b/test/core/bad_client/tests/large_metadata.c
@@ -0,0 +1,478 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "test/core/bad_client/bad_client.h"
+
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include "src/core/lib/surface/server.h"
+#include "test/core/end2end/cq_verifier.h"
+
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_STR                              \
+  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"                                       \
+  /* settings frame */                                                     \
+  "\x00\x00\x00\x04\x00\x00\x00\x00\x00"                                   \
+  /* headers: generated from large_metadata.headers in this directory */   \
+  "\x00""5{\x01\x05\x00\x00\x00\x01"                                       \
+  "\x10\x05:path\x08/foo/bar"                                              \
+  "\x10\x07:scheme\x04http"                                                \
+  "\x10\x07:method\x04POST"                                                \
+  "\x10\x0a:authority\x09localhost"                                        \
+  "\x10\x0c""content-type\x10""application/grpc"                           \
+  "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip"                  \
+  "\x10\x02te\x08trailers"                                                 \
+  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"                 \
+  "\x10\x0duser-header00~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header01~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header02~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header03~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header04~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header05~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header06~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header07~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header08~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header09~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header10~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header11~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header12~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header13~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header14~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header15~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header16~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header17~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header18~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header19~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header20~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header21~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header22~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header23~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header24~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header25~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header26~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header27~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header28~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header29~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header30~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header31~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header32~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header33~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header34~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header35~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header36~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header37~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header38~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header39~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header40~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header41~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header42~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header43~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header44~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header45~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header46~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header47~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header48~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header49~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header50~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header51~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header52~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header53~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header54~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header55~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header56~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header57~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header58~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header59~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header60~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header61~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header62~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header63~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header64~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header65~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header66~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header67~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header68~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header69~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header70~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header71~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header72~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header73~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header74~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header75~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header76~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header77~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header78~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header79~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header80~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header81~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header82~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header83~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header84~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header85~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header86~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header87~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header88~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header89~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header90~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header91~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header92~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header93~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"                                                               \
+  "\x10\x0duser-header94~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaa"
+
+#define PFX_TOO_MUCH_METADATA_FROM_SERVER_STR                              \
+  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"                                       \
+  /* settings frame: sets MAX_HEADER_LIST_SIZE to 16K */                   \
+  "\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x40\x00"           \
+  /* headers: generated from simple_request.headers in this directory */   \
+  "\x00\x00\xc9\x01\x04\x00\x00\x00\x01"                                   \
+  "\x10\x05:path\x08/foo/bar"                                              \
+  "\x10\x07:scheme\x04http"                                                \
+  "\x10\x07:method\x04POST"                                                \
+  "\x10\x0a:authority\x09localhost"                                        \
+  "\x10\x0c"                                                               \
+  "content-type\x10"                                                       \
+  "application/grpc"                                                       \
+  "\x10\x14grpc-accept-encoding\x15"                                       \
+  "deflate,identity,gzip"                                                  \
+  "\x10\x02te\x08trailers"                                                 \
+  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"
+
+static void *tag(intptr_t t) { return (void *)t; }
+
+static void server_verifier(grpc_server *server, grpc_completion_queue *cq,
+                            void *registered_method) {
+  grpc_call_error error;
+  grpc_call *s;
+  grpc_call_details call_details;
+  cq_verifier *cqv = cq_verifier_create(cq);
+  grpc_metadata_array request_metadata_recv;
+
+  grpc_call_details_init(&call_details);
+  grpc_metadata_array_init(&request_metadata_recv);
+
+  error = grpc_server_request_call(server, &s, &call_details,
+                                   &request_metadata_recv, cq, cq, tag(101));
+  GPR_ASSERT(GRPC_CALL_OK == error);
+  cq_expect_completion(cqv, tag(101), 1);
+  cq_verify(cqv);
+
+  GPR_ASSERT(0 == strcmp(call_details.host, "localhost"));
+  GPR_ASSERT(0 == strcmp(call_details.method, "/foo/bar"));
+
+  grpc_metadata_array_destroy(&request_metadata_recv);
+  grpc_call_details_destroy(&call_details);
+  grpc_call_destroy(s);
+  cq_verifier_destroy(cqv);
+}
+
+static void server_verifier_sends_too_much_metadata(
+    grpc_server *server, grpc_completion_queue *cq, void *registered_method) {
+  grpc_call_error error;
+  grpc_call *s;
+  grpc_call_details call_details;
+  cq_verifier *cqv = cq_verifier_create(cq);
+  grpc_metadata_array request_metadata_recv;
+
+  grpc_call_details_init(&call_details);
+  grpc_metadata_array_init(&request_metadata_recv);
+
+  error = grpc_server_request_call(server, &s, &call_details,
+                                   &request_metadata_recv, cq, cq, tag(101));
+  GPR_ASSERT(GRPC_CALL_OK == error);
+  cq_expect_completion(cqv, tag(101), 1);
+  cq_verify(cqv);
+
+  GPR_ASSERT(0 == strcmp(call_details.host, "localhost"));
+  GPR_ASSERT(0 == strcmp(call_details.method, "/foo/bar"));
+
+  const size_t metadata_value_size = 16 * 1024;
+  grpc_metadata meta;
+  meta.key = "key";
+  meta.value = gpr_malloc(metadata_value_size + 1);
+  memset((char *)meta.value, 'a', metadata_value_size);
+  ((char *)meta.value)[metadata_value_size] = 0;
+  meta.value_length = metadata_value_size;
+
+  grpc_op op;
+  op.op = GRPC_OP_SEND_INITIAL_METADATA;
+  op.data.send_initial_metadata.count = 1;
+  op.data.send_initial_metadata.metadata = &meta;
+  op.flags = 0;
+  op.reserved = NULL;
+  error = grpc_call_start_batch(s, &op, 1, tag(102), NULL);
+  GPR_ASSERT(GRPC_CALL_OK == error);
+  cq_expect_completion(cqv, tag(102), 0);  // Operation fails.
+  cq_verify(cqv);
+
+  grpc_metadata_array_destroy(&request_metadata_recv);
+  grpc_call_details_destroy(&call_details);
+  grpc_call_destroy(s);
+  cq_verifier_destroy(cqv);
+}
+
+static void client_validator(gpr_slice_buffer *incoming) {
+  // Get last frame from incoming slice buffer.
+  gpr_slice_buffer last_frame_buffer;
+  gpr_slice_buffer_init(&last_frame_buffer);
+  gpr_slice_buffer_trim_end(incoming, 13, &last_frame_buffer);
+  GPR_ASSERT(last_frame_buffer.count == 1);
+  gpr_slice last_frame = last_frame_buffer.slices[0];
+  // Construct expected frame.
+  gpr_slice expected = gpr_slice_malloc(13);
+  uint8_t *p = GPR_SLICE_START_PTR(expected);
+  // Length.
+  *p++ = 0;
+  *p++ = 0;
+  *p++ = 4;
+  // Frame type (RST_STREAM).
+  *p++ = 3;
+  // Flags.
+  *p++ = 0;
+  // Stream ID.
+  *p++ = 0;
+  *p++ = 0;
+  *p++ = 0;
+  *p++ = 1;
+  // Payload (error code).
+  *p++ = 0;
+  *p++ = 0;
+  *p++ = 0;
+  *p++ = 11;
+  // Compare actual and expected.
+  GPR_ASSERT(gpr_slice_cmp(last_frame, expected) == 0);
+}
+
+int main(int argc, char **argv) {
+  grpc_test_init(argc, argv);
+
+  // Test sending more metadata than the server will accept.
+  GRPC_RUN_BAD_CLIENT_TEST(server_verifier, client_validator,
+                           PFX_TOO_MUCH_METADATA_FROM_CLIENT_STR, 0);
+
+  // Test sending more metadata than the client will accept.
+  GRPC_RUN_BAD_CLIENT_TEST(server_verifier_sends_too_much_metadata,
+                           client_validator,
+                           PFX_TOO_MUCH_METADATA_FROM_SERVER_STR, 0);
+
+  return 0;
+}
diff --git a/test/core/bad_client/tests/large_metadata.headers b/test/core/bad_client/tests/large_metadata.headers
new file mode 100644
index 0000000000..75de3ef100
--- /dev/null
+++ b/test/core/bad_client/tests/large_metadata.headers
@@ -0,0 +1,106 @@
+# headers used in simple_request.c
+# use tools/codegen/core/gen_header_frame.py --set_end_stream to generate
+# the binary strings contained in the source code
+:path: /foo/bar
+:scheme: http
+:method: POST
+:authority: localhost
+content-type: application/grpc
+grpc-accept-encoding: identity,deflate,gzip
+te: trailers
+user-agent: bad-client grpc-c/0.12.0.0 (linux)
+user-header00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header01: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header02: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header03: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header04: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header05: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header06: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header07: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header08: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header09: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header22: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header23: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header24: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header25: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header26: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header27: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header28: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header29: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header30: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header31: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header32: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header33: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header34: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header35: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header36: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header37: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header39: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header41: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header42: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header43: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header44: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header45: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header46: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header47: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header48: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header49: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header50: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header51: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header52: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header53: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header54: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header55: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header56: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header57: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header58: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header60: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header61: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header62: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header63: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header64: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header65: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header66: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header67: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header68: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header69: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header70: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header71: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header72: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header73: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header74: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header75: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header76: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header77: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header79: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header81: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header82: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header83: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header84: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header85: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header86: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header87: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header88: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header89: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header90: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header91: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header92: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header93: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+user-header94: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/test/core/bad_client/tests/server_registered_method.c b/test/core/bad_client/tests/server_registered_method.c
index 60d3b890b2..6216553a61 100644
--- a/test/core/bad_client/tests/server_registered_method.c
+++ b/test/core/bad_client/tests/server_registered_method.c
@@ -111,43 +111,43 @@ int main(int argc, char **argv) {
 
   /* body generated with
    * tools/codegen/core/gen_server_registered_method_bad_client_test_body.py */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL,
                            PFX_STR "\x00\x00\x00\x00\x00\x00\x00\x00\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL,
                            PFX_STR "\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL, PFX_STR
                            "\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier_fails, NULL, PFX_STR
                            "\x00\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier_fails,
+      verifier_fails, NULL,
       PFX_STR "\x00\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00",
       GRPC_BAD_CLIENT_DISCONNECT);
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier_succeeds,
+      verifier_succeeds, NULL,
       PFX_STR "\x00\x00\x05\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00", 0);
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier_fails,
+      verifier_fails, NULL,
       PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01",
       GRPC_BAD_CLIENT_DISCONNECT);
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier_succeeds,
+      verifier_succeeds, NULL,
       PFX_STR "\x00\x00\x06\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00",
       0);
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier_fails,
+      verifier_fails, NULL,
       PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02",
       GRPC_BAD_CLIENT_DISCONNECT);
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier_fails,
+      verifier_fails, NULL,
       PFX_STR "\x00\x00\x06\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00",
       GRPC_BAD_CLIENT_DISCONNECT);
   GRPC_RUN_BAD_CLIENT_TEST(
-      verifier_succeeds, PFX_STR
+      verifier_succeeds, NULL, PFX_STR
       "\x00\x00\x07\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00",
       0);
 
diff --git a/test/core/bad_client/tests/simple_request.c b/test/core/bad_client/tests/simple_request.c
index 3ae6eb3592..25bbe968e4 100644
--- a/test/core/bad_client/tests/simple_request.c
+++ b/test/core/bad_client/tests/simple_request.c
@@ -139,42 +139,42 @@ int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
 
   /* basic request: check that things are working */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR, 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR_UNUSUAL, 0);
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR_UNUSUAL2, 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR, 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR_UNUSUAL, 0);
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR_UNUSUAL2, 0);
 
   /* push an illegal data frame */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL, PFX_STR
                            "\x00\x00\x05\x00\x00\x00\x00\x00\x01"
                            "\x34\x00\x00\x00\x00",
                            0);
 
   /* push a data frame with bad flags */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x00\x02\x00\x00\x00\x01", 0);
   /* push a window update with a bad length */
-  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
                            PFX_STR "\x00\x00\x01\x08\x00\x00\x00\x00\x01", 0);
   /* push a window update with bad flags */
-  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
                            PFX_STR "\x00\x00\x00\x08\x10\x00\x00\x00\x01", 0);
   /* push a window update with bad data */
-  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, PFX_STR
+  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL, PFX_STR
                            "\x00\x00\x04\x08\x00\x00\x00\x00\x01"
                            "\xff\xff\xff\xff",
                            0);
   /* push a short goaway */
-  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
                            PFX_STR "\x00\x00\x04\x07\x00\x00\x00\x00\x00", 0);
   /* disconnect before sending goaway */
-  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
                            PFX_STR "\x00\x01\x12\x07\x00\x00\x00\x00\x00",
                            GRPC_BAD_CLIENT_DISCONNECT);
   /* push a rst_stream with a bad length */
-  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
                            PFX_STR "\x00\x00\x01\x03\x00\x00\x00\x00\x01", 0);
   /* push a rst_stream with bad flags */
-  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, NULL,
                            PFX_STR "\x00\x00\x00\x03\x10\x00\x00\x00\x01", 0);
 
   return 0;
diff --git a/test/core/bad_client/tests/unknown_frame.c b/test/core/bad_client/tests/unknown_frame.c
index f3870a1813..4f483d21f2 100644
--- a/test/core/bad_client/tests/unknown_frame.c
+++ b/test/core/bad_client/tests/unknown_frame.c
@@ -51,7 +51,7 @@ int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
 
   /* test adding prioritization data */
-  GRPC_RUN_BAD_CLIENT_TEST(verifier,
+  GRPC_RUN_BAD_CLIENT_TEST(verifier, NULL,
                            PFX_STR "\x00\x00\x00\x88\x00\x00\x00\x00\x01",
                            GRPC_BAD_CLIENT_DISCONNECT);
 
diff --git a/tools/codegen/core/gen_header_frame.py b/tools/codegen/core/gen_header_frame.py
index 96e6c67fa6..ee476267f2 100755
--- a/tools/codegen/core/gen_header_frame.py
+++ b/tools/codegen/core/gen_header_frame.py
@@ -38,6 +38,8 @@
 import json
 import sys
 
+set_end_stream = len(sys.argv) > 1 and sys.argv[1] == '--set_end_stream'
+
 # parse input, fill in vals
 vals = []
 for line in sys.stdin:
@@ -65,6 +67,9 @@ for key, value in vals:
   payload_bytes.append(payload_line)
 
 # fill in header
+flags = 0x04  # END_HEADERS
+if set_end_stream:
+  flags |= 0x01  # END_STREAM
 payload_bytes[0].extend([
     (payload_len >> 16) & 0xff,
     (payload_len >> 8) & 0xff,
@@ -72,7 +77,7 @@ payload_bytes[0].extend([
     # header frame
     0x01,
     # flags
-    0x04,
+    flags,
     # stream id
     0x00,
     0x00,
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index f546f3b995..e20d808fef 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -3387,6 +3387,23 @@
     "third_party": false, 
     "type": "target"
   }, 
+  {
+    "deps": [
+      "bad_client_test", 
+      "gpr", 
+      "gpr_test_util", 
+      "grpc_test_util_unsecure", 
+      "grpc_unsecure"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "large_metadata_bad_client_test", 
+    "src": [
+      "test/core/bad_client/tests/large_metadata.c"
+    ], 
+    "third_party": false, 
+    "type": "target"
+  }, 
   {
     "deps": [
       "bad_client_test", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 0fd77854d2..4a6c137327 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -2713,6 +2713,27 @@
       "windows"
     ]
   }, 
+  {
+    "args": [], 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "cpu_cost": 1.0, 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "gtest": false, 
+    "language": "c", 
+    "name": "large_metadata_bad_client_test", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ]
+  }, 
   {
     "args": [], 
     "ci_platforms": [
diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln
index bdae447545..be8b5d40ac 100644
--- a/vsprojects/buildtests_c.sln
+++ b/vsprojects/buildtests_c.sln
@@ -1095,6 +1095,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "initial_settings_frame_bad_
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
 	EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "large_metadata_bad_client_test", "vcxproj\test\large_metadata_bad_client_test\large_metadata_bad_client_test.vcxproj", "{B706A9EC-7982-0DBC-495D-07B165F6CF56}"
+	ProjectSection(myProperties) = preProject
+        	lib = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{BA67B418-B699-E41A-9CC4-0279C49481A5} = {BA67B418-B699-E41A-9CC4-0279C49481A5}
+		{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF} = {0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}
+		{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+	EndProjectSection
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server_registered_method_bad_client_test", "vcxproj\test\server_registered_method_bad_client_test\server_registered_method_bad_client_test.vcxproj", "{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}"
 	ProjectSection(myProperties) = preProject
         	lib = "False"
@@ -3087,6 +3099,22 @@ Global
 		{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|Win32.Build.0 = Release|Win32
 		{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|x64.ActiveCfg = Release|x64
 		{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|x64.Build.0 = Release|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|x64.ActiveCfg = Debug|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|Win32.ActiveCfg = Release|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|x64.ActiveCfg = Release|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|Win32.Build.0 = Debug|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug|x64.Build.0 = Debug|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|Win32.Build.0 = Release|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release|x64.Build.0 = Release|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|Win32.Build.0 = Debug|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|x64.ActiveCfg = Debug|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Debug-DLL|x64.Build.0 = Debug|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|Win32.ActiveCfg = Release|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|Win32.Build.0 = Release|Win32
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|x64.ActiveCfg = Release|x64
+		{B706A9EC-7982-0DBC-495D-07B165F6CF56}.Release-DLL|x64.Build.0 = Release|x64
 		{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}.Debug|Win32.ActiveCfg = Debug|Win32
 		{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}.Debug|x64.ActiveCfg = Debug|x64
 		{B4E7CD82-988A-BD3A-29F8-8590D3A8BC28}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj
new file mode 100644
index 0000000000..0a14694b75
--- /dev/null
+++ b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B706A9EC-7982-0DBC-495D-07B165F6CF56}</ProjectGuid>
+    <IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
+    <IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+    <PlatformToolset>v100</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
+    <PlatformToolset>v140</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(SolutionDir)\..\vsprojects\global.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\openssl.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
+    <Import Project="$(SolutionDir)\..\vsprojects\zlib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <TargetName>large_metadata_bad_client_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <TargetName>large_metadata_bad_client_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Release</Configuration-grpc_dependencies_zlib>
+    <Linkage-grpc_dependencies_openssl>static</Linkage-grpc_dependencies_openssl>
+    <Configuration-grpc_dependencies_openssl>Release</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+      <MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\test\core\bad_client\tests\large_metadata.c">
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\test/bad_client\bad_client_test\bad_client_test.vcxproj">
+      <Project>{BA67B418-B699-E41A-9CC4-0279C49481A5}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util_unsecure\grpc_test_util_unsecure.vcxproj">
+      <Project>{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
+      <Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  <Import Project="$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  </ImportGroup>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
+    <Error Condition="!Exists('$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
+  </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters
new file mode 100644
index 0000000000..5eb9a5e7cb
--- /dev/null
+++ b/vsprojects/vcxproj/test/large_metadata_bad_client_test/large_metadata_bad_client_test.vcxproj.filters
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\test\core\bad_client\tests\large_metadata.c">
+      <Filter>test\core\bad_client\tests</Filter>
+    </ClCompile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Filter Include="test">
+      <UniqueIdentifier>{6c1eb0cb-9d82-f961-7220-1f6edc913666}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\core">
+      <UniqueIdentifier>{79d5006f-93a1-aa0e-2568-37aa63eef567}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\core\bad_client">
+      <UniqueIdentifier>{dbde5995-24a0-2332-4bee-0540ed3aa848}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\core\bad_client\tests">
+      <UniqueIdentifier>{5cf4a13f-ae24-fd98-eb59-b5301f30367c}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
+
-- 
GitLab


From 38281cfa59097c7006a6514fca791a7b50b7ff8a Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 3 May 2016 10:51:49 -0700
Subject: [PATCH 314/525] Ruby: improve server error handling, fix a reference
 error

---
 src/ruby/lib/grpc/generic/rpc_server.rb | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb
index 7f3a38a9f4..9a2af04947 100644
--- a/src/ruby/lib/grpc/generic/rpc_server.rb
+++ b/src/ruby/lib/grpc/generic/rpc_server.rb
@@ -332,15 +332,13 @@ module GRPC
     # the current thread to terminate it.
     def run_till_terminated
       GRPC.trap_signals
-      stopped = false
       t = Thread.new do
         run
-        stopped = true
       end
+      t.abort_on_exception = true
       wait_till_running
-      loop do
+      until running_state == :stopped
         sleep SIGNAL_CHECK_PERIOD
-        break if stopped
         break unless GRPC.handle_signals
       end
       stop
@@ -416,7 +414,7 @@ module GRPC
       GRPC.logger.warn("NOT AVAILABLE: too many jobs_waiting: #{an_rpc}")
       noop = proc { |x| x }
       c = ActiveCall.new(an_rpc.call, @cq, noop, noop, an_rpc.deadline)
-      c.send_status(StatusCodes::RESOURCE_EXHAUSTED, '')
+      c.send_status(GRPC::Core::StatusCodes::RESOURCE_EXHAUSTED, '')
       nil
     end
 
@@ -427,7 +425,7 @@ module GRPC
       GRPC.logger.warn("UNIMPLEMENTED: #{an_rpc}")
       noop = proc { |x| x }
       c = ActiveCall.new(an_rpc.call, @cq, noop, noop, an_rpc.deadline)
-      c.send_status(StatusCodes::UNIMPLEMENTED, '')
+      c.send_status(GRPC::Core::StatusCodes::UNIMPLEMENTED, '')
       nil
     end
 
@@ -443,7 +441,12 @@ module GRPC
           unless active_call.nil?
             @pool.schedule(active_call) do |ac|
               c, mth = ac
-              rpc_descs[mth].run_server_method(c, rpc_handlers[mth])
+              begin
+                rpc_descs[mth].run_server_method(c, rpc_handlers[mth])
+              rescue StandardError => e
+                c.send_status(code = GRPC::Core::StatusCodes::INTERNAL,
+                              details = "Server handler failed")
+              end
             end
           end
         rescue Core::CallError, RuntimeError => e
-- 
GitLab


From 59dfee880016e74edc9ebcadaf1ea624a4d457be Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 3 May 2016 11:33:25 -0700
Subject: [PATCH 315/525] Fixed rubocop issues with newest changes

---
 src/ruby/.rubocop.yml                   | 4 ++--
 src/ruby/lib/grpc/generic/rpc_server.rb | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/ruby/.rubocop.yml b/src/ruby/.rubocop.yml
index d13ce42655..34bb477543 100644
--- a/src/ruby/.rubocop.yml
+++ b/src/ruby/.rubocop.yml
@@ -11,10 +11,10 @@ AllCops:
     - 'pb/test/**/*'
 
 Metrics/CyclomaticComplexity:
-  Max: 8
+  Max: 9
 
 Metrics/PerceivedComplexity:
-  Max: 8
+  Max: 9
 
 Metrics/ClassLength:
   Max: 250
diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb
index 9a2af04947..a0f4071adc 100644
--- a/src/ruby/lib/grpc/generic/rpc_server.rb
+++ b/src/ruby/lib/grpc/generic/rpc_server.rb
@@ -443,9 +443,9 @@ module GRPC
               c, mth = ac
               begin
                 rpc_descs[mth].run_server_method(c, rpc_handlers[mth])
-              rescue StandardError => e
-                c.send_status(code = GRPC::Core::StatusCodes::INTERNAL,
-                              details = "Server handler failed")
+              rescue StandardError
+                c.send_status(GRPC::Core::StatusCodes::INTERNAL,
+                              'Server handler failed')
               end
             end
           end
-- 
GitLab


From 3b8f3354de5af07ea595713623bcc19cd19d6dfe Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Tue, 3 May 2016 12:18:13 -0700
Subject: [PATCH 316/525] Add plugins at the time of static initialization

---
 include/grpc++/impl/server_builder_plugin.h   | 10 -------
 include/grpc++/server_builder.h               |  3 ++
 src/cpp/server/server_builder.cc              | 18 ++++++++++++
 .../cpp/end2end/server_builder_plugin_test.cc | 28 ++++++++++++++-----
 4 files changed, 42 insertions(+), 17 deletions(-)

diff --git a/include/grpc++/impl/server_builder_plugin.h b/include/grpc++/impl/server_builder_plugin.h
index 7cf369e346..f792c4b321 100644
--- a/include/grpc++/impl/server_builder_plugin.h
+++ b/include/grpc++/impl/server_builder_plugin.h
@@ -64,16 +64,6 @@ class ServerBuilderPlugin {
 
 }  // namespace grpc
 
-#define GRPC_DECLARE_PLUGIN(plugin_name)                               \
-  namespace sBP##plugin_name {                                         \
-    extern std::unique_ptr<ServerBuilderPlugin> Create##plugin_name(); \
-  }
 
-#define GRPC_INIT_PLUGIN(map, plugin_name)        \
-  {                                               \
-    std::unique_ptr<ServerBuilderPlugin> plugin = \
-        sBP##plugin_name::Create##plugin_name();  \
-    map[plugin->name()] = std::move(plugin);      \
-  }
 
 #endif  // GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H
diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index a47b5c71cf..52064b1434 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -113,6 +113,9 @@ class ServerBuilder {
   /// Return a running server which is ready for processing calls.
   std::unique_ptr<Server> BuildAndStart();
 
+  static void InternalAddPluginFactory(
+      std::unique_ptr<ServerBuilderPlugin> (*CreatePlugin)());
+
  private:
   friend class ::grpc::testing::ServerBuilderPluginTest;
 
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index 5dc73ed1e4..b6e48efa8d 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -41,9 +41,21 @@
 
 namespace grpc {
 
+static std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>* plugin_list;
+static gpr_once once_init_plugin_list = GPR_ONCE_INIT;
+
+static void do_plugin_list_init(void) {
+  plugin_list = new std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>();
+}
+
 ServerBuilder::ServerBuilder()
     : max_message_size_(-1), generic_service_(nullptr) {
   grpc_compression_options_init(&compression_options_);
+  gpr_once_init(&once_init_plugin_list, do_plugin_list_init);
+  for (auto factory : (*plugin_list)) {
+    std::unique_ptr<ServerBuilderPlugin> plugin = factory();
+    plugins_[plugin->name()] = std::move(plugin);
+  }
 }
 
 std::unique_ptr<ServerCompletionQueue> ServerBuilder::AddCompletionQueue() {
@@ -156,4 +168,10 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
   return server;
 }
 
+void ServerBuilder::InternalAddPluginFactory(
+    std::unique_ptr<ServerBuilderPlugin> (*CreatePlugin)()) {
+  gpr_once_init(&once_init_plugin_list, do_plugin_list_init);
+  (*plugin_list).push_back(CreatePlugin);
+}
+
 }  // namespace grpc
diff --git a/test/cpp/end2end/server_builder_plugin_test.cc b/test/cpp/end2end/server_builder_plugin_test.cc
index 9ed176d29d..0d44999a08 100644
--- a/test/cpp/end2end/server_builder_plugin_test.cc
+++ b/test/cpp/end2end/server_builder_plugin_test.cc
@@ -115,6 +115,11 @@ class InsertPluginServerBuilderOption : public ServerBuilderOption {
   void UpdatePlugins(
       std::map<grpc::string, std::unique_ptr<ServerBuilderPlugin>>* plugins)
       GRPC_OVERRIDE {
+    auto it = plugins->begin();
+    while (it != plugins->end()) {
+      plugins->erase(it++);
+    }
+
     std::unique_ptr<TestServerBuilderPlugin> plugin(
         new TestServerBuilderPlugin());
     if (register_service_) plugin->SetRegisterService();
@@ -127,13 +132,24 @@ class InsertPluginServerBuilderOption : public ServerBuilderOption {
   bool register_service_;
 };
 
-namespace sBPTestServerBuilderPlugin {
-
 std::unique_ptr<ServerBuilderPlugin> CreateTestServerBuilderPlugin() {
   return std::unique_ptr<ServerBuilderPlugin>(new TestServerBuilderPlugin());
 }
 
-}  // namespace sBPTestServerBuilderPlugin
+void grpc_AddServerBuilderPlugin_reflection() {
+  static bool already_here = false;
+  if (already_here) return;
+  already_here = true;
+  ::grpc::ServerBuilder::InternalAddPluginFactory(
+      &CreateTestServerBuilderPlugin);
+}
+
+// Force AddServerBuilderPlugin() to be called at static initialization time.
+struct StaticPluginInitializer_reflection {
+  StaticPluginInitializer_reflection() {
+    grpc_AddServerBuilderPlugin_reflection();
+  }
+} static_plugin_initializer_reflection_;
 
 class ServerBuilderPluginTest : public ::testing::TestWithParam<bool> {
  public:
@@ -146,8 +162,7 @@ class ServerBuilderPluginTest : public ::testing::TestWithParam<bool> {
 
   void InsertPlugin() {
     if (GetParam()) {
-      // Add ServerBuilder plugin directly
-      GRPC_INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
+      // Add ServerBuilder plugin in static initialization
       EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
     } else {
       // Add ServerBuilder plugin using ServerBuilder::SetOption()
@@ -158,8 +173,7 @@ class ServerBuilderPluginTest : public ::testing::TestWithParam<bool> {
 
   void InsertPluginWithTestService() {
     if (GetParam()) {
-      // Add ServerBuilder plugin directly
-      GRPC_INIT_PLUGIN(builder_->plugins_, TestServerBuilderPlugin);
+      // Add ServerBuilder plugin in static initialization
       EXPECT_TRUE(builder_->plugins_[PLUGIN_NAME] != nullptr);
       auto plugin = static_cast<TestServerBuilderPlugin*>(
           builder_->plugins_[PLUGIN_NAME].get());
-- 
GitLab


From e4d2748f2fec4b189cdb7d13e25df0be95888ba2 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 3 May 2016 12:19:33 -0700
Subject: [PATCH 317/525] Fix async_end2end_test flow control

Completion queues + flow control + single threading is hard.

We need a read outstanding on a call to grant flow control tokens to the
remote end.

To do that we need to request a read *before* we wait for the write to
be finished, otherwise, in the case of a large write we'll block waiting
for flow control tokens.

Built on #6402
---
 test/cpp/end2end/async_end2end_test.cc | 131 ++++++++++++++-----------
 1 file changed, 73 insertions(+), 58 deletions(-)

diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc
index 4de181b901..0232a9fa31 100644
--- a/test/cpp/end2end/async_end2end_test.cc
+++ b/test/cpp/end2end/async_end2end_test.cc
@@ -281,10 +281,11 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
 
       send_response.set_message(recv_request.message());
       response_writer.Finish(send_response, Status::OK, tag(3));
-      Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
-
       response_reader->Finish(&recv_response, &recv_status, tag(4));
-      Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
+      Verifier(GetParam().disable_blocking)
+          .Expect(3, true)
+          .Expect(4, true)
+          .Verify(cq_.get());
 
       EXPECT_EQ(send_response.message(), recv_response.message());
       EXPECT_TRUE(recv_status.ok());
@@ -345,12 +346,9 @@ TEST_P(AsyncEnd2endTest, AsyncNextRpc) {
 
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(3));
-  Verifier(GetParam().disable_blocking)
-      .Expect(3, true)
-      .Verify(cq_.get(), std::chrono::system_clock::time_point::max());
-
   response_reader->Finish(&recv_response, &recv_status, tag(4));
   Verifier(GetParam().disable_blocking)
+      .Expect(3, true)
       .Expect(4, true)
       .Verify(cq_.get(), std::chrono::system_clock::time_point::max());
 
@@ -384,31 +382,35 @@ TEST_P(AsyncEnd2endTest, SimpleClientStreaming) {
       .Verify(cq_.get());
 
   cli_stream->Write(send_request, tag(3));
-  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
-
   srv_stream.Read(&recv_request, tag(4));
-  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(3, true)
+      .Expect(4, true)
+      .Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   cli_stream->Write(send_request, tag(5));
-  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
-
   srv_stream.Read(&recv_request, tag(6));
-  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(5, true)
+      .Expect(6, true)
+      .Verify(cq_.get());
 
   EXPECT_EQ(send_request.message(), recv_request.message());
   cli_stream->WritesDone(tag(7));
-  Verifier(GetParam().disable_blocking).Expect(7, true).Verify(cq_.get());
-
   srv_stream.Read(&recv_request, tag(8));
-  Verifier(GetParam().disable_blocking).Expect(8, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(7, true)
+      .Expect(8, false)
+      .Verify(cq_.get());
 
   send_response.set_message(recv_request.message());
   srv_stream.Finish(send_response, Status::OK, tag(9));
-  Verifier(GetParam().disable_blocking).Expect(9, true).Verify(cq_.get());
-
   cli_stream->Finish(&recv_status, tag(10));
-  Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(9, true)
+      .Expect(10, true)
+      .Verify(cq_.get());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
@@ -442,24 +444,27 @@ TEST_P(AsyncEnd2endTest, SimpleServerStreaming) {
 
   send_response.set_message(recv_request.message());
   srv_stream.Write(send_response, tag(3));
-  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
-
   cli_stream->Read(&recv_response, tag(4));
-  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(3, true)
+      .Expect(4, true)
+      .Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
 
   srv_stream.Write(send_response, tag(5));
-  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
-
   cli_stream->Read(&recv_response, tag(6));
-  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(5, true)
+      .Expect(6, true)
+      .Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
 
   srv_stream.Finish(Status::OK, tag(7));
-  Verifier(GetParam().disable_blocking).Expect(7, true).Verify(cq_.get());
-
   cli_stream->Read(&recv_response, tag(8));
-  Verifier(GetParam().disable_blocking).Expect(8, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(7, true)
+      .Expect(8, false)
+      .Verify(cq_.get());
 
   cli_stream->Finish(&recv_status, tag(9));
   Verifier(GetParam().disable_blocking).Expect(9, true).Verify(cq_.get());
@@ -493,31 +498,35 @@ TEST_P(AsyncEnd2endTest, SimpleBidiStreaming) {
       .Verify(cq_.get());
 
   cli_stream->Write(send_request, tag(3));
-  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
-
   srv_stream.Read(&recv_request, tag(4));
-  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(3, true)
+      .Expect(4, true)
+      .Verify(cq_.get());
   EXPECT_EQ(send_request.message(), recv_request.message());
 
   send_response.set_message(recv_request.message());
   srv_stream.Write(send_response, tag(5));
-  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
-
   cli_stream->Read(&recv_response, tag(6));
-  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(5, true)
+      .Expect(6, true)
+      .Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
 
   cli_stream->WritesDone(tag(7));
-  Verifier(GetParam().disable_blocking).Expect(7, true).Verify(cq_.get());
-
   srv_stream.Read(&recv_request, tag(8));
-  Verifier(GetParam().disable_blocking).Expect(8, false).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(7, true)
+      .Expect(8, false)
+      .Verify(cq_.get());
 
   srv_stream.Finish(Status::OK, tag(9));
-  Verifier(GetParam().disable_blocking).Expect(9, true).Verify(cq_.get());
-
   cli_stream->Finish(&recv_status, tag(10));
-  Verifier(GetParam().disable_blocking).Expect(10, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(9, true)
+      .Expect(10, true)
+      .Verify(cq_.get());
 
   EXPECT_TRUE(recv_status.ok());
 }
@@ -562,11 +571,11 @@ TEST_P(AsyncEnd2endTest, ClientInitialMetadataRpc) {
 
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(3));
-
-  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
-
   response_reader->Finish(&recv_response, &recv_status, tag(4));
-  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(3, true)
+      .Expect(4, true)
+      .Verify(cq_.get());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
@@ -612,10 +621,11 @@ TEST_P(AsyncEnd2endTest, ServerInitialMetadataRpc) {
 
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(5));
-  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
-
   response_reader->Finish(&recv_response, &recv_status, tag(6));
-  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(5, true)
+      .Expect(6, true)
+      .Verify(cq_.get());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
@@ -652,11 +662,13 @@ TEST_P(AsyncEnd2endTest, ServerTrailingMetadataRpc) {
   srv_ctx.AddTrailingMetadata(meta1.first, meta1.second);
   srv_ctx.AddTrailingMetadata(meta2.first, meta2.second);
   response_writer.Finish(send_response, Status::OK, tag(4));
+  response_reader->Finish(&recv_response, &recv_status, tag(5));
 
-  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(4, true)
+      .Expect(5, true)
+      .Verify(cq_.get());
 
-  response_reader->Finish(&recv_response, &recv_status, tag(5));
-  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
   auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata();
@@ -730,11 +742,13 @@ TEST_P(AsyncEnd2endTest, MetadataRpc) {
   srv_ctx.AddTrailingMetadata(meta5.first, meta5.second);
   srv_ctx.AddTrailingMetadata(meta6.first, meta6.second);
   response_writer.Finish(send_response, Status::OK, tag(5));
+  response_reader->Finish(&recv_response, &recv_status, tag(6));
 
-  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(5, true)
+      .Expect(6, true)
+      .Verify(cq_.get());
 
-  response_reader->Finish(&recv_response, &recv_status, tag(6));
-  Verifier(GetParam().disable_blocking).Expect(6, true).Verify(cq_.get());
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
   auto server_trailing_metadata = cli_ctx.GetServerTrailingMetadata();
@@ -807,12 +821,13 @@ TEST_P(AsyncEnd2endTest, ServerCheckDone) {
 
   send_response.set_message(recv_request.message());
   response_writer.Finish(send_response, Status::OK, tag(3));
-  Verifier(GetParam().disable_blocking).Expect(3, true).Verify(cq_.get());
-  Verifier(GetParam().disable_blocking).Expect(5, true).Verify(cq_.get());
-  EXPECT_FALSE(srv_ctx.IsCancelled());
-
   response_reader->Finish(&recv_response, &recv_status, tag(4));
-  Verifier(GetParam().disable_blocking).Expect(4, true).Verify(cq_.get());
+  Verifier(GetParam().disable_blocking)
+      .Expect(3, true)
+      .Expect(4, true)
+      .Expect(5, true)
+      .Verify(cq_.get());
+  EXPECT_FALSE(srv_ctx.IsCancelled());
 
   EXPECT_EQ(send_response.message(), recv_response.message());
   EXPECT_TRUE(recv_status.ok());
-- 
GitLab


From 7cae1f7198abd0f7048c8cc4e5946afbacc36b0b Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Tue, 3 May 2016 12:23:08 -0700
Subject: [PATCH 318/525] Remove some unneeded code from an earlier iteration
 of this code.

---
 test/core/end2end/cq_verifier.c | 8 --------
 test/core/end2end/cq_verifier.h | 1 -
 2 files changed, 9 deletions(-)

diff --git a/test/core/end2end/cq_verifier.c b/test/core/end2end/cq_verifier.c
index 5f1a33242e..77afe588d7 100644
--- a/test/core/end2end/cq_verifier.c
+++ b/test/core/end2end/cq_verifier.c
@@ -107,14 +107,6 @@ int contains_metadata(grpc_metadata_array *array, const char *key,
   return has_metadata(array->metadata, array->count, key, value);
 }
 
-int contains_metadata_key(grpc_metadata_array *array, const char *key) {
-  for (size_t i = 0; i < array->count; ++i) {
-    if (strcmp(array->metadata[i].key, key) == 0)
-      return 1;
-  }
-  return 0;
-}
-
 static gpr_slice merge_slices(gpr_slice *slices, size_t nslices) {
   size_t i;
   size_t len = 0;
diff --git a/test/core/end2end/cq_verifier.h b/test/core/end2end/cq_verifier.h
index a54065950d..b3e07c45a5 100644
--- a/test/core/end2end/cq_verifier.h
+++ b/test/core/end2end/cq_verifier.h
@@ -62,6 +62,5 @@ void cq_expect_completion(cq_verifier *v, void *tag, int success);
 int byte_buffer_eq_string(grpc_byte_buffer *byte_buffer, const char *string);
 int contains_metadata(grpc_metadata_array *array, const char *key,
                       const char *value);
-int contains_metadata_key(grpc_metadata_array *array, const char *key);
 
 #endif /* GRPC_TEST_CORE_END2END_CQ_VERIFIER_H */
-- 
GitLab


From a4edeb337229b7468a7ccbef6cb9d3c135b21b41 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Tue, 3 May 2016 12:24:16 -0700
Subject: [PATCH 319/525] Fix build breakage in bad_client tests.

---
 test/core/bad_client/tests/head_of_line_blocking.c | 2 +-
 test/core/bad_client/tests/window_overflow.c       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/test/core/bad_client/tests/head_of_line_blocking.c b/test/core/bad_client/tests/head_of_line_blocking.c
index 53cd4537b2..e4051bb668 100644
--- a/test/core/bad_client/tests/head_of_line_blocking.c
+++ b/test/core/bad_client/tests/head_of_line_blocking.c
@@ -144,7 +144,7 @@ int main(int argc, char **argv) {
     addbuf(hdr, sizeof(hdr));
     addbuf(msg, FRAME_SIZE);
   }
-  grpc_run_bad_client_test(verifier, g_buffer, g_count, 0);
+  grpc_run_bad_client_test(verifier, NULL, g_buffer, g_count, 0);
   gpr_free(g_buffer);
 
   return 0;
diff --git a/test/core/bad_client/tests/window_overflow.c b/test/core/bad_client/tests/window_overflow.c
index 16f11e7dd0..0d17dbe448 100644
--- a/test/core/bad_client/tests/window_overflow.c
+++ b/test/core/bad_client/tests/window_overflow.c
@@ -105,7 +105,7 @@ int main(int argc, char **argv) {
       addbuf(message, sizeof(message));
     }
   }
-  grpc_run_bad_client_test(verifier, g_buffer, g_count, 0);
+  grpc_run_bad_client_test(verifier, NULL, g_buffer, g_count, 0);
   gpr_free(g_buffer);
 
   return 0;
-- 
GitLab


From b6a9016fc234714632a20cb25dc2e822a72243f8 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 09:41:15 -0700
Subject: [PATCH 320/525] add tests for AsyncCallServer

---
 .../Grpc.Core.Tests/Grpc.Core.Tests.csproj    |   2 +
 .../Internal/AsyncCallServerTest.cs           | 134 +++++++++++++
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 134 +------------
 .../Internal/FakeNativeCall.cs                | 177 ++++++++++++++++++
 .../Grpc.Core/Internal/AsyncCallServer.cs     |   9 +
 5 files changed, 324 insertions(+), 132 deletions(-)
 create mode 100644 src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
 create mode 100644 src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs

diff --git a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
index 0cd059c232..47131fc454 100644
--- a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
+++ b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
@@ -84,6 +84,8 @@
     <Compile Include="SanityTest.cs" />
     <Compile Include="HalfcloseTest.cs" />
     <Compile Include="NUnitMain.cs" />
+    <Compile Include="Internal\FakeNativeCall.cs" />
+    <Compile Include="Internal\AsyncCallServerTest.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ItemGroup>
diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
new file mode 100644
index 0000000000..8c178657a1
--- /dev/null
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
@@ -0,0 +1,134 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+
+using Grpc.Core.Internal;
+using NUnit.Framework;
+
+namespace Grpc.Core.Internal.Tests
+{
+    /// <summary>
+    /// Uses fake native call to test interaction of <c>AsyncCallServer</c> wrapping code with C core in different situations.
+    /// </summary>
+    public class AsyncCallServerTest
+    {
+        Server server;
+        FakeNativeCall fakeCall;
+        AsyncCallServer<string, string> asyncCallServer;
+
+        [SetUp]
+        public void Init()
+        {
+            var environment = GrpcEnvironment.AddRef();
+            server = new Server();
+
+            fakeCall = new FakeNativeCall();
+            asyncCallServer = new AsyncCallServer<string, string>(
+                Marshallers.StringMarshaller.Serializer, Marshallers.StringMarshaller.Deserializer,
+                environment,
+                server);
+            asyncCallServer.InitializeForTesting(fakeCall);
+        }
+
+        [TearDown]
+        public void Cleanup()
+        {
+            GrpcEnvironment.Release();
+        }
+
+        [Test]
+        public void CancelNotificationAfterStartDisposes()
+        {
+            var finishedTask = asyncCallServer.ServerSideCallAsync();
+            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
+
+            // Finishing requestStream is needed for dispose to happen.
+            var moveNextTask = requestStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            Assert.IsFalse(moveNextTask.Result);
+
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+            AssertDisposed(asyncCallServer, fakeCall, finishedTask);
+        }
+
+        [Test]
+        public void ReadAfterCancelNotificationCanSucceed()
+        {
+            var finishedTask = asyncCallServer.ServerSideCallAsync();
+            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
+
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+
+            // Check that startin a read after cancel notification has been processed is legal.
+            var moveNextTask = requestStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            Assert.IsFalse(moveNextTask.Result);
+
+            AssertDisposed(asyncCallServer, fakeCall, finishedTask);
+        }
+
+
+        // TODO: read completion failure ...
+
+        // TODO: 
+
+
+
+        // TODO: write fails...
+
+        // TODO: write completion fails...
+
+        // TODO: cancellation delivered...
+
+        // TODO: cancel notification in the middle of a read...
+
+        // TODO: cancel notification in the middle of a write...
+
+        // TODO: cancellation delivered...
+
+        // TODO: what does writing status do to reads?
+
+        static void AssertDisposed(AsyncCallServer<string, string> asyncCallServer, FakeNativeCall fakeCall, Task finishedTask)
+        {
+            Assert.IsTrue(fakeCall.IsDisposed);
+            Assert.IsTrue(finishedTask.IsCompleted);
+            Assert.DoesNotThrow(() => finishedTask.Wait());
+        }
+    }
+}
diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index ed2d22815b..abe9d4a2e6 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -42,7 +42,7 @@ using NUnit.Framework;
 namespace Grpc.Core.Internal.Tests
 {
     /// <summary>
-    /// Uses fake native call to test interaction of wrapping code with C core in different situations.
+    /// Uses fake native call to test interaction of <c>AsyncCall</c> wrapping code with C core in different situations.
     /// </summary>
     public class AsyncCallTest
     {
@@ -480,139 +480,9 @@ namespace Grpc.Core.Internal.Tests
             Assert.IsTrue(fakeCall.IsDisposed);
 
             var ex = Assert.ThrowsAsync<RpcException>(async () => await moveNextTask);
+            Assert.AreEqual(expectedStatusCode, ex.Status.StatusCode);
             Assert.AreEqual(expectedStatusCode, asyncCall.GetStatus().StatusCode);
             Assert.AreEqual(0, asyncCall.GetTrailers().Count);
         }
-
-        internal class FakeNativeCall : INativeCall
-        {
-            public UnaryResponseClientHandler UnaryResponseClientHandler
-            {
-                get;
-                set;
-            }
-
-            public ReceivedStatusOnClientHandler ReceivedStatusOnClientHandler
-            {
-                get;
-                set;
-            }
-
-            public ReceivedMessageHandler ReceivedMessageHandler
-            {
-                get;
-                set;
-            }
-
-            public ReceivedResponseHeadersHandler ReceivedResponseHeadersHandler
-            {
-                get;
-                set;
-            }
-
-            public SendCompletionHandler SendCompletionHandler
-            {
-                get;
-                set;
-            }
-
-            public ReceivedCloseOnServerHandler ReceivedCloseOnServerHandler
-            {
-                get;
-                set;
-            }
-
-            public bool IsCancelled
-            {
-                get;
-                set;
-            }
-
-            public bool IsDisposed
-            {
-                get;
-                set;
-            }
-
-            public void Cancel()
-            {
-                IsCancelled = true;
-            }
-
-            public void CancelWithStatus(Status status)
-            {
-                IsCancelled = true;
-            }
-
-            public string GetPeer()
-            {
-                return "PEER";
-            }
-
-            public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
-            {
-                UnaryResponseClientHandler = callback;
-            }
-
-            public void StartUnary(BatchContextSafeHandle ctx, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
-            {
-                throw new NotImplementedException();
-            }
-
-            public void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray)
-            {
-                UnaryResponseClientHandler = callback;
-            }
-
-            public void StartServerStreaming(ReceivedStatusOnClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
-            {
-                ReceivedStatusOnClientHandler = callback;
-            }
-
-            public void StartDuplexStreaming(ReceivedStatusOnClientHandler callback, MetadataArraySafeHandle metadataArray)
-            {
-                ReceivedStatusOnClientHandler = callback;
-            }
-
-            public void StartReceiveMessage(ReceivedMessageHandler callback)
-            {
-                ReceivedMessageHandler = callback;
-            }
-
-            public void StartReceiveInitialMetadata(ReceivedResponseHeadersHandler callback)
-            {
-                ReceivedResponseHeadersHandler = callback;
-            }
-
-            public void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray)
-            {
-                SendCompletionHandler = callback;
-            }
-
-            public void StartSendMessage(SendCompletionHandler callback, byte[] payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata)
-            {
-                SendCompletionHandler = callback;
-            }
-
-            public void StartSendCloseFromClient(SendCompletionHandler callback)
-            {
-                SendCompletionHandler = callback;
-            }
-
-            public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata)
-            {
-                SendCompletionHandler = callback;
-            }
-
-            public void StartServerSide(ReceivedCloseOnServerHandler callback)
-            {
-                ReceivedCloseOnServerHandler = callback;
-            }
-
-            public void Dispose()
-            {
-                IsDisposed = true;
-            }
-        }
     }
 }
diff --git a/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
new file mode 100644
index 0000000000..441bf9660b
--- /dev/null
+++ b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
@@ -0,0 +1,177 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+
+using Grpc.Core.Internal;
+using NUnit.Framework;
+
+namespace Grpc.Core.Internal.Tests
+{
+    /// <summary>
+    /// For testing purposes.
+    /// </summary>
+    internal class FakeNativeCall : INativeCall
+    {
+        public UnaryResponseClientHandler UnaryResponseClientHandler
+        {
+            get;
+            set;
+        }
+
+        public ReceivedStatusOnClientHandler ReceivedStatusOnClientHandler
+        {
+            get;
+            set;
+        }
+
+        public ReceivedMessageHandler ReceivedMessageHandler
+        {
+            get;
+            set;
+        }
+
+        public ReceivedResponseHeadersHandler ReceivedResponseHeadersHandler
+        {
+            get;
+            set;
+        }
+
+        public SendCompletionHandler SendCompletionHandler
+        {
+            get;
+            set;
+        }
+
+        public ReceivedCloseOnServerHandler ReceivedCloseOnServerHandler
+        {
+            get;
+            set;
+        }
+
+        public bool IsCancelled
+        {
+            get;
+            set;
+        }
+
+        public bool IsDisposed
+        {
+            get;
+            set;
+        }
+
+        public void Cancel()
+        {
+            IsCancelled = true;
+        }
+
+        public void CancelWithStatus(Status status)
+        {
+            IsCancelled = true;
+        }
+
+        public string GetPeer()
+        {
+            return "PEER";
+        }
+
+        public void StartUnary(UnaryResponseClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
+        {
+            UnaryResponseClientHandler = callback;
+        }
+
+        public void StartUnary(BatchContextSafeHandle ctx, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void StartClientStreaming(UnaryResponseClientHandler callback, MetadataArraySafeHandle metadataArray)
+        {
+            UnaryResponseClientHandler = callback;
+        }
+
+        public void StartServerStreaming(ReceivedStatusOnClientHandler callback, byte[] payload, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags)
+        {
+            ReceivedStatusOnClientHandler = callback;
+        }
+
+        public void StartDuplexStreaming(ReceivedStatusOnClientHandler callback, MetadataArraySafeHandle metadataArray)
+        {
+            ReceivedStatusOnClientHandler = callback;
+        }
+
+        public void StartReceiveMessage(ReceivedMessageHandler callback)
+        {
+            ReceivedMessageHandler = callback;
+        }
+
+        public void StartReceiveInitialMetadata(ReceivedResponseHeadersHandler callback)
+        {
+            ReceivedResponseHeadersHandler = callback;
+        }
+
+        public void StartSendInitialMetadata(SendCompletionHandler callback, MetadataArraySafeHandle metadataArray)
+        {
+            SendCompletionHandler = callback;
+        }
+
+        public void StartSendMessage(SendCompletionHandler callback, byte[] payload, WriteFlags writeFlags, bool sendEmptyInitialMetadata)
+        {
+            SendCompletionHandler = callback;
+        }
+
+        public void StartSendCloseFromClient(SendCompletionHandler callback)
+        {
+            SendCompletionHandler = callback;
+        }
+
+        public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata)
+        {
+            SendCompletionHandler = callback;
+        }
+
+        public void StartServerSide(ReceivedCloseOnServerHandler callback)
+        {
+            ReceivedCloseOnServerHandler = callback;
+        }
+
+        public void Dispose()
+        {
+            IsDisposed = true;
+        }
+    }
+}
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index cce480b2c4..efcf4ea7fe 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -64,6 +64,15 @@ namespace Grpc.Core.Internal
             InitializeInternal(call);
         }
 
+        /// <summary>
+        /// Only for testing purposes.
+        /// </summary>
+        public void InitializeForTesting(INativeCall call)
+        {
+            server.AddCallReference(this);
+            InitializeInternal(call);
+        }
+
         /// <summary>
         /// Starts a server side call.
         /// </summary>
-- 
GitLab


From ce60d8e7a4f9a23495d0d2edb22dadbb78ca8089 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 09:52:40 -0700
Subject: [PATCH 321/525] add AsyncCalServer tests to sanity tests

---
 .../Grpc.Core.Tests/Internal/AsyncCallServerTest.cs       | 8 +++-----
 src/csharp/tests.json                                     | 1 +
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
index 8c178657a1..a1671c97d5 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
@@ -83,7 +83,7 @@ namespace Grpc.Core.Internal.Tests
             Assert.IsFalse(moveNextTask.Result);
 
             fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
-            AssertDisposed(asyncCallServer, fakeCall, finishedTask);
+            AssertFinished(asyncCallServer, fakeCall, finishedTask);
         }
 
         [Test]
@@ -100,14 +100,12 @@ namespace Grpc.Core.Internal.Tests
             fakeCall.ReceivedMessageHandler(true, null);
             Assert.IsFalse(moveNextTask.Result);
 
-            AssertDisposed(asyncCallServer, fakeCall, finishedTask);
+            AssertFinished(asyncCallServer, fakeCall, finishedTask);
         }
 
 
         // TODO: read completion failure ...
 
-        // TODO: 
-
 
 
         // TODO: write fails...
@@ -124,7 +122,7 @@ namespace Grpc.Core.Internal.Tests
 
         // TODO: what does writing status do to reads?
 
-        static void AssertDisposed(AsyncCallServer<string, string> asyncCallServer, FakeNativeCall fakeCall, Task finishedTask)
+        static void AssertFinished(AsyncCallServer<string, string> asyncCallServer, FakeNativeCall fakeCall, Task finishedTask)
         {
             Assert.IsTrue(fakeCall.IsDisposed);
             Assert.IsTrue(finishedTask.IsCompleted);
diff --git a/src/csharp/tests.json b/src/csharp/tests.json
index f733352a31..f6af3408d5 100644
--- a/src/csharp/tests.json
+++ b/src/csharp/tests.json
@@ -1,5 +1,6 @@
 {
   "Grpc.Core.Tests": [
+    "Grpc.Core.Internal.Tests.AsyncCallServerTest",
     "Grpc.Core.Internal.Tests.AsyncCallTest",
     "Grpc.Core.Internal.Tests.ChannelArgsSafeHandleTest",
     "Grpc.Core.Internal.Tests.CompletionQueueEventTest",
-- 
GitLab


From b32e29f0a2f2cbe858e040190f2fd69237007f9a Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 12:55:42 -0700
Subject: [PATCH 322/525] make SendStatusFromServer independent on WriteAsync

---
 .../Grpc.Core/Internal/AsyncCallBase.cs       |  9 +++------
 .../Grpc.Core/Internal/AsyncCallServer.cs     | 19 ++++++++++---------
 .../Grpc.Core/Internal/ServerCallHandler.cs   | 12 +++++-------
 .../Internal/ServerResponseStream.cs          |  7 -------
 4 files changed, 18 insertions(+), 29 deletions(-)

diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
index abacfabadb..18dbe87734 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
@@ -69,6 +69,7 @@ namespace Grpc.Core.Internal
 
         protected AsyncCompletionDelegate<object> sendCompletionDelegate;  // Completion of a pending send or sendclose if not null.
         protected TaskCompletionSource<TRead> streamingReadTcs;  // Completion of a pending streaming read if not null.
+        protected TaskCompletionSource<object> sendStatusFromServerTcs;
 
         protected bool readingDone;  // True if last read (i.e. read with null payload) was already received.
         protected bool halfcloseRequested;  // True if send close have been initiated.
@@ -328,22 +329,18 @@ namespace Grpc.Core.Internal
         /// </summary>
         protected void HandleSendStatusFromServerFinished(bool success)
         {
-            AsyncCompletionDelegate<object> origCompletionDelegate = null;
             lock (myLock)
             {
-                origCompletionDelegate = sendCompletionDelegate;
-                sendCompletionDelegate = null;
-
                 ReleaseResourcesIfPossible();
             }
 
             if (!success)
             {
-                FireCompletion(origCompletionDelegate, null, new InvalidOperationException("Error sending status from server."));
+                sendStatusFromServerTcs.SetException(new InvalidOperationException("Error sending status from server."));
             }
             else
             {
-                FireCompletion(origCompletionDelegate, null, null);
+                sendStatusFromServerTcs.SetResult(null);
             }
         }
 
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index efcf4ea7fe..94f49bd8f2 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -136,24 +136,24 @@ namespace Grpc.Core.Internal
         }
 
         /// <summary>
-        /// Sends call result status, also indicating server is done with streaming responses.
-        /// Only one pending send action is allowed at any given time.
-        /// completionDelegate is called when the operation finishes.
+        /// Sends call result status, indicating we are done with writes.
+        /// Sending a status different from StatusCode.OK will also implicitly cancel the call.
         /// </summary>
-        public void StartSendStatusFromServer(Status status, Metadata trailers, AsyncCompletionDelegate<object> completionDelegate)
+        public Task SendStatusFromServerAsync(Status status, Metadata trailers)
         {
             lock (myLock)
             {
-                GrpcPreconditions.CheckNotNull(completionDelegate, "Completion delegate cannot be null");
-                CheckSendingAllowed(allowFinished: false);
+                GrpcPreconditions.CheckState(started);
+                GrpcPreconditions.CheckState(!disposed);
+                GrpcPreconditions.CheckState(!halfcloseRequested, "Can only send status from server once.");
 
                 using (var metadataArray = MetadataArraySafeHandle.Create(trailers))
                 {
                     call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent);
                 }
                 halfcloseRequested = true;
-                readingDone = true;
-                sendCompletionDelegate = completionDelegate;
+                sendStatusFromServerTcs = new TaskCompletionSource<object>();
+                return sendStatusFromServerTcs.Task;
             }
         }
 
@@ -198,12 +198,13 @@ namespace Grpc.Core.Internal
         /// </summary>
         private void HandleFinishedServerside(bool success, bool cancelled)
         {
+            // NOTE: because this event is a result of batch containing GRPC_OP_RECV_CLOSE_ON_SERVER,
+            // success will be always set to true.
             lock (myLock)
             {
                 finished = true;
                 ReleaseResourcesIfPossible();
             }
-            // TODO(jtattermusch): handle error
 
             if (cancelled)
             {
diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
index 1f83e51548..bf9df9f783 100644
--- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
@@ -93,7 +93,7 @@ namespace Grpc.Core.Internal
             }
             try
             {
-                await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -149,7 +149,7 @@ namespace Grpc.Core.Internal
 
             try
             {
-                await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -209,7 +209,7 @@ namespace Grpc.Core.Internal
 
             try
             {
-                await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -260,7 +260,7 @@ namespace Grpc.Core.Internal
             }
             try
             {
-                await responseStream.WriteStatusAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -282,9 +282,7 @@ namespace Grpc.Core.Internal
             
             asyncCall.Initialize(newRpc.Call);
             var finishedTask = asyncCall.ServerSideCallAsync();
-            var responseStream = new ServerResponseStream<byte[], byte[]>(asyncCall);
-
-            await responseStream.WriteStatusAsync(new Status(StatusCode.Unimplemented, ""), Metadata.Empty).ConfigureAwait(false);
+            await asyncCall.SendStatusFromServerAsync(new Status(StatusCode.Unimplemented, ""), Metadata.Empty).ConfigureAwait(false);
             await finishedTask.ConfigureAwait(false);
         }
     }
diff --git a/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs b/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs
index 03e39efc02..ecfee0bfdd 100644
--- a/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerResponseStream.cs
@@ -57,13 +57,6 @@ namespace Grpc.Core.Internal
             return taskSource.Task;
         }
 
-        public Task WriteStatusAsync(Status status, Metadata trailers)
-        {
-            var taskSource = new AsyncCompletionTaskSource<object>();
-            call.StartSendStatusFromServer(status, trailers, taskSource.CompletionDelegate);
-            return taskSource.Task;
-        }
-
         public Task WriteResponseHeadersAsync(Metadata responseHeaders)
         {
             var taskSource = new AsyncCompletionTaskSource<object>();
-- 
GitLab


From 9a9813bc4b89b58400adbcfdb4eab6a12165f563 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 12:57:41 -0700
Subject: [PATCH 323/525] add more tests

---
 .../Internal/AsyncCallServerTest.cs           | 83 ++++++++++++++++---
 .../Internal/FakeNativeCall.cs                |  8 +-
 2 files changed, 80 insertions(+), 11 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
index a1671c97d5..169de5a780 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
@@ -75,7 +75,6 @@ namespace Grpc.Core.Internal.Tests
         {
             var finishedTask = asyncCallServer.ServerSideCallAsync();
             var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
-            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
 
             // Finishing requestStream is needed for dispose to happen.
             var moveNextTask = requestStream.MoveNext();
@@ -91,7 +90,6 @@ namespace Grpc.Core.Internal.Tests
         {
             var finishedTask = asyncCallServer.ServerSideCallAsync();
             var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
-            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
 
             fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
 
@@ -103,24 +101,89 @@ namespace Grpc.Core.Internal.Tests
             AssertFinished(asyncCallServer, fakeCall, finishedTask);
         }
 
+        [Test]
+        public void ReadCompletionFailureClosesRequestStream()
+        {
+            var finishedTask = asyncCallServer.ServerSideCallAsync();
+            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+
+            // if a read completion's success==false, the request stream will silently finish
+            // and we rely on C core cancelling the call.
+            var moveNextTask = requestStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(false, null);
+            Assert.IsFalse(moveNextTask.Result);
+
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+            AssertFinished(asyncCallServer, fakeCall, finishedTask);
+        }
+
+        [Test]
+        public void WriteAfterCancelNotificationFails()
+        {
+            var finishedTask = asyncCallServer.ServerSideCallAsync();
+            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
+
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+
+            // TODO(jtattermusch): should we throw a different exception type instead?
+            Assert.Throws(typeof(InvalidOperationException), () => responseStream.WriteAsync("request1"));
+
+            // Finishing requestStream is needed for dispose to happen.
+            var moveNextTask = requestStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            Assert.IsFalse(moveNextTask.Result);
+
+            AssertFinished(asyncCallServer, fakeCall, finishedTask);
+        }
+
+        [Test]
+        public void WriteCompletionFailureThrows()
+        {
+            var finishedTask = asyncCallServer.ServerSideCallAsync();
+            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
+
+            var writeTask = responseStream.WriteAsync("request1");
+            fakeCall.SendCompletionHandler(false);
+            // TODO(jtattermusch): should we throw a different exception type instead?
+            Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await writeTask);
 
-        // TODO: read completion failure ...
+            // Finishing requestStream is needed for dispose to happen.
+            var moveNextTask = requestStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            Assert.IsFalse(moveNextTask.Result);
 
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
 
+            AssertFinished(asyncCallServer, fakeCall, finishedTask);
+        }
 
-        // TODO: write fails...
+        [Test]
+        public void WriteAndWriteStatusCanRunConcurrently()
+        {
+            var finishedTask = asyncCallServer.ServerSideCallAsync();
+            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
+            var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
 
-        // TODO: write completion fails...
+            var writeTask = responseStream.WriteAsync("request1");
+            var writeStatusTask = asyncCallServer.SendStatusFromServerAsync(Status.DefaultSuccess, new Metadata());
 
-        // TODO: cancellation delivered...
+            fakeCall.SendCompletionHandler(true);
+            fakeCall.SendStatusFromServerHandler(true);
 
-        // TODO: cancel notification in the middle of a read...
+            Assert.DoesNotThrowAsync(async () => await writeTask);
+            Assert.DoesNotThrowAsync(async () => await writeStatusTask);
 
-        // TODO: cancel notification in the middle of a write...
+            // Finishing requestStream is needed for dispose to happen.
+            var moveNextTask = requestStream.MoveNext();
+            fakeCall.ReceivedMessageHandler(true, null);
+            Assert.IsFalse(moveNextTask.Result);
 
-        // TODO: cancellation delivered...
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
 
-        // TODO: what does writing status do to reads?
+            AssertFinished(asyncCallServer, fakeCall, finishedTask);
+        }
 
         static void AssertFinished(AsyncCallServer<string, string> asyncCallServer, FakeNativeCall fakeCall, Task finishedTask)
         {
diff --git a/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
index 441bf9660b..1bec258ca2 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
@@ -76,6 +76,12 @@ namespace Grpc.Core.Internal.Tests
             set;
         }
 
+        public SendCompletionHandler SendStatusFromServerHandler
+        {
+            get;
+            set;
+        }
+
         public ReceivedCloseOnServerHandler ReceivedCloseOnServerHandler
         {
             get;
@@ -161,7 +167,7 @@ namespace Grpc.Core.Internal.Tests
 
         public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata)
         {
-            SendCompletionHandler = callback;
+            SendStatusFromServerHandler = callback;
         }
 
         public void StartServerSide(ReceivedCloseOnServerHandler callback)
-- 
GitLab


From 2624cfb511d54b7d41f9eeab4073d2e6c9def9ad Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 13:04:33 -0700
Subject: [PATCH 324/525] fixup

---
 src/csharp/Grpc.Core/Internal/AsyncCallServer.cs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index 94f49bd8f2..44f2988e21 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -152,6 +152,7 @@ namespace Grpc.Core.Internal
                     call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent);
                 }
                 halfcloseRequested = true;
+                initialMetadataSent = true;
                 sendStatusFromServerTcs = new TaskCompletionSource<object>();
                 return sendStatusFromServerTcs.Task;
             }
-- 
GitLab


From f21f465bceaca0bfd23a377d56fa19fa4794fede Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 15:29:45 -0700
Subject: [PATCH 325/525] make AsyncCallServerTest finish correctly

---
 .../Grpc.Core.Tests/Internal/AsyncCallServerTest.cs    | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
index 169de5a780..0b6981f871 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
@@ -54,7 +54,14 @@ namespace Grpc.Core.Internal.Tests
         public void Init()
         {
             var environment = GrpcEnvironment.AddRef();
-            server = new Server();
+
+            // Create a fake server just so we have an instance to refer to.
+            // The server won't actually be used at all.
+            server = new Server()
+            {
+                Ports = { { "localhost", 0, ServerCredentials.Insecure } }
+            };
+            server.Start();
 
             fakeCall = new FakeNativeCall();
             asyncCallServer = new AsyncCallServer<string, string>(
@@ -67,6 +74,7 @@ namespace Grpc.Core.Internal.Tests
         [TearDown]
         public void Cleanup()
         {
+            server.ShutdownAsync().Wait();
             GrpcEnvironment.Release();
         }
 
-- 
GitLab


From c553034b827f9f4dbd48bf865e89db5a29607794 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Tue, 3 May 2016 15:42:45 -0700
Subject: [PATCH 326/525] Add reflection.proto

---
 .../grpc/reflection/v1alpha/reflection.proto  | 92 +++++++++++++++++++
 1 file changed, 92 insertions(+)
 create mode 100644 src/proto/grpc/reflection/v1alpha/reflection.proto

diff --git a/src/proto/grpc/reflection/v1alpha/reflection.proto b/src/proto/grpc/reflection/v1alpha/reflection.proto
new file mode 100644
index 0000000000..e6735d2cd5
--- /dev/null
+++ b/src/proto/grpc/reflection/v1alpha/reflection.proto
@@ -0,0 +1,92 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Service exported by server reflection
+
+syntax = "proto3";
+
+package grpc.reflection.v1alpha;
+
+service ServerReflection {
+  // List the full names of registered services.
+  rpc ListService(EmptyRequest) returns (ListServiceResponse) {
+  }
+
+  // Find a proto file by file name.
+  rpc GetFileByName(FileNameRequest) returns (FileDescriptorProtoResponse) {
+  }
+
+  // Find the proto file that declares the given fully-qualified symbol name.
+  rpc GetFileContainingSymbol(SymbolRequest)
+      returns (FileDescriptorProtoResponse) {
+  }
+
+  // Find the proto file which defines an extension extending the given message
+  // type with the given field number.
+  rpc GetFileContainingExtension(ExtensionRequest)
+      returns (FileDescriptorProtoResponse) {
+  }
+
+  // Finds the tag numbers used by all known extensions of extendee_type, and
+  // appends them to ExtensionNumberResponse in an undefined order.
+  rpc GetAllExtensionNumbers(TypeRequest) returns (ExtensionNumberResponse) {
+  }
+}
+
+message EmptyRequest {
+}
+
+message FileNameRequest {
+  string filename = 1;
+}
+
+message SymbolRequest {
+  string symbol = 1;
+}
+
+message ExtensionRequest {
+  string containing_type = 1;
+  int32 extension_number = 2;
+}
+
+message TypeRequest {
+  string type = 1;
+}
+
+message ListServiceResponse {
+  repeated string services = 1;
+}
+
+message FileDescriptorProtoResponse {
+  bytes file_descriptor_proto = 1;
+}
+
+message ExtensionNumberResponse {
+  repeated int32 extension_number = 1;
+}
-- 
GitLab


From b0de7163ade5b290850cae660349dbcab86f99ba Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Tue, 3 May 2016 15:48:19 -0700
Subject: [PATCH 327/525] Add proto comments to generated _pb2.py files

---
 examples/python/helloworld/helloworld_pb2.py  |  73 ++-----
 .../python/route_guide/route_guide_pb2.py     | 189 ++++++------------
 src/compiler/python_generator.cc              |  47 +++--
 3 files changed, 114 insertions(+), 195 deletions(-)

diff --git a/examples/python/helloworld/helloworld_pb2.py b/examples/python/helloworld/helloworld_pb2.py
index 1b2674e4c8..1ee80e4034 100644
--- a/examples/python/helloworld/helloworld_pb2.py
+++ b/examples/python/helloworld/helloworld_pb2.py
@@ -1,6 +1,8 @@
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: helloworld.proto
 
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
 from google.protobuf import reflection as _reflection
@@ -17,7 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
   name='helloworld.proto',
   package='helloworld',
   syntax='proto3',
-  serialized_pb=b'\n\x10helloworld.proto\x12\nhelloworld\"\x1c\n\x0cHelloRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x1d\n\nHelloReply\x12\x0f\n\x07message\x18\x01 \x01(\t2I\n\x07Greeter\x12>\n\x08SayHello\x12\x18.helloworld.HelloRequest\x1a\x16.helloworld.HelloReply\"\x00\x42\x18\n\x10io.grpc.examples\xa2\x02\x03HLWb\x06proto3'
+  serialized_pb=_b('\n\x10helloworld.proto\x12\nhelloworld\"\x1c\n\x0cHelloRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x1d\n\nHelloReply\x12\x0f\n\x07message\x18\x01 \x01(\t2I\n\x07Greeter\x12>\n\x08SayHello\x12\x18.helloworld.HelloRequest\x1a\x16.helloworld.HelloReply\"\x00\x42\x36\n\x1bio.grpc.examples.helloworldB\x0fHelloWorldProtoP\x01\xa2\x02\x03HLWb\x06proto3')
 )
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
@@ -34,7 +36,7 @@ _HELLOREQUEST = _descriptor.Descriptor(
     _descriptor.FieldDescriptor(
       name='name', full_name='helloworld.HelloRequest.name', index=0,
       number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
+      has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       options=None),
@@ -65,7 +67,7 @@ _HELLOREPLY = _descriptor.Descriptor(
     _descriptor.FieldDescriptor(
       name='message', full_name='helloworld.HelloReply.message', index=0,
       number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
+      has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       options=None),
@@ -104,69 +106,28 @@ _sym_db.RegisterMessage(HelloReply)
 
 
 DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), b'\n\020io.grpc.examples\242\002\003HLW')
+DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\033io.grpc.examples.helloworldB\017HelloWorldProtoP\001\242\002\003HLW'))
 import abc
+import six
 from grpc.beta import implementations as beta_implementations
-from grpc.early_adopter import implementations as early_adopter_implementations
-from grpc.framework.alpha import utilities as alpha_utilities
+from grpc.beta import interfaces as beta_interfaces
 from grpc.framework.common import cardinality
 from grpc.framework.interfaces.face import utilities as face_utilities
-class EarlyAdopterGreeterServicer(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
-  def SayHello(self, request, context):
-    raise NotImplementedError()
-class EarlyAdopterGreeterServer(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
-  def start(self):
-    raise NotImplementedError()
-  @abc.abstractmethod
-  def stop(self):
-    raise NotImplementedError()
-class EarlyAdopterGreeterStub(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
-  def SayHello(self, request):
-    raise NotImplementedError()
-  SayHello.async = None
-def early_adopter_create_Greeter_server(servicer, port, private_key=None, certificate_chain=None):
-  import helloworld_pb2
-  import helloworld_pb2
-  method_service_descriptions = {
-    "SayHello": alpha_utilities.unary_unary_service_description(
-      servicer.SayHello,
-      helloworld_pb2.HelloRequest.FromString,
-      helloworld_pb2.HelloReply.SerializeToString,
-    ),
-  }
-  return early_adopter_implementations.server("helloworld.Greeter", method_service_descriptions, port, private_key=private_key, certificate_chain=certificate_chain)
-def early_adopter_create_Greeter_stub(host, port, metadata_transformer=None, secure=False, root_certificates=None, private_key=None, certificate_chain=None, server_host_override=None):
-  import helloworld_pb2
-  import helloworld_pb2
-  method_invocation_descriptions = {
-    "SayHello": alpha_utilities.unary_unary_invocation_description(
-      helloworld_pb2.HelloRequest.SerializeToString,
-      helloworld_pb2.HelloReply.FromString,
-    ),
-  }
-  return early_adopter_implementations.stub("helloworld.Greeter", method_invocation_descriptions, host, port, metadata_transformer=metadata_transformer, secure=secure, root_certificates=root_certificates, private_key=private_key, certificate_chain=certificate_chain, server_host_override=server_host_override)
 
 class BetaGreeterServicer(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
+  """The greeting service definition.
+  """
   def SayHello(self, request, context):
-    raise NotImplementedError()
+    """Sends a greeting
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
 
 class BetaGreeterStub(object):
-  """The interface to which stubs will conform."""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
+  """The greeting service definition.
+  """
   def SayHello(self, request, timeout):
+    """Sends a greeting
+    """
     raise NotImplementedError()
   SayHello.future = None
 
diff --git a/examples/python/route_guide/route_guide_pb2.py b/examples/python/route_guide/route_guide_pb2.py
index d4d9f8dcd5..81d5d07527 100644
--- a/examples/python/route_guide/route_guide_pb2.py
+++ b/examples/python/route_guide/route_guide_pb2.py
@@ -1,6 +1,8 @@
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: route_guide.proto
 
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
 from google.protobuf import reflection as _reflection
@@ -17,7 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
   name='route_guide.proto',
   package='routeguide',
   syntax='proto3',
-  serialized_pb=b'\n\x11route_guide.proto\x12\nrouteguide\",\n\x05Point\x12\x10\n\x08latitude\x18\x01 \x01(\x05\x12\x11\n\tlongitude\x18\x02 \x01(\x05\"I\n\tRectangle\x12\x1d\n\x02lo\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x1d\n\x02hi\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"<\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x08location\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"A\n\tRouteNote\x12#\n\x08location\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x0f\n\x07message\x18\x02 \x01(\t\"b\n\x0cRouteSummary\x12\x13\n\x0bpoint_count\x18\x01 \x01(\x05\x12\x15\n\rfeature_count\x18\x02 \x01(\x05\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x14\n\x0c\x65lapsed_time\x18\x04 \x01(\x05\x32\x85\x02\n\nRouteGuide\x12\x36\n\nGetFeature\x12\x11.routeguide.Point\x1a\x13.routeguide.Feature\"\x00\x12>\n\x0cListFeatures\x12\x15.routeguide.Rectangle\x1a\x13.routeguide.Feature\"\x00\x30\x01\x12>\n\x0bRecordRoute\x12\x11.routeguide.Point\x1a\x18.routeguide.RouteSummary\"\x00(\x01\x12?\n\tRouteChat\x12\x15.routeguide.RouteNote\x1a\x15.routeguide.RouteNote\"\x00(\x01\x30\x01\x42\x0f\n\x07\x65x.grpc\xa2\x02\x03RTGb\x06proto3'
+  serialized_pb=_b('\n\x11route_guide.proto\x12\nrouteguide\",\n\x05Point\x12\x10\n\x08latitude\x18\x01 \x01(\x05\x12\x11\n\tlongitude\x18\x02 \x01(\x05\"I\n\tRectangle\x12\x1d\n\x02lo\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x1d\n\x02hi\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"<\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x08location\x18\x02 \x01(\x0b\x32\x11.routeguide.Point\"A\n\tRouteNote\x12#\n\x08location\x18\x01 \x01(\x0b\x32\x11.routeguide.Point\x12\x0f\n\x07message\x18\x02 \x01(\t\"b\n\x0cRouteSummary\x12\x13\n\x0bpoint_count\x18\x01 \x01(\x05\x12\x15\n\rfeature_count\x18\x02 \x01(\x05\x12\x10\n\x08\x64istance\x18\x03 \x01(\x05\x12\x14\n\x0c\x65lapsed_time\x18\x04 \x01(\x05\x32\x85\x02\n\nRouteGuide\x12\x36\n\nGetFeature\x12\x11.routeguide.Point\x1a\x13.routeguide.Feature\"\x00\x12>\n\x0cListFeatures\x12\x15.routeguide.Rectangle\x1a\x13.routeguide.Feature\"\x00\x30\x01\x12>\n\x0bRecordRoute\x12\x11.routeguide.Point\x1a\x18.routeguide.RouteSummary\"\x00(\x01\x12?\n\tRouteChat\x12\x15.routeguide.RouteNote\x1a\x15.routeguide.RouteNote\"\x00(\x01\x30\x01\x42\x36\n\x1bio.grpc.examples.routeguideB\x0fRouteGuideProtoP\x01\xa2\x02\x03RTGb\x06proto3')
 )
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
@@ -110,7 +112,7 @@ _FEATURE = _descriptor.Descriptor(
     _descriptor.FieldDescriptor(
       name='name', full_name='routeguide.Feature.name', index=0,
       number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
+      has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       options=None),
@@ -155,7 +157,7 @@ _ROUTENOTE = _descriptor.Descriptor(
     _descriptor.FieldDescriptor(
       name='message', full_name='routeguide.RouteNote.message', index=1,
       number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=b"".decode('utf-8'),
+      has_default_value=False, default_value=_b("").decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       options=None),
@@ -274,149 +276,86 @@ _sym_db.RegisterMessage(RouteSummary)
 
 
 DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), b'\n\007ex.grpc\242\002\003RTG')
+DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\033io.grpc.examples.routeguideB\017RouteGuideProtoP\001\242\002\003RTG'))
 import abc
+import six
 from grpc.beta import implementations as beta_implementations
-from grpc.early_adopter import implementations as early_adopter_implementations
-from grpc.framework.alpha import utilities as alpha_utilities
+from grpc.beta import interfaces as beta_interfaces
 from grpc.framework.common import cardinality
 from grpc.framework.interfaces.face import utilities as face_utilities
-class EarlyAdopterRouteGuideServicer(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
-  def GetFeature(self, request, context):
-    raise NotImplementedError()
-  @abc.abstractmethod
-  def ListFeatures(self, request, context):
-    raise NotImplementedError()
-  @abc.abstractmethod
-  def RecordRoute(self, request_iterator, context):
-    raise NotImplementedError()
-  @abc.abstractmethod
-  def RouteChat(self, request_iterator, context):
-    raise NotImplementedError()
-class EarlyAdopterRouteGuideServer(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
-  def start(self):
-    raise NotImplementedError()
-  @abc.abstractmethod
-  def stop(self):
-    raise NotImplementedError()
-class EarlyAdopterRouteGuideStub(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
-  def GetFeature(self, request):
-    raise NotImplementedError()
-  GetFeature.async = None
-  @abc.abstractmethod
-  def ListFeatures(self, request):
-    raise NotImplementedError()
-  ListFeatures.async = None
-  @abc.abstractmethod
-  def RecordRoute(self, request_iterator):
-    raise NotImplementedError()
-  RecordRoute.async = None
-  @abc.abstractmethod
-  def RouteChat(self, request_iterator):
-    raise NotImplementedError()
-  RouteChat.async = None
-def early_adopter_create_RouteGuide_server(servicer, port, private_key=None, certificate_chain=None):
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  method_service_descriptions = {
-    "GetFeature": alpha_utilities.unary_unary_service_description(
-      servicer.GetFeature,
-      route_guide_pb2.Point.FromString,
-      route_guide_pb2.Feature.SerializeToString,
-    ),
-    "ListFeatures": alpha_utilities.unary_stream_service_description(
-      servicer.ListFeatures,
-      route_guide_pb2.Rectangle.FromString,
-      route_guide_pb2.Feature.SerializeToString,
-    ),
-    "RecordRoute": alpha_utilities.stream_unary_service_description(
-      servicer.RecordRoute,
-      route_guide_pb2.Point.FromString,
-      route_guide_pb2.RouteSummary.SerializeToString,
-    ),
-    "RouteChat": alpha_utilities.stream_stream_service_description(
-      servicer.RouteChat,
-      route_guide_pb2.RouteNote.FromString,
-      route_guide_pb2.RouteNote.SerializeToString,
-    ),
-  }
-  return early_adopter_implementations.server("routeguide.RouteGuide", method_service_descriptions, port, private_key=private_key, certificate_chain=certificate_chain)
-def early_adopter_create_RouteGuide_stub(host, port, metadata_transformer=None, secure=False, root_certificates=None, private_key=None, certificate_chain=None, server_host_override=None):
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  import route_guide_pb2
-  method_invocation_descriptions = {
-    "GetFeature": alpha_utilities.unary_unary_invocation_description(
-      route_guide_pb2.Point.SerializeToString,
-      route_guide_pb2.Feature.FromString,
-    ),
-    "ListFeatures": alpha_utilities.unary_stream_invocation_description(
-      route_guide_pb2.Rectangle.SerializeToString,
-      route_guide_pb2.Feature.FromString,
-    ),
-    "RecordRoute": alpha_utilities.stream_unary_invocation_description(
-      route_guide_pb2.Point.SerializeToString,
-      route_guide_pb2.RouteSummary.FromString,
-    ),
-    "RouteChat": alpha_utilities.stream_stream_invocation_description(
-      route_guide_pb2.RouteNote.SerializeToString,
-      route_guide_pb2.RouteNote.FromString,
-    ),
-  }
-  return early_adopter_implementations.stub("routeguide.RouteGuide", method_invocation_descriptions, host, port, metadata_transformer=metadata_transformer, secure=secure, root_certificates=root_certificates, private_key=private_key, certificate_chain=certificate_chain, server_host_override=server_host_override)
 
 class BetaRouteGuideServicer(object):
-  """<fill me in later!>"""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
+  """Interface exported by the server.
+  """
   def GetFeature(self, request, context):
-    raise NotImplementedError()
-  @abc.abstractmethod
+    """A simple RPC.
+
+    Obtains the feature at a given position.
+
+    A feature with an empty name is returned if there's no feature at the given
+    position.
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
   def ListFeatures(self, request, context):
-    raise NotImplementedError()
-  @abc.abstractmethod
+    """A server-to-client streaming RPC.
+
+    Obtains the Features available within the given Rectangle.  Results are
+    streamed rather than returned at once (e.g. in a response message with a
+    repeated field), as the rectangle may cover a large area and contain a
+    huge number of features.
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
   def RecordRoute(self, request_iterator, context):
-    raise NotImplementedError()
-  @abc.abstractmethod
+    """A client-to-server streaming RPC.
+
+    Accepts a stream of Points on a route being traversed, returning a
+    RouteSummary when traversal is completed.
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
   def RouteChat(self, request_iterator, context):
-    raise NotImplementedError()
+    """A Bidirectional streaming RPC.
+
+    Accepts a stream of RouteNotes sent while a route is being traversed,
+    while receiving other RouteNotes (e.g. from other users).
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
 
 class BetaRouteGuideStub(object):
-  """The interface to which stubs will conform."""
-  __metaclass__ = abc.ABCMeta
-  @abc.abstractmethod
+  """Interface exported by the server.
+  """
   def GetFeature(self, request, timeout):
+    """A simple RPC.
+
+    Obtains the feature at a given position.
+
+    A feature with an empty name is returned if there's no feature at the given
+    position.
+    """
     raise NotImplementedError()
   GetFeature.future = None
-  @abc.abstractmethod
   def ListFeatures(self, request, timeout):
+    """A server-to-client streaming RPC.
+
+    Obtains the Features available within the given Rectangle.  Results are
+    streamed rather than returned at once (e.g. in a response message with a
+    repeated field), as the rectangle may cover a large area and contain a
+    huge number of features.
+    """
     raise NotImplementedError()
-  @abc.abstractmethod
   def RecordRoute(self, request_iterator, timeout):
+    """A client-to-server streaming RPC.
+
+    Accepts a stream of Points on a route being traversed, returning a
+    RouteSummary when traversal is completed.
+    """
     raise NotImplementedError()
   RecordRoute.future = None
-  @abc.abstractmethod
   def RouteChat(self, request_iterator, timeout):
+    """A Bidirectional streaming RPC.
+
+    Accepts a stream of RouteNotes sent while a route is being traversed,
+    while receiving other RouteNotes (e.g. from other users).
+    """
     raise NotImplementedError()
 
 def beta_create_RouteGuide_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index 59137e1c92..8e76e6dce6 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -182,18 +182,40 @@ bool GetModuleAndMessagePath(const Descriptor* type,
   return true;
 }
 
+// Get all comments (leading, leading_detached, trailing) and print them as a
+// docstring. Any leading space of a line will be removed, but the line wrapping
+// will not be changed.
+template <typename DescriptorType>
+static void PrintAllComments(const DescriptorType* desc, Printer* printer) {
+  std::vector<grpc::string> comments;
+  grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING_DETACHED,
+                             &comments);
+  grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_LEADING,
+                             &comments);
+  grpc_generator::GetComment(desc, grpc_generator::COMMENTTYPE_TRAILING,
+                             &comments);
+  if (comments.empty()) {
+    return;
+  }
+  printer->Print("\"\"\"");
+  for (auto it = comments.begin(); it != comments.end(); ++it) {
+    size_t start_pos = it->find_first_not_of(' ');
+    if (start_pos != grpc::string::npos) {
+      printer->Print(it->c_str() + start_pos);
+    }
+    printer->Print("\n");
+  }
+  printer->Print("\"\"\"\n");
+}
+
 bool PrintBetaServicer(const ServiceDescriptor* service,
                        Printer* out) {
-  grpc::string doc = "<fill me in later!>";
-  map<grpc::string, grpc::string> dict = ListToDict({
-        "Service", service->name(),
-        "Documentation", doc,
-      });
   out->Print("\n");
-  out->Print(dict, "class Beta$Service$Servicer(object):\n");
+  out->Print("class Beta$Service$Servicer(object):\n", "Service",
+             service->name());
   {
     IndentScope raii_class_indent(out);
-    out->Print(dict, "\"\"\"$Documentation$\"\"\"\n");
+    PrintAllComments(service, out);
     for (int i = 0; i < service->method_count(); ++i) {
       auto meth = service->method(i);
       grpc::string arg_name = meth->client_streaming() ?
@@ -202,6 +224,7 @@ bool PrintBetaServicer(const ServiceDescriptor* service,
                  "Method", meth->name(), "ArgName", arg_name);
       {
         IndentScope raii_method_indent(out);
+        PrintAllComments(meth, out);
         out->Print("context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)\n");
       }
     }
@@ -211,16 +234,11 @@ bool PrintBetaServicer(const ServiceDescriptor* service,
 
 bool PrintBetaStub(const ServiceDescriptor* service,
                    Printer* out) {
-  grpc::string doc = "The interface to which stubs will conform.";
-  map<grpc::string, grpc::string> dict = ListToDict({
-        "Service", service->name(),
-        "Documentation", doc,
-      });
   out->Print("\n");
-  out->Print(dict, "class Beta$Service$Stub(object):\n");
+  out->Print("class Beta$Service$Stub(object):\n", "Service", service->name());
   {
     IndentScope raii_class_indent(out);
-    out->Print(dict, "\"\"\"$Documentation$\"\"\"\n");
+    PrintAllComments(service, out);
     for (int i = 0; i < service->method_count(); ++i) {
       const MethodDescriptor* meth = service->method(i);
       grpc::string arg_name = meth->client_streaming() ?
@@ -229,6 +247,7 @@ bool PrintBetaStub(const ServiceDescriptor* service,
       out->Print(methdict, "def $Method$(self, $ArgName$, timeout):\n");
       {
         IndentScope raii_method_indent(out);
+        PrintAllComments(meth, out);
         out->Print("raise NotImplementedError()\n");
       }
       if (!meth->server_streaming()) {
-- 
GitLab


From 99341e30cf17889d3063e76a2eaa05c98021645b Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 29 Apr 2016 14:47:39 -0700
Subject: [PATCH 328/525] move helper script for dockerization

---
 tools/{jenkins => run_tests/dockerize}/build_and_run_docker.sh    | 0
 .../dockerize}/build_docker_and_run_tests.sh                      | 0
 tools/{jenkins => run_tests/dockerize}/build_interop_image.sh     | 0
 .../dockerize}/build_interop_stress_image.sh                      | 0
 tools/{jenkins => run_tests/dockerize}/docker_run.sh              | 0
 tools/{jenkins => run_tests/dockerize}/docker_run_tests.sh        | 0
 6 files changed, 0 insertions(+), 0 deletions(-)
 rename tools/{jenkins => run_tests/dockerize}/build_and_run_docker.sh (100%)
 rename tools/{jenkins => run_tests/dockerize}/build_docker_and_run_tests.sh (100%)
 rename tools/{jenkins => run_tests/dockerize}/build_interop_image.sh (100%)
 rename tools/{jenkins => run_tests/dockerize}/build_interop_stress_image.sh (100%)
 rename tools/{jenkins => run_tests/dockerize}/docker_run.sh (100%)
 rename tools/{jenkins => run_tests/dockerize}/docker_run_tests.sh (100%)

diff --git a/tools/jenkins/build_and_run_docker.sh b/tools/run_tests/dockerize/build_and_run_docker.sh
similarity index 100%
rename from tools/jenkins/build_and_run_docker.sh
rename to tools/run_tests/dockerize/build_and_run_docker.sh
diff --git a/tools/jenkins/build_docker_and_run_tests.sh b/tools/run_tests/dockerize/build_docker_and_run_tests.sh
similarity index 100%
rename from tools/jenkins/build_docker_and_run_tests.sh
rename to tools/run_tests/dockerize/build_docker_and_run_tests.sh
diff --git a/tools/jenkins/build_interop_image.sh b/tools/run_tests/dockerize/build_interop_image.sh
similarity index 100%
rename from tools/jenkins/build_interop_image.sh
rename to tools/run_tests/dockerize/build_interop_image.sh
diff --git a/tools/jenkins/build_interop_stress_image.sh b/tools/run_tests/dockerize/build_interop_stress_image.sh
similarity index 100%
rename from tools/jenkins/build_interop_stress_image.sh
rename to tools/run_tests/dockerize/build_interop_stress_image.sh
diff --git a/tools/jenkins/docker_run.sh b/tools/run_tests/dockerize/docker_run.sh
similarity index 100%
rename from tools/jenkins/docker_run.sh
rename to tools/run_tests/dockerize/docker_run.sh
diff --git a/tools/jenkins/docker_run_tests.sh b/tools/run_tests/dockerize/docker_run_tests.sh
similarity index 100%
rename from tools/jenkins/docker_run_tests.sh
rename to tools/run_tests/dockerize/docker_run_tests.sh
-- 
GitLab


From 26ca776e3ee4b81203cc4b97a956cbe9f6c00268 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 29 Apr 2016 14:51:35 -0700
Subject: [PATCH 329/525] update working directories

---
 tools/run_tests/dockerize/build_and_run_docker.sh       | 2 +-
 tools/run_tests/dockerize/build_docker_and_run_tests.sh | 2 +-
 tools/run_tests/dockerize/build_interop_image.sh        | 2 +-
 tools/run_tests/dockerize/build_interop_stress_image.sh | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/run_tests/dockerize/build_and_run_docker.sh b/tools/run_tests/dockerize/build_and_run_docker.sh
index 92dbbc6f38..1ef34b2f96 100755
--- a/tools/run_tests/dockerize/build_and_run_docker.sh
+++ b/tools/run_tests/dockerize/build_and_run_docker.sh
@@ -33,7 +33,7 @@
 
 set -ex
 
-cd $(dirname $0)/../..
+cd $(dirname $0)/../../..
 git_root=$(pwd)
 cd -
 
diff --git a/tools/run_tests/dockerize/build_docker_and_run_tests.sh b/tools/run_tests/dockerize/build_docker_and_run_tests.sh
index 5779e63db9..c2ea6f2c6e 100755
--- a/tools/run_tests/dockerize/build_docker_and_run_tests.sh
+++ b/tools/run_tests/dockerize/build_docker_and_run_tests.sh
@@ -33,7 +33,7 @@
 
 set -ex
 
-cd $(dirname $0)/../..
+cd $(dirname $0)/../../..
 git_root=$(pwd)
 cd -
 
diff --git a/tools/run_tests/dockerize/build_interop_image.sh b/tools/run_tests/dockerize/build_interop_image.sh
index d2ba97c3de..48a216a124 100755
--- a/tools/run_tests/dockerize/build_interop_image.sh
+++ b/tools/run_tests/dockerize/build_interop_image.sh
@@ -40,7 +40,7 @@ set -x
 #  BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the
 #    docker run command
 
-cd `dirname $0`/../..
+cd `dirname $0`/../../..
 GRPC_ROOT=`pwd`
 MOUNT_ARGS="-v $GRPC_ROOT:/var/local/jenkins/grpc:ro"
 
diff --git a/tools/run_tests/dockerize/build_interop_stress_image.sh b/tools/run_tests/dockerize/build_interop_stress_image.sh
index 31ffa752ab..4407c8da90 100755
--- a/tools/run_tests/dockerize/build_interop_stress_image.sh
+++ b/tools/run_tests/dockerize/build_interop_stress_image.sh
@@ -44,7 +44,7 @@ set -x
 #  BUILD_INTEROP_DOCKER_EXTRA_ARGS - optional args to be passed to the
 #    docker run command
 
-cd `dirname $0`/../..
+cd `dirname $0`/../../..
 GRPC_ROOT=`pwd`
 MOUNT_ARGS="-v $GRPC_ROOT:/var/local/jenkins/grpc:ro"
 
-- 
GitLab


From 9835d4b1f7a4a065117e865e98c6f7b01e8eda96 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 29 Apr 2016 15:05:05 -0700
Subject: [PATCH 330/525] update locations of dockerization scripts

---
 tools/jenkins/run_fuzzer.sh                            | 4 ++--
 tools/run_tests/artifact_targets.py                    | 4 ++--
 tools/run_tests/distribtest_targets.py                 | 4 ++--
 tools/run_tests/package_targets.py                     | 4 ++--
 tools/run_tests/run_interop_tests.py                   | 2 +-
 tools/run_tests/run_stress_tests.py                    | 2 +-
 tools/run_tests/run_tests.py                           | 4 ++--
 tools/run_tests/stress_test/configs/asan.json          | 2 +-
 tools/run_tests/stress_test/configs/go.json            | 2 +-
 tools/run_tests/stress_test/configs/java.json          | 2 +-
 tools/run_tests/stress_test/configs/node-cxx.json      | 4 ++--
 tools/run_tests/stress_test/configs/node.json          | 2 +-
 tools/run_tests/stress_test/configs/opt-tsan-asan.json | 6 +++---
 tools/run_tests/stress_test/configs/opt.json           | 2 +-
 tools/run_tests/stress_test/configs/tsan.json          | 2 +-
 15 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/tools/jenkins/run_fuzzer.sh b/tools/jenkins/run_fuzzer.sh
index 3f25a93319..cfa7acefab 100755
--- a/tools/jenkins/run_fuzzer.sh
+++ b/tools/jenkins/run_fuzzer.sh
@@ -33,14 +33,14 @@
 set -ex
 
 export RUN_COMMAND="tools/fuzzer/build_and_run_fuzzer.sh $1"
-export DOCKER_RUN_SCRIPT=tools/jenkins/docker_run.sh
+export DOCKER_RUN_SCRIPT=tools/run_tests/dockerize/docker_run.sh
 export DOCKERFILE_DIR=tools/dockerfile/test/fuzzer
 export OUTPUT_DIR=fuzzer_output
 
 runtime=${runtime:-3600}
 jobs=${jobs:-3}
 
-tools/jenkins/build_and_run_docker.sh \
+tools/run_tests/dockerize/build_and_run_docker.sh \
   -e RUN_COMMAND="$RUN_COMMAND" \
   -e OUTPUT_DIR="$OUTPUT_DIR" \
   -e config="$config" \
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index e61c46d8b5..3e08c1d62b 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -43,10 +43,10 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
   for k,v in environ.iteritems():
     docker_args += ['-e', '%s=%s' % (k, v)]
   docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
-                'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh',
+                'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh',
                 'OUTPUT_DIR': 'artifacts'}
   jobspec = jobset.JobSpec(
-          cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+          cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
           environ=docker_env,
           shortname='build_artifact.%s' % (name),
           timeout_seconds=30*60,
diff --git a/tools/run_tests/distribtest_targets.py b/tools/run_tests/distribtest_targets.py
index 34cc1cd710..ae918be21d 100644
--- a/tools/run_tests/distribtest_targets.py
+++ b/tools/run_tests/distribtest_targets.py
@@ -44,9 +44,9 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
   for k,v in environ.iteritems():
     docker_args += ['-e', '%s=%s' % (k, v)]
   docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
-                'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh'}
+                'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh'}
   jobspec = jobset.JobSpec(
-          cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+          cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
           environ=docker_env,
           shortname='distribtest.%s' % (name),
           timeout_seconds=30*60,
diff --git a/tools/run_tests/package_targets.py b/tools/run_tests/package_targets.py
index 87bc4865ce..820b539b59 100644
--- a/tools/run_tests/package_targets.py
+++ b/tools/run_tests/package_targets.py
@@ -42,10 +42,10 @@ def create_docker_jobspec(name, dockerfile_dir, shell_command, environ={},
   for k,v in environ.iteritems():
     docker_args += ['-e', '%s=%s' % (k, v)]
   docker_env = {'DOCKERFILE_DIR': dockerfile_dir,
-                'DOCKER_RUN_SCRIPT': 'tools/jenkins/docker_run.sh',
+                'DOCKER_RUN_SCRIPT': 'tools/run_tests/dockerize/docker_run.sh',
                 'OUTPUT_DIR': 'artifacts'}
   jobspec = jobset.JobSpec(
-          cmdline=['tools/jenkins/build_and_run_docker.sh'] + docker_args,
+          cmdline=['tools/run_tests/dockerize/build_and_run_docker.sh'] + docker_args,
           environ=docker_env,
           shortname='build_package.%s' % (name),
           timeout_seconds=30*60,
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 758be9304d..e813473421 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -542,7 +542,7 @@ def build_interop_image_jobspec(language, tag=None):
     env['BUILD_INTEROP_DOCKER_EXTRA_ARGS'] = \
       '-v %s:/root/.composer/auth.json:ro' % host_file
   build_job = jobset.JobSpec(
-          cmdline=['tools/jenkins/build_interop_image.sh'],
+          cmdline=['tools/run_tests/dockerize/build_interop_image.sh'],
           environ=env,
           shortname='build_docker_%s' % (language),
           timeout_seconds=30*60)
diff --git a/tools/run_tests/run_stress_tests.py b/tools/run_tests/run_stress_tests.py
index 0ba8f51c58..e42ee24ffb 100755
--- a/tools/run_tests/run_stress_tests.py
+++ b/tools/run_tests/run_stress_tests.py
@@ -195,7 +195,7 @@ def build_interop_stress_image_jobspec(language, tag=None):
     tag = 'grpc_interop_stress_%s:%s' % (language.safename, uuid.uuid4())
   env = {'INTEROP_IMAGE': tag,
          'BASE_NAME': 'grpc_interop_stress_%s' % language.safename}
-  build_job = jobset.JobSpec(cmdline=['tools/jenkins/build_interop_stress_image.sh'],
+  build_job = jobset.JobSpec(cmdline=['tools/run_tests/dockerize/build_interop_stress_image.sh'],
                              environ=env,
                              shortname='build_docker_%s' % (language),
                              timeout_seconds=30 * 60)
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index d50d5aac95..37291f4d3f 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -912,13 +912,13 @@ if args.use_docker:
   env = os.environ.copy()
   env['RUN_TESTS_COMMAND'] = run_tests_cmd
   env['DOCKERFILE_DIR'] = dockerfile_dir
-  env['DOCKER_RUN_SCRIPT'] = 'tools/jenkins/docker_run_tests.sh'
+  env['DOCKER_RUN_SCRIPT'] = 'tools/run_tests/dockerize/docker_run_tests.sh'
   if args.xml_report:
     env['XML_REPORT'] = args.xml_report
   if not args.travis:
     env['TTY_FLAG'] = '-t'  # enables Ctrl-C when not on Jenkins.
 
-  subprocess.check_call(['tools/jenkins/build_docker_and_run_tests.sh'],
+  subprocess.check_call(['tools/run_tests/dockerize/build_docker_and_run_tests.sh'],
                         shell=True,
                         env=env)
   sys.exit(0)
diff --git a/tools/run_tests/stress_test/configs/asan.json b/tools/run_tests/stress_test/configs/asan.json
index cb9f55763b..7ae11ccbf1 100644
--- a/tools/run_tests/stress_test/configs/asan.json
+++ b/tools/run_tests/stress_test/configs/asan.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_cxx_asan" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_cxx",
       "buildType": "asan"
     }
diff --git a/tools/run_tests/stress_test/configs/go.json b/tools/run_tests/stress_test/configs/go.json
index 36b465e763..f1b2b523d3 100644
--- a/tools/run_tests/stress_test/configs/go.json
+++ b/tools/run_tests/stress_test/configs/go.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_go" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_go"
     }
   },
diff --git a/tools/run_tests/stress_test/configs/java.json b/tools/run_tests/stress_test/configs/java.json
index 275384c066..2ce6c00780 100644
--- a/tools/run_tests/stress_test/configs/java.json
+++ b/tools/run_tests/stress_test/configs/java.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_java" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_java"
     }
   },
diff --git a/tools/run_tests/stress_test/configs/node-cxx.json b/tools/run_tests/stress_test/configs/node-cxx.json
index c4245bf9df..094c1236e7 100644
--- a/tools/run_tests/stress_test/configs/node-cxx.json
+++ b/tools/run_tests/stress_test/configs/node-cxx.json
@@ -1,12 +1,12 @@
 {
   "dockerImages": {
     "grpc_stress_cxx_opt" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_cxx",
       "buildType": "opt"
     },
    "grpc_stress_node": {
-     "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+     "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
      "dockerFileDir": "grpc_interop_stress_node"
    }
   },
diff --git a/tools/run_tests/stress_test/configs/node.json b/tools/run_tests/stress_test/configs/node.json
index 7a48c56a5e..85eb9e0003 100644
--- a/tools/run_tests/stress_test/configs/node.json
+++ b/tools/run_tests/stress_test/configs/node.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_node" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_node"
     }
   },
diff --git a/tools/run_tests/stress_test/configs/opt-tsan-asan.json b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
index 936d15169e..fcb3678c02 100644
--- a/tools/run_tests/stress_test/configs/opt-tsan-asan.json
+++ b/tools/run_tests/stress_test/configs/opt-tsan-asan.json
@@ -1,17 +1,17 @@
 {
   "dockerImages": {
     "grpc_stress_cxx_opt" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_cxx",
       "buildType": "opt"
     },
     "grpc_stress_cxx_tsan": {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_cxx",
       "buildType": "tsan"
     },
     "grpc_stress_cxx_asan": {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_cxx",
       "buildType": "asan"
     }
diff --git a/tools/run_tests/stress_test/configs/opt.json b/tools/run_tests/stress_test/configs/opt.json
index f45b824048..5e0e930d45 100644
--- a/tools/run_tests/stress_test/configs/opt.json
+++ b/tools/run_tests/stress_test/configs/opt.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_cxx_opt" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_cxx",
       "buildType": "opt"
     }
diff --git a/tools/run_tests/stress_test/configs/tsan.json b/tools/run_tests/stress_test/configs/tsan.json
index 6ef3bdf7ea..abc759c79d 100644
--- a/tools/run_tests/stress_test/configs/tsan.json
+++ b/tools/run_tests/stress_test/configs/tsan.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_cxx_tsan" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_cxx",
       "buildType": "tsan"
     }
-- 
GitLab


From 080ddf09ab9c037bea940a32d0075ee1b3d346d4 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 29 Apr 2016 15:07:42 -0700
Subject: [PATCH 331/525] add a readme file

---
 tools/jenkins/README.md | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 tools/jenkins/README.md

diff --git a/tools/jenkins/README.md b/tools/jenkins/README.md
new file mode 100644
index 0000000000..8e06b68466
--- /dev/null
+++ b/tools/jenkins/README.md
@@ -0,0 +1 @@
+Scripts invoked by Jenkins (our CI platform) to run gRPC test suites.
-- 
GitLab


From 9c8351257569e3c79d1d900c16cf942a8183fe95 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 15:58:06 -0700
Subject: [PATCH 332/525] update remaining stresstest configs

---
 tools/run_tests/stress_test/configs/csharp.json | 2 +-
 tools/run_tests/stress_test/configs/ruby.json   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/run_tests/stress_test/configs/csharp.json b/tools/run_tests/stress_test/configs/csharp.json
index b7090696b4..406949557d 100644
--- a/tools/run_tests/stress_test/configs/csharp.json
+++ b/tools/run_tests/stress_test/configs/csharp.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_csharp" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_csharp"
     }
   },
diff --git a/tools/run_tests/stress_test/configs/ruby.json b/tools/run_tests/stress_test/configs/ruby.json
index a323fa72b6..7e2afcbb69 100644
--- a/tools/run_tests/stress_test/configs/ruby.json
+++ b/tools/run_tests/stress_test/configs/ruby.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_ruby" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_ruby"
     }
   },
-- 
GitLab


From ed4d89e1f51fa06cc5e8cb231547b837ca1d1fa8 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date: Tue, 3 May 2016 16:01:38 -0700
Subject: [PATCH 333/525] Remove trailing space.

---
 include/grpc/impl/codegen/grpc_types.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/grpc/impl/codegen/grpc_types.h b/include/grpc/impl/codegen/grpc_types.h
index fa287d5238..7b20cc14d4 100644
--- a/include/grpc/impl/codegen/grpc_types.h
+++ b/include/grpc/impl/codegen/grpc_types.h
@@ -307,7 +307,7 @@ typedef enum {
   GRPC_OP_RECV_STATUS_ON_CLIENT,
   /** Receive close on the server: one and only one must be made on the
       server.
-      This op completes after the close has been received by the server. 
+      This op completes after the close has been received by the server.
       This operation always succeeds, meaning ops paired with this operation
       will also appear to succeed, even though they may not have. */
   GRPC_OP_RECV_CLOSE_ON_SERVER
-- 
GitLab


From 1717bff3f47939b83fece86075fb9b9aa178ebb3 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Tue, 3 May 2016 16:04:54 -0700
Subject: [PATCH 334/525] add a dummy service with no rpc to test codegen
 coverage

---
 src/proto/grpc/testing/echo.proto | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/proto/grpc/testing/echo.proto b/src/proto/grpc/testing/echo.proto
index 0eef53a92a..c596aabfcc 100644
--- a/src/proto/grpc/testing/echo.proto
+++ b/src/proto/grpc/testing/echo.proto
@@ -45,3 +45,7 @@ service EchoTestService {
 service UnimplementedService {
   rpc Unimplemented(EchoRequest) returns (EchoResponse);
 }
+
+// A service without any rpc defined to test coverage.
+service NoRpcService {
+}
-- 
GitLab


From 1bdd5319b077956214b95e730e844f079baa4ddf Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Mon, 2 May 2016 19:57:04 -0700
Subject: [PATCH 335/525] Python dockerfiles and config files for stress
 testing

---
 .../Dockerfile.template                       |  45 ++++++++
 .../grpc_interop_stress_python/Dockerfile     | 103 ++++++++++++++++++
 .../build_interop_stress.sh                   |  46 ++++++++
 .../run_tests/stress_test/configs/python.json |  98 +++++++++++++++++
 tools/run_tests/stress_test/run_on_gke.py     |  13 ++-
 5 files changed, 301 insertions(+), 4 deletions(-)
 create mode 100644 templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template
 create mode 100644 tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile
 create mode 100755 tools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh
 create mode 100644 tools/run_tests/stress_test/configs/python.json

diff --git a/templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template b/templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template
new file mode 100644
index 0000000000..27e9eeec5a
--- /dev/null
+++ b/templates/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile.template
@@ -0,0 +1,45 @@
+%YAML 1.2
+--- |
+  # Copyright 2016, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
+  FROM debian:jessie
+  
+  <%include file="../../apt_get_basic.include"/>
+  <%include file="../../ccache_setup.include"/>
+  <%include file="../../cxx_deps.include"/>
+  <%include file="../../gcp_api_libraries.include"/>
+  <%include file="../../python_deps.include"/>
+
+  RUN pip install coverage
+  RUN pip install oauth2client
+
+  # Define the default command.
+  CMD ["bash"]
+  
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile b/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile
new file mode 100644
index 0000000000..606b765457
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_python/Dockerfile
@@ -0,0 +1,103 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM debian:jessie
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+  autoconf \
+  autotools-dev \
+  build-essential \
+  bzip2 \
+  ccache \
+  curl \
+  gcc \
+  gcc-multilib \
+  git \
+  golang \
+  gyp \
+  lcov \
+  libc6 \
+  libc6-dbg \
+  libc6-dev \
+  libgtest-dev \
+  libtool \
+  make \
+  perl \
+  strace \
+  python-dev \
+  python-setuptools \
+  python-yaml \
+  telnet \
+  unzip \
+  wget \
+  zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
+# Google Cloud platform API libraries
+RUN apt-get update && apt-get install -y python-pip && apt-get clean
+RUN pip install --upgrade google-api-python-client
+
+
+#====================
+# Python dependencies
+
+# Install dependencies
+
+RUN apt-get update && apt-get install -y \
+    python-all-dev \
+    python3-all-dev \
+    python-pip
+
+# Install Python packages from PyPI
+RUN pip install pip --upgrade
+RUN pip install virtualenv
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0a2 tox
+
+
+RUN pip install coverage
+RUN pip install oauth2client
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh b/tools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh
new file mode 100755
index 0000000000..e65332f2f3
--- /dev/null
+++ b/tools/dockerfile/stress_test/grpc_interop_stress_python/build_interop_stress.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Builds Python interop server and client in a base image.
+set -e
+
+mkdir -p /var/local/git
+git clone --recursive /var/local/jenkins/grpc /var/local/git/grpc
+
+# copy service account keys if available
+cp -r /var/local/jenkins/service_account $HOME || true
+
+cd /var/local/git/grpc
+
+tools/run_tests/run_tests.py -l python -c opt --build_only
+
+# Build c++ interop client
+make metrics_client -j
+
diff --git a/tools/run_tests/stress_test/configs/python.json b/tools/run_tests/stress_test/configs/python.json
new file mode 100644
index 0000000000..ea5b5ba2ec
--- /dev/null
+++ b/tools/run_tests/stress_test/configs/python.json
@@ -0,0 +1,98 @@
+{
+  "dockerImages": {
+    "grpc_stress_python" : {
+      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "dockerFileDir": "grpc_interop_stress_python"
+    }
+  },
+
+  "clientTemplates": {
+    "baseTemplates": {
+      "default": {
+        "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_client.py",
+        "pollIntervalSecs": 60,
+        "clientArgs": {
+          "num_channels_per_server":5,
+          "num_stubs_per_channel":10,
+          "test_cases": "empty_unary:1,large_unary:1,client_streaming:1,server_streaming:1,empty_stream:1",
+          "metrics_port": 8081
+        },
+        "metricsPort": 8081,
+        "metricsArgs": {
+          "metrics_server_address": "localhost:8081",
+          "total_only": "true"
+        },
+		"env": {
+          "PYTHONPATH": "/var/local/git/grpc/src/python/gens:/var/local/git/grpc/src/python/grpcio",
+          "LD_LIBRARY_PATH":"/var/local/git/grpc/libs/opt"
+        }
+      }
+    },
+    "templates": {
+      "python_client": {
+        "baseTemplate": "default",
+        "stressClientCmd": [
+          "python",
+          "/var/local/git/grpc/src/python/grpcio/tests/stress/client.py"
+        ],
+        "metricsClientCmd": ["/var/local/git/grpc/bins/opt/metrics_client"]
+      }
+    }
+  },
+
+  "serverTemplates": {
+    "baseTemplates":{
+      "default": {
+        "wrapperScriptPath": "/var/local/git/grpc/tools/gcp/stress_test/run_server.py",
+        "serverPort": 8080,
+        "serverArgs": {
+          "port": 8080
+        },
+        "env": {
+          "PYTHONPATH": "/var/local/git/grpc/src/python/gens:/var/local/git/grpc/src/python/grpcio",
+          "LD_LIBRARY_PATH":"/var/local/git/grpc/libs/opt"
+        }
+      }
+    },
+    "templates": {
+      "python_server": {
+        "baseTemplate": "default",
+        "stressServerCmd": [
+          "python",
+          "/var/local/git/grpc/src/python/grpcio/tests/interop/server.py"
+        ]
+      }
+    }
+  },
+
+  "testMatrix": {
+    "serverPodSpecs": {
+      "python-stress-server": {
+        "serverTemplate": "python_server",
+        "dockerImage": "grpc_stress_python",
+        "numInstances": 1
+      }
+    },
+
+    "clientPodSpecs": {
+      "python-stress-client": {
+        "clientTemplate": "python_client",
+        "dockerImage": "grpc_stress_python",
+        "numInstances": 5,
+        "serverPodSpec": "python-stress-server"
+      }
+    }
+  },
+
+  "globalSettings": {
+    "buildDockerImages": true,
+    "pollIntervalSecs": 60,
+    "testDurationSecs": 7200,
+    "kubernetesProxyPort": 8011,
+    "datasetIdNamePrefix": "stress_test_python",
+    "summaryTableId": "summary",
+    "qpsTableId": "qps",
+    "podWarmupSecs": 60
+  }
+}
+
diff --git a/tools/run_tests/stress_test/run_on_gke.py b/tools/run_tests/stress_test/run_on_gke.py
index d4f1c4ad3d..583e58316f 100755
--- a/tools/run_tests/stress_test/run_on_gke.py
+++ b/tools/run_tests/stress_test/run_on_gke.py
@@ -69,7 +69,7 @@ class ClientTemplate:
 
   def __init__(self, name, stress_client_cmd, metrics_client_cmd, metrics_port,
                wrapper_script_path, poll_interval_secs, client_args_dict,
-               metrics_args_dict, will_run_forever):
+               metrics_args_dict, will_run_forever, env_dict):
     self.name = name
     self.stress_client_cmd = stress_client_cmd
     self.metrics_client_cmd = metrics_client_cmd
@@ -79,19 +79,21 @@ class ClientTemplate:
     self.client_args_dict = client_args_dict
     self.metrics_args_dict = metrics_args_dict
     self.will_run_forever = will_run_forever
+    self.env_dict = env_dict
 
 
 class ServerTemplate:
   """ Contains all the common settings used by a stress server """
 
   def __init__(self, name, server_cmd, wrapper_script_path, server_port,
-               server_args_dict, will_run_forever):
+               server_args_dict, will_run_forever, env_dict):
     self.name = name
     self.server_cmd = server_cmd
     self.wrapper_script_path = wrapper_script_path
     self.server_port = server_port
     self.server_args_dict = server_args_dict
     self.will_run_forever = will_run_forever
+    self.env_dict = env_dict
 
 
 class DockerImage:
@@ -240,6 +242,7 @@ class Gke:
     # server_pod_spec.template.wrapper_script_path) are are injected into the
     # container via environment variables
     server_env = self.gke_env.copy()
+    server_env.update(server_pod_spec.template.env_dict)
     server_env.update({
         'STRESS_TEST_IMAGE_TYPE': 'SERVER',
         'STRESS_TEST_CMD': server_pod_spec.template.server_cmd,
@@ -283,6 +286,7 @@ class Gke:
     # client_pod_spec.template.wrapper_script_path) are are injected into the
     # container via environment variables
     client_env = self.gke_env.copy()
+    client_env.update(client_pod_spec.template.env_dict)
     client_env.update({
         'STRESS_TEST_IMAGE_TYPE': 'CLIENT',
         'STRESS_TEST_CMD': client_pod_spec.template.stress_client_cmd,
@@ -425,7 +429,8 @@ class Config:
           template_name, stress_client_cmd, metrics_client_cmd,
           temp_dict['metricsPort'], temp_dict['wrapperScriptPath'],
           temp_dict['pollIntervalSecs'], temp_dict['clientArgs'].copy(),
-          temp_dict['metricsArgs'].copy(), temp_dict.get('willRunForever', 1))
+          temp_dict['metricsArgs'].copy(), temp_dict.get('willRunForever', 1),
+          temp_dict.get('env', {}).copy())
 
     return client_templates_dict
 
@@ -461,7 +466,7 @@ class Config:
       server_templates_dict[template_name] = ServerTemplate(
           template_name, stress_server_cmd, temp_dict['wrapperScriptPath'],
           temp_dict['serverPort'], temp_dict['serverArgs'].copy(),
-          temp_dict.get('willRunForever', 1))
+          temp_dict.get('willRunForever', 1), temp_dict.get('env', {}).copy())
 
     return server_templates_dict
 
-- 
GitLab


From f023800ff1cc3e78fdfd53f37eaf0a1f31a4d88e Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Tue, 3 May 2016 16:40:43 -0700
Subject: [PATCH 336/525] Correct csharp kubernetes proxy port (so that it
 doesn't collide with other configs when running on the same machine)

---
 tools/run_tests/stress_test/configs/csharp.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/stress_test/configs/csharp.json b/tools/run_tests/stress_test/configs/csharp.json
index b7090696b4..306fe115c7 100644
--- a/tools/run_tests/stress_test/configs/csharp.json
+++ b/tools/run_tests/stress_test/configs/csharp.json
@@ -80,7 +80,7 @@
     "buildDockerImages": true,
     "pollIntervalSecs": 60,
     "testDurationSecs": 7200,
-    "kubernetesProxyPort": 8001,
+    "kubernetesProxyPort": 8009,
     "datasetIdNamePrefix": "stress_test_csharp",
     "summaryTableId": "summary",
     "qpsTableId": "qps",
-- 
GitLab


From d8c0d385f45a953d683203f24bda90e679d98f25 Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Tue, 3 May 2016 17:12:45 -0700
Subject: [PATCH 337/525] Fix a bug in stress client code

---
 src/python/grpcio/tests/stress/client.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/python/grpcio/tests/stress/client.py b/src/python/grpcio/tests/stress/client.py
index a733741b73..e2e016760c 100644
--- a/src/python/grpcio/tests/stress/client.py
+++ b/src/python/grpcio/tests/stress/client.py
@@ -117,7 +117,10 @@ def run_test(args):
   for runner in runners:
     runner.start()
   try:
-    raise exception_queue.get(block=True, timeout=args.test_duration_secs)
+    timeout_secs = args.test_duration_secs
+    if timeout_secs < 0:
+      timeout_secs = None
+    raise exception_queue.get(block=True, timeout=timeout_secs)
   except Queue.Empty:
     # No exceptions thrown, success
     pass
-- 
GitLab


From 739e86c394040031ca6ac116b84e2975fb5fe83a Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 17:24:33 -0700
Subject: [PATCH 338/525] finishing serverside request stream should not be
 required for disposal

---
 .../Internal/AsyncCallServerTest.cs           | 34 ++++++-------------
 .../Grpc.Core/Internal/AsyncCallBase.cs       |  7 +---
 .../Grpc.Core/Internal/AsyncCallServer.cs     | 14 ++++----
 3 files changed, 20 insertions(+), 35 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
index 0b6981f871..058371521d 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
@@ -80,16 +80,24 @@ namespace Grpc.Core.Internal.Tests
 
         [Test]
         public void CancelNotificationAfterStartDisposes()
+        {
+            var finishedTask = asyncCallServer.ServerSideCallAsync();
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
+            AssertFinished(asyncCallServer, fakeCall, finishedTask);
+        }
+
+        [Test]
+        public void CancelNotificationAfterStartDisposesAfterPendingReadFinishes()
         {
             var finishedTask = asyncCallServer.ServerSideCallAsync();
             var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
 
-            // Finishing requestStream is needed for dispose to happen.
             var moveNextTask = requestStream.MoveNext();
+
+            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
             fakeCall.ReceivedMessageHandler(true, null);
             Assert.IsFalse(moveNextTask.Result);
 
-            fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
             AssertFinished(asyncCallServer, fakeCall, finishedTask);
         }
 
@@ -101,9 +109,8 @@ namespace Grpc.Core.Internal.Tests
 
             fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
 
-            // Check that startin a read after cancel notification has been processed is legal.
+            // Check that starting a read after cancel notification has been processed is legal.
             var moveNextTask = requestStream.MoveNext();
-            fakeCall.ReceivedMessageHandler(true, null);
             Assert.IsFalse(moveNextTask.Result);
 
             AssertFinished(asyncCallServer, fakeCall, finishedTask);
@@ -136,12 +143,6 @@ namespace Grpc.Core.Internal.Tests
 
             // TODO(jtattermusch): should we throw a different exception type instead?
             Assert.Throws(typeof(InvalidOperationException), () => responseStream.WriteAsync("request1"));
-
-            // Finishing requestStream is needed for dispose to happen.
-            var moveNextTask = requestStream.MoveNext();
-            fakeCall.ReceivedMessageHandler(true, null);
-            Assert.IsFalse(moveNextTask.Result);
-
             AssertFinished(asyncCallServer, fakeCall, finishedTask);
         }
 
@@ -149,7 +150,6 @@ namespace Grpc.Core.Internal.Tests
         public void WriteCompletionFailureThrows()
         {
             var finishedTask = asyncCallServer.ServerSideCallAsync();
-            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
             var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
 
             var writeTask = responseStream.WriteAsync("request1");
@@ -157,13 +157,7 @@ namespace Grpc.Core.Internal.Tests
             // TODO(jtattermusch): should we throw a different exception type instead?
             Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await writeTask);
 
-            // Finishing requestStream is needed for dispose to happen.
-            var moveNextTask = requestStream.MoveNext();
-            fakeCall.ReceivedMessageHandler(true, null);
-            Assert.IsFalse(moveNextTask.Result);
-
             fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
-
             AssertFinished(asyncCallServer, fakeCall, finishedTask);
         }
 
@@ -171,7 +165,6 @@ namespace Grpc.Core.Internal.Tests
         public void WriteAndWriteStatusCanRunConcurrently()
         {
             var finishedTask = asyncCallServer.ServerSideCallAsync();
-            var requestStream = new ServerRequestStream<string, string>(asyncCallServer);
             var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
 
             var writeTask = responseStream.WriteAsync("request1");
@@ -183,11 +176,6 @@ namespace Grpc.Core.Internal.Tests
             Assert.DoesNotThrowAsync(async () => await writeTask);
             Assert.DoesNotThrowAsync(async () => await writeStatusTask);
 
-            // Finishing requestStream is needed for dispose to happen.
-            var moveNextTask = requestStream.MoveNext();
-            fakeCall.ReceivedMessageHandler(true, null);
-            Assert.IsFalse(moveNextTask.Result);
-
             fakeCall.ReceivedCloseOnServerHandler(true, cancelled: true);
 
             AssertFinished(asyncCallServer, fakeCall, finishedTask);
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
index 18dbe87734..42234dcac2 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
@@ -155,7 +155,7 @@ namespace Grpc.Core.Internal
         {
             lock (myLock)
             {
-                CheckReadingAllowed();
+                GrpcPreconditions.CheckState(started);
                 if (readingDone)
                 {
                     // the last read that returns null or throws an exception is idempotent
@@ -224,11 +224,6 @@ namespace Grpc.Core.Internal
             GrpcPreconditions.CheckState(sendCompletionDelegate == null, "Only one write can be pending at a time");
         }
 
-        protected virtual void CheckReadingAllowed()
-        {
-            GrpcPreconditions.CheckState(started);
-        }
-
         protected void CheckNotCancelled()
         {
             if (cancelRequested)
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index 44f2988e21..eafe2ccab8 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -183,12 +183,6 @@ namespace Grpc.Core.Internal
             get { return false; }
         }
 
-        protected override void CheckReadingAllowed()
-        {
-            base.CheckReadingAllowed();
-            GrpcPreconditions.CheckArgument(!cancelRequested);
-        }
-
         protected override void OnAfterReleaseResources()
         {
             server.RemoveCallReference(this);
@@ -204,6 +198,14 @@ namespace Grpc.Core.Internal
             lock (myLock)
             {
                 finished = true;
+                if (streamingReadTcs == null)
+                {
+                    // if there's no pending read, readingDone=true will dispose now.
+                    // if there is a pending read, we will dispose once that read finishes.
+                    readingDone = true;
+                    streamingReadTcs = new TaskCompletionSource<TRequest>();
+                    streamingReadTcs.SetResult(default(TRequest));
+                }
                 ReleaseResourcesIfPossible();
             }
 
-- 
GitLab


From 274bcc8f0b50bfef7fe1dd5cc33ebaa6b13edba0 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Tue, 3 May 2016 17:34:54 -0700
Subject: [PATCH 339/525] Added dummy cronet api implementation so we can build
 on Jenkins.

---
 BUILD                                         | 12 +++
 Makefile                                      |  7 ++
 binding.gyp                                   |  3 +
 build.yaml                                    | 10 ++
 config.m4                                     |  5 +
 gRPC.podspec                                  |  8 ++
 grpc.def                                      |  1 +
 grpc.gemspec                                  |  6 ++
 package.xml                                   |  6 ++
 .../client/secure/cronet_channel_create.c     |  3 -
 .../cronet/transport/cronet_api_dummy.c       | 91 +++++++++++++++++++
 .../cronet/transport/cronet_transport.c       |  6 +-
 .../grpcio/grpc/_cython/imports.generated.c   |  2 +
 .../grpcio/grpc/_cython/imports.generated.h   |  4 +
 src/python/grpcio/grpc_core_dependencies.py   |  3 +
 src/ruby/ext/grpc/rb_grpc_imports.generated.c |  2 +
 src/ruby/ext/grpc/rb_grpc_imports.generated.h |  4 +
 .../core/surface/public_headers_must_be_c89.c |  1 +
 tools/doxygen/Doxyfile.core                   |  1 +
 tools/doxygen/Doxyfile.core.internal          |  6 ++
 tools/run_tests/sources_and_headers.json      | 22 ++++-
 vsprojects/vcxproj/grpc/grpc.vcxproj          |  9 ++
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters  | 39 ++++++++
 23 files changed, 243 insertions(+), 8 deletions(-)
 create mode 100644 src/core/ext/transport/cronet/transport/cronet_api_dummy.c

diff --git a/BUILD b/BUILD
index b4b10b535e..2e1d762f07 100644
--- a/BUILD
+++ b/BUILD
@@ -285,6 +285,8 @@ cc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
+    "include/grpc/support/port_platform.h",
+    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
@@ -439,6 +441,9 @@ cc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
+    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
+    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -482,6 +487,7 @@ cc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
+    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1456,6 +1462,9 @@ objc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
+    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
+    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -1499,6 +1508,7 @@ objc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
+    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1626,6 +1636,8 @@ objc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
+    "include/grpc/support/port_platform.h",
+    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
diff --git a/Makefile b/Makefile
index 922e0b0568..c6fd3b40f7 100644
--- a/Makefile
+++ b/Makefile
@@ -2623,6 +2623,9 @@ LIBGRPC_SRC = \
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
+    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
+    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -2669,6 +2672,7 @@ PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/sync_posix.h \
     include/grpc/impl/codegen/sync_win32.h \
     include/grpc/impl/codegen/time.h \
+    include/grpc/grpc_cronet.h \
     include/grpc/grpc_security.h \
     include/grpc/grpc_security_constants.h \
     include/grpc/census.h \
@@ -14313,6 +14317,9 @@ ifneq ($(OPENSSL_DEP),)
 # otherwise parallel compilation will fail if a source is compiled first.
 src/core/ext/transport/chttp2/client/secure/secure_channel_create.c: $(OPENSSL_DEP)
 src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/client/secure/cronet_channel_create.c: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/transport/cronet_api_dummy.c: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/transport/cronet_transport.c: $(OPENSSL_DEP)
 src/core/lib/http/httpcli_security_connector.c: $(OPENSSL_DEP)
 src/core/lib/security/b64.c: $(OPENSSL_DEP)
 src/core/lib/security/client_auth_filter.c: $(OPENSSL_DEP)
diff --git a/binding.gyp b/binding.gyp
index 4314ab7243..12a745ffb0 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -709,6 +709,9 @@
         'src/core/ext/client_config/uri_parser.c',
         'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
         'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+        'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
+        'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
+        'src/core/ext/transport/cronet/transport/cronet_transport.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
         'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
diff --git a/build.yaml b/build.yaml
index 441752dc3d..a7ab412722 100644
--- a/build.yaml
+++ b/build.yaml
@@ -399,6 +399,7 @@ filegroups:
   - grpc_client_config
 - name: grpc_secure
   public_headers:
+  - include/grpc/grpc_cronet.h
   - include/grpc/grpc_security.h
   - include/grpc/grpc_security_constants.h
   headers:
@@ -546,6 +547,14 @@ filegroups:
   - grpc_transport_chttp2
   - grpc_base
   - grpc_secure
+- name: grpc_transport_cronet_client_secure
+  headers:
+  - include/grpc/support/port_platform.h
+  - third_party/objective_c/Cronet/cronet_c_for_grpc.h
+  src:
+  - src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+  - src/core/ext/transport/cronet/transport/cronet_api_dummy.c
+  - src/core/ext/transport/cronet/transport/cronet_transport.c
 - name: nanopb
   headers:
   - third_party/nanopb/pb.h
@@ -733,6 +742,7 @@ libs:
   - grpc_transport_chttp2_client_secure
   - grpc_transport_chttp2_server_insecure
   - grpc_transport_chttp2_client_insecure
+  - grpc_transport_cronet_client_secure
   - grpc_lb_policy_grpclb
   - grpc_lb_policy_pick_first
   - grpc_lb_policy_round_robin
diff --git a/config.m4 b/config.m4
index 74f9ad242a..5259e679ba 100644
--- a/config.m4
+++ b/config.m4
@@ -228,6 +228,9 @@ if test "$PHP_GRPC" != "no"; then
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
+    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
+    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -566,6 +569,8 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/insecure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/secure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/transport)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/client/secure)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/transport)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/channel)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/compression)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/debug)
diff --git a/gRPC.podspec b/gRPC.podspec
index 77d35bd2c7..f57ba74519 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -287,6 +287,8 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/subchannel_call_holder.h',
                       'src/core/ext/client_config/subchannel_index.h',
                       'src/core/ext/client_config/uri_parser.h',
+                      'include/grpc/support/port_platform.h',
+                      'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                       'third_party/nanopb/pb.h',
@@ -324,6 +326,7 @@ Pod::Spec.new do |s|
                       'include/grpc/impl/codegen/sync_posix.h',
                       'include/grpc/impl/codegen/sync_win32.h',
                       'include/grpc/impl/codegen/time.h',
+                      'include/grpc/grpc_cronet.h',
                       'include/grpc/grpc_security.h',
                       'include/grpc/grpc_security_constants.h',
                       'include/grpc/census.h',
@@ -473,6 +476,9 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/uri_parser.c',
                       'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
                       'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+                      'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
+                      'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
+                      'src/core/ext/transport/cronet/transport/cronet_transport.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
                       'third_party/nanopb/pb_common.c',
@@ -629,6 +635,8 @@ Pod::Spec.new do |s|
                               'src/core/ext/client_config/subchannel_call_holder.h',
                               'src/core/ext/client_config/subchannel_index.h',
                               'src/core/ext/client_config/uri_parser.h',
+                              'include/grpc/support/port_platform.h',
+                              'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                               'third_party/nanopb/pb.h',
diff --git a/grpc.def b/grpc.def
index 61948ed1b8..09a94a6cd0 100644
--- a/grpc.def
+++ b/grpc.def
@@ -87,6 +87,7 @@ EXPORTS
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
     grpc_call_error_to_string
+    grpc_cronet_secure_channel_create
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/grpc.gemspec b/grpc.gemspec
index e68cd81da7..488f4657cd 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -168,6 +168,7 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/impl/codegen/sync_posix.h )
   s.files += %w( include/grpc/impl/codegen/sync_win32.h )
   s.files += %w( include/grpc/impl/codegen/time.h )
+  s.files += %w( include/grpc/grpc_cronet.h )
   s.files += %w( include/grpc/grpc_security.h )
   s.files += %w( include/grpc/grpc_security_constants.h )
   s.files += %w( include/grpc/census.h )
@@ -295,6 +296,8 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
   s.files += %w( src/core/ext/client_config/subchannel_index.h )
   s.files += %w( src/core/ext/client_config/uri_parser.h )
+  s.files += %w( include/grpc/support/port_platform.h )
+  s.files += %w( third_party/objective_c/Cronet/cronet_c_for_grpc.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h )
   s.files += %w( third_party/nanopb/pb.h )
@@ -453,6 +456,9 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/uri_parser.c )
   s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
   s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
+  s.files += %w( src/core/ext/transport/cronet/client/secure/cronet_channel_create.c )
+  s.files += %w( src/core/ext/transport/cronet/transport/cronet_api_dummy.c )
+  s.files += %w( src/core/ext/transport/cronet/transport/cronet_transport.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c )
   s.files += %w( third_party/nanopb/pb_common.c )
diff --git a/package.xml b/package.xml
index ffb1c56ed6..e8fd375eb6 100644
--- a/package.xml
+++ b/package.xml
@@ -175,6 +175,7 @@
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/grpc_cronet.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security_constants.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/census.h" role="src" />
@@ -302,6 +303,8 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/port_platform.h" role="src" />
+    <file baseinstalldir="/" name="third_party/objective_c/Cronet/cronet_c_for_grpc.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb.h" role="src" />
@@ -460,6 +463,9 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/cronet/client/secure/cronet_channel_create.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_api_dummy.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_transport.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
index a6cb1f70a7..df1acddcc0 100644
--- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
@@ -33,8 +33,6 @@
 
 #include <grpc/impl/codegen/port_platform.h>
 
-#ifdef GRPC_COMPILE_WITH_CRONET
-
 #include <stdio.h>
 #include <string.h>
 
@@ -69,4 +67,3 @@ GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
   return grpc_channel_create(&exec_ctx, target, args,
                              GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
 }
-#endif  // GRPC_COMPILE_WITH_CRONET
diff --git a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
new file mode 100644
index 0000000000..200f9f7daa
--- /dev/null
+++ b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
@@ -0,0 +1,91 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* This file has empty implementation of all the functions exposed by the cronet
+library, so we can build it in all environments */
+
+#include <stdbool.h>
+
+#include <grpc/support/log.h>
+
+#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
+
+#ifdef GRPC_COMPILE_WITH_CRONET
+  /* link with the real CRONET library in the build system */
+#else
+  /* Dummy implementation of cronet API just to test for build-ability */
+cronet_bidirectional_stream* cronet_bidirectional_stream_create(
+    cronet_engine* engine,
+    void* annotation,
+    cronet_bidirectional_stream_callback* callback) {
+  GPR_ASSERT(0);
+  return NULL;
+}
+
+int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_start(
+    cronet_bidirectional_stream* stream,
+    const char* url,
+    int priority,
+    const char* method,
+    const cronet_bidirectional_stream_header_array* headers,
+    bool end_of_stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
+                                     char* buffer,
+                                     int capacity) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
+                                      const char* buffer,
+                                      int count,
+                                      bool end_of_stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+#endif  /* GRPC_COMPILE_WITH_CRONET */
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index d337e84606..64bd5f5778 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -49,8 +49,6 @@
 #include "src/core/lib/transport/transport_impl.h"
 #include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
 
-#ifdef GRPC_COMPILE_WITH_CRONET
-
 #define GRPC_HEADER_SIZE_IN_BYTES 5
 
 // Global flag that gets set with GRPC_TRACE env variable
@@ -613,7 +611,7 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
 }
 
 static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                           grpc_stream *gs) {
+                           grpc_stream *gs, void *and_free_memory) {
   if (grpc_cronet_trace) {
     gpr_log(GPR_DEBUG, "Destroy stream");
   }
@@ -623,6 +621,7 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   gpr_free(s->write_buffer);
   gpr_free(s->url);
   gpr_mu_destroy(&s->recv_mu);
+  if (and_free_memory) { gpr_free(and_free_memory); }
 }
 
 static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
@@ -637,4 +636,3 @@ const grpc_transport_vtable grpc_cronet_vtable = {
     sizeof(stream_obj),     "cronet_http",     init_stream,
     set_pollset_do_nothing, perform_stream_op, NULL,
     destroy_stream,         destroy_transport, NULL};
-#endif  // GRPC_COMPILE_WITH_CRONET
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index f0a40dbb35..09551472b5 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -125,6 +125,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -395,6 +396,7 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index d5e810b7cf..54c8aaad13 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -325,6 +326,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
+extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
+#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index dab62530aa..5314329c2c 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -222,6 +222,9 @@ CORE_SOURCE_FILES = [
   'src/core/ext/client_config/uri_parser.c',
   'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
   'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+  'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
+  'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
+  'src/core/ext/transport/cronet/transport/cronet_transport.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
   'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
   'third_party/nanopb/pb_common.c',
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index bc43f9d36b..cebbe8c40f 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -125,6 +125,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -391,6 +392,7 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index b67361ca25..d7ea6c574c 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -325,6 +326,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
+extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
+#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/test/core/surface/public_headers_must_be_c89.c b/test/core/surface/public_headers_must_be_c89.c
index 0eede6c23b..65f3e1738a 100644
--- a/test/core/surface/public_headers_must_be_c89.c
+++ b/test/core/surface/public_headers_must_be_c89.c
@@ -36,6 +36,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/grpc_security_constants.h>
 #include <grpc/impl/codegen/alloc.h>
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 034d9c6e6f..a582d76a58 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -785,6 +785,7 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
+include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 1b1453f7ea..16dcd9b79a 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -785,6 +785,7 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
+include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
@@ -912,6 +913,8 @@ src/core/ext/client_config/subchannel.h \
 src/core/ext/client_config/subchannel_call_holder.h \
 src/core/ext/client_config/subchannel_index.h \
 src/core/ext/client_config/uri_parser.h \
+include/grpc/support/port_platform.h \
+third_party/objective_c/Cronet/cronet_c_for_grpc.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \
 third_party/nanopb/pb.h \
@@ -1070,6 +1073,9 @@ src/core/ext/client_config/subchannel_index.c \
 src/core/ext/client_config/uri_parser.c \
 src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
 src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
+src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
+src/core/ext/transport/cronet/transport/cronet_transport.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
 third_party/nanopb/pb_common.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index f546f3b995..e22318d238 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -4140,7 +4140,8 @@
       "grpc_transport_chttp2_client_insecure", 
       "grpc_transport_chttp2_client_secure", 
       "grpc_transport_chttp2_server_insecure", 
-      "grpc_transport_chttp2_server_secure"
+      "grpc_transport_chttp2_server_secure", 
+      "grpc_transport_cronet_client_secure"
     ], 
     "headers": [], 
     "language": "c", 
@@ -6012,6 +6013,7 @@
       "tsi"
     ], 
     "headers": [
+      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/security/auth_filters.h", 
@@ -6027,6 +6029,7 @@
     "language": "c", 
     "name": "grpc_secure", 
     "src": [
+      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/http/httpcli_security_connector.c", 
@@ -6262,6 +6265,23 @@
     "third_party": false, 
     "type": "filegroup"
   }, 
+  {
+    "deps": [], 
+    "headers": [
+      "include/grpc/support/port_platform.h", 
+      "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_transport_cronet_client_secure", 
+    "src": [
+      "include/grpc/support/port_platform.h", 
+      "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c", 
+      "src/core/ext/transport/cronet/transport/cronet_api_dummy.c", 
+      "src/core/ext/transport/cronet/transport/cronet_transport.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
   {
     "deps": [], 
     "headers": [
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 4eec05a3b1..cbf854875a 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -292,6 +292,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\census.h" />
@@ -421,6 +422,8 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h" />
+    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h" />
@@ -727,6 +730,12 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 17c88c4805..02297b7746 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -439,6 +439,15 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
+      <Filter>src\core\ext\transport\cronet\client\secure</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
+      <Filter>src\core\ext\transport\cronet\transport</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
+      <Filter>src\core\ext\transport\cronet\transport</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -573,6 +582,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h">
       <Filter>include\grpc</Filter>
     </ClInclude>
@@ -956,6 +968,12 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
       <Filter>src\core\ext\client_config</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h">
+      <Filter>third_party\objective_c\Cronet</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
@@ -1007,6 +1025,9 @@
     <Filter Include="include\grpc\impl\codegen">
       <UniqueIdentifier>{def748f5-ed2a-a9bb-40d9-c31d00f0e13b}</UniqueIdentifier>
     </Filter>
+    <Filter Include="include\grpc\support">
+      <UniqueIdentifier>{31de82ea-dc6c-73fb-a640-979b8a7b240c}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src">
       <UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
     </Filter>
@@ -1088,6 +1109,18 @@
     <Filter Include="src\core\ext\transport\chttp2\transport">
       <UniqueIdentifier>{6f34254e-e69f-c9b4-156d-5024bade5408}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\transport\cronet">
+      <UniqueIdentifier>{1e9c85e9-5522-7ef8-0017-7e19990a6194}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\core\ext\transport\cronet\client">
+      <UniqueIdentifier>{d0530883-75d9-b5f7-d594-26735a70ac7b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\core\ext\transport\cronet\client\secure">
+      <UniqueIdentifier>{4fa6fe90-b7a8-5c8f-d629-db1e68d89eed}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\core\ext\transport\cronet\transport">
+      <UniqueIdentifier>{31518af8-5860-6d0d-ff78-4059fce29ec2}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\lib">
       <UniqueIdentifier>{5b2ded3f-84a5-f6b4-2060-286c7d1dc945}</UniqueIdentifier>
     </Filter>
@@ -1130,6 +1163,12 @@
     <Filter Include="third_party\nanopb">
       <UniqueIdentifier>{93d6596d-330c-1d27-6f84-3c840e57869e}</UniqueIdentifier>
     </Filter>
+    <Filter Include="third_party\objective_c">
+      <UniqueIdentifier>{3a56a516-857e-d2aa-95cc-11685baf4e8c}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="third_party\objective_c\Cronet">
+      <UniqueIdentifier>{a165c6e3-0776-6f40-7351-d7865668e220}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
 </Project>
 
-- 
GitLab


From 6504c02568da17113c8ebce408245054ca19f0a3 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 3 May 2016 17:46:49 -0700
Subject: [PATCH 340/525] remove useless code and todos

---
 src/csharp/Grpc.Core/Internal/ServerCallHandler.cs | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
index bf9df9f783..00d82d51e8 100644
--- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
@@ -80,8 +80,6 @@ namespace Grpc.Core.Internal
             {
                 GrpcPreconditions.CheckArgument(await requestStream.MoveNext().ConfigureAwait(false));
                 var request = requestStream.Current;
-                // TODO(jtattermusch): we need to read the full stream so that native callhandle gets deallocated.
-                GrpcPreconditions.CheckArgument(!await requestStream.MoveNext().ConfigureAwait(false));
                 var result = await handler(request, context).ConfigureAwait(false);
                 status = context.Status;
                 await responseStream.WriteAsync(result).ConfigureAwait(false);
@@ -136,8 +134,6 @@ namespace Grpc.Core.Internal
             {
                 GrpcPreconditions.CheckArgument(await requestStream.MoveNext().ConfigureAwait(false));
                 var request = requestStream.Current;
-                // TODO(jtattermusch): we need to read the full stream so that native callhandle gets deallocated.
-                GrpcPreconditions.CheckArgument(!await requestStream.MoveNext().ConfigureAwait(false));
                 await handler(request, responseStream, context).ConfigureAwait(false);
                 status = context.Status;
             }
@@ -298,7 +294,6 @@ namespace Grpc.Core.Internal
                 return rpcException.Status;
             }
 
-            // TODO(jtattermusch): what is the right status code here?
             return new Status(StatusCode.Unknown, "Exception was thrown by handler.");
         }
 
-- 
GitLab


From a93c4353e79b2913769cc78cecd1da15a6b0e089 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Tue, 3 May 2016 21:23:58 -0700
Subject: [PATCH 341/525] clang-format fixes

---
 .../cronet/transport/cronet_api_dummy.c       | 22 +++++++------------
 .../cronet/transport/cronet_transport.c       |  4 +++-
 2 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
index 200f9f7daa..687026c9fd 100644
--- a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
+++ b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
@@ -41,12 +41,11 @@ library, so we can build it in all environments */
 #include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
 
 #ifdef GRPC_COMPILE_WITH_CRONET
-  /* link with the real CRONET library in the build system */
+/* link with the real CRONET library in the build system */
 #else
-  /* Dummy implementation of cronet API just to test for build-ability */
+/* Dummy implementation of cronet API just to test for build-ability */
 cronet_bidirectional_stream* cronet_bidirectional_stream_create(
-    cronet_engine* engine,
-    void* annotation,
+    cronet_engine* engine, void* annotation,
     cronet_bidirectional_stream_callback* callback) {
   GPR_ASSERT(0);
   return NULL;
@@ -58,26 +57,21 @@ int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream) {
 }
 
 int cronet_bidirectional_stream_start(
-    cronet_bidirectional_stream* stream,
-    const char* url,
-    int priority,
-    const char* method,
-    const cronet_bidirectional_stream_header_array* headers,
+    cronet_bidirectional_stream* stream, const char* url, int priority,
+    const char* method, const cronet_bidirectional_stream_header_array* headers,
     bool end_of_stream) {
   GPR_ASSERT(0);
   return 0;
 }
 
 int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
-                                     char* buffer,
-                                     int capacity) {
+                                     char* buffer, int capacity) {
   GPR_ASSERT(0);
   return 0;
 }
 
 int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
-                                      const char* buffer,
-                                      int count,
+                                      const char* buffer, int count,
                                       bool end_of_stream) {
   GPR_ASSERT(0);
   return 0;
@@ -88,4 +82,4 @@ int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream) {
   return 0;
 }
 
-#endif  /* GRPC_COMPILE_WITH_CRONET */
+#endif /* GRPC_COMPILE_WITH_CRONET */
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index 64bd5f5778..5da4b873fb 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -621,7 +621,9 @@ static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
   gpr_free(s->write_buffer);
   gpr_free(s->url);
   gpr_mu_destroy(&s->recv_mu);
-  if (and_free_memory) { gpr_free(and_free_memory); }
+  if (and_free_memory) {
+    gpr_free(and_free_memory);
+  }
 }
 
 static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
-- 
GitLab


From e5c1a154a4b3b2a3afb4efc0447a74e410cdb074 Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Tue, 3 May 2016 21:49:21 -0700
Subject: [PATCH 342/525] Fixed a compiler warning that only shows up on linux

---
 src/core/ext/transport/cronet/transport/cronet_transport.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
index 5da4b873fb..5bb085195c 100644
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -218,7 +218,7 @@ static void on_write_completed(cronet_bidirectional_stream *stream,
 static void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
   gpr_slice read_data_slice = gpr_slice_malloc((uint32_t)s->total_read_bytes);
   uint8_t *dst_p = GPR_SLICE_START_PTR(read_data_slice);
-  memcpy(dst_p, recv_data, s->total_read_bytes);
+  memcpy(dst_p, recv_data, (size_t)s->total_read_bytes);
   gpr_slice_buffer_add(&s->read_slice_buffer, read_data_slice);
   grpc_slice_buffer_stream_init(&s->sbs, &s->read_slice_buffer, 0);
   *s->recv_message = (grpc_byte_buffer *)&s->sbs;
-- 
GitLab


From 823fa1d77a80cda46e93280ab7f90149a8951297 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 3 May 2016 22:19:11 -0700
Subject: [PATCH 343/525] Exclude 1byte tests from msan

---
 test/core/end2end/gen_build_yaml.py |   8 +-
 tools/run_tests/tests.json          | 128 +++++++++++++++++++++-------
 2 files changed, 100 insertions(+), 36 deletions(-)

diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py
index cffe5995bc..3e10ad580f 100755
--- a/test/core/end2end/gen_build_yaml.py
+++ b/test/core/end2end/gen_build_yaml.py
@@ -39,9 +39,9 @@ import hashlib
 
 FixtureOptions = collections.namedtuple(
     'FixtureOptions',
-    'fullstack includes_proxy dns_resolver secure platforms ci_mac tracing')
+    'fullstack includes_proxy dns_resolver secure platforms ci_mac tracing exclude_configs')
 default_unsecure_fixture_options = FixtureOptions(
-    True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True, False)
+    True, False, True, False, ['windows', 'linux', 'mac', 'posix'], True, False, [])
 socketpair_unsecure_fixture_options = default_unsecure_fixture_options._replace(fullstack=False, dns_resolver=False)
 default_secure_fixture_options = default_unsecure_fixture_options._replace(secure=True)
 uds_fixture_options = default_unsecure_fixture_options._replace(dns_resolver=False, platforms=['linux', 'mac', 'posix'])
@@ -60,7 +60,7 @@ END2END_FIXTURES = {
     'h2_proxy': default_unsecure_fixture_options._replace(includes_proxy=True,
                                                           ci_mac=False),
     'h2_sockpair_1byte': socketpair_unsecure_fixture_options._replace(
-        ci_mac=False),
+        ci_mac=False, exclude_configs=['msan']),
     'h2_sockpair': socketpair_unsecure_fixture_options._replace(ci_mac=False),
     'h2_sockpair+trace': socketpair_unsecure_fixture_options._replace(
         ci_mac=False, tracing=True),
@@ -246,7 +246,7 @@ def main():
           {
               'name': '%s_nosec_test' % f,
               'args': [t],
-              'exclude_configs': [],
+              'exclude_configs': END2END_FIXTURES[f].exclude_configs,
               'platforms': END2END_FIXTURES[f].platforms,
               'ci_platforms': (END2END_FIXTURES[f].platforms
                                if END2END_FIXTURES[f].ci_mac else without(
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index cf1154426f..4cc407e39e 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -21531,7 +21531,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21552,7 +21554,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21573,7 +21577,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21594,7 +21600,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21615,7 +21623,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21636,7 +21646,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21657,7 +21669,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21678,7 +21692,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21699,7 +21715,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21720,7 +21738,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21741,7 +21761,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21762,7 +21784,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21783,7 +21807,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21804,7 +21830,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21825,7 +21853,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21846,7 +21876,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21867,7 +21899,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21888,7 +21922,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21909,7 +21945,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21930,7 +21968,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21951,7 +21991,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21972,7 +22014,9 @@
       "posix"
     ], 
     "cpu_cost": 0.1, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -21993,7 +22037,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22014,7 +22060,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22035,7 +22083,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22056,7 +22106,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22077,7 +22129,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22098,7 +22152,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22119,7 +22175,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22140,7 +22198,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22161,7 +22221,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
@@ -22182,7 +22244,9 @@
       "posix"
     ], 
     "cpu_cost": 1.0, 
-    "exclude_configs": [], 
+    "exclude_configs": [
+      "msan"
+    ], 
     "flaky": false, 
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
-- 
GitLab


From e6d03b828da478a7b4205c422bd95aa21f8270d4 Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Wed, 4 May 2016 09:49:42 -0700
Subject: [PATCH 344/525] Fix the build path in config

---
 tools/run_tests/stress_test/configs/python.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/stress_test/configs/python.json b/tools/run_tests/stress_test/configs/python.json
index ea5b5ba2ec..4f85de1d5f 100644
--- a/tools/run_tests/stress_test/configs/python.json
+++ b/tools/run_tests/stress_test/configs/python.json
@@ -1,7 +1,7 @@
 {
   "dockerImages": {
     "grpc_stress_python" : {
-      "buildScript": "tools/jenkins/build_interop_stress_image.sh",
+      "buildScript": "tools/run_tests/dockerize/build_interop_stress_image.sh",
       "dockerFileDir": "grpc_interop_stress_python"
     }
   },
-- 
GitLab


From ddc0eb1be2fa1427f8d422146bd56841810fc134 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 4 May 2016 10:27:12 -0700
Subject: [PATCH 345/525] Split Node examples into static and dynamic code
 generation examples

---
 examples/node/README.md                       |   10 +-
 examples/node/dynamic_codegen/README.md       |    1 +
 .../{ => dynamic_codegen}/greeter_client.js   |    2 +-
 .../{ => dynamic_codegen}/greeter_server.js   |    2 +-
 .../route_guide/README.md                     |    0
 .../route_guide/route_guide_client.js         |    2 +-
 .../route_guide/route_guide_db.json           |    0
 .../route_guide/route_guide_server.js         |    2 +-
 examples/node/package.json                    |    3 +-
 examples/node/static_codegen/README.md        |    7 +
 .../node/static_codegen/greeter_client.js     |   55 +
 .../node/static_codegen/greeter_server.js     |   59 +
 .../node/static_codegen/helloworld_grpc_pb.js |   44 +
 examples/node/static_codegen/helloworld_pb.js |  332 ++++++
 .../node/static_codegen/route_guide/README.md |    5 +
 .../route_guide/route_guide_client.js         |  247 ++++
 .../route_guide/route_guide_db.json           |  601 ++++++++++
 .../route_guide/route_guide_grpc_pb.js        |  110 ++
 .../route_guide/route_guide_pb.js             | 1033 +++++++++++++++++
 .../route_guide/route_guide_server.js         |  261 +++++
 20 files changed, 2769 insertions(+), 7 deletions(-)
 create mode 100644 examples/node/dynamic_codegen/README.md
 rename examples/node/{ => dynamic_codegen}/greeter_client.js (96%)
 rename examples/node/{ => dynamic_codegen}/greeter_server.js (97%)
 rename examples/node/{ => dynamic_codegen}/route_guide/README.md (100%)
 rename examples/node/{ => dynamic_codegen}/route_guide/route_guide_client.js (99%)
 rename examples/node/{ => dynamic_codegen}/route_guide/route_guide_db.json (100%)
 rename examples/node/{ => dynamic_codegen}/route_guide/route_guide_server.js (99%)
 create mode 100644 examples/node/static_codegen/README.md
 create mode 100644 examples/node/static_codegen/greeter_client.js
 create mode 100644 examples/node/static_codegen/greeter_server.js
 create mode 100644 examples/node/static_codegen/helloworld_grpc_pb.js
 create mode 100644 examples/node/static_codegen/helloworld_pb.js
 create mode 100644 examples/node/static_codegen/route_guide/README.md
 create mode 100644 examples/node/static_codegen/route_guide/route_guide_client.js
 create mode 100644 examples/node/static_codegen/route_guide/route_guide_db.json
 create mode 100644 examples/node/static_codegen/route_guide/route_guide_grpc_pb.js
 create mode 100644 examples/node/static_codegen/route_guide/route_guide_pb.js
 create mode 100644 examples/node/static_codegen/route_guide/route_guide_server.js

diff --git a/examples/node/README.md b/examples/node/README.md
index 28878833ce..14d779416a 100644
--- a/examples/node/README.md
+++ b/examples/node/README.md
@@ -22,18 +22,24 @@ INSTALL
 TRY IT!
 -------
 
+There are two variants of these examples: one with code dynamically generated at runtime using Protobuf.js and one with code statically generated using `protoc`. The examples behave identically, and either server can be used with either client.
+
  - Run the server
 
    ```sh
    $ # from this directory
-   $ node ./greeter_server.js &
+   $ node ./dynamic_codegen/greeter_server.js &
+   $ # OR
+   $ node ./static_codegen/greeter_server.js &
    ```
 
  - Run the client
 
    ```sh
    $ # from this directory
-   $ node ./greeter_client.js
+   $ node ./dynamic_codegen/greeter_client.js
+   $ # OR
+   $ node ./dynamic_codegen/greeter_client.js
    ```
 
 TUTORIAL
diff --git a/examples/node/dynamic_codegen/README.md b/examples/node/dynamic_codegen/README.md
new file mode 100644
index 0000000000..1a6ec17a3e
--- /dev/null
+++ b/examples/node/dynamic_codegen/README.md
@@ -0,0 +1 @@
+This is the dynamic code generation variant of the Node examples. Code in these examples is generated at runtime using Protobuf.js.
diff --git a/examples/node/greeter_client.js b/examples/node/dynamic_codegen/greeter_client.js
similarity index 96%
rename from examples/node/greeter_client.js
rename to examples/node/dynamic_codegen/greeter_client.js
index 2820acbbb7..e24fb07f4c 100644
--- a/examples/node/greeter_client.js
+++ b/examples/node/dynamic_codegen/greeter_client.js
@@ -31,7 +31,7 @@
  *
  */
 
-var PROTO_PATH = __dirname + '/../protos/helloworld.proto';
+var PROTO_PATH = __dirname + '/../../protos/helloworld.proto';
 
 var grpc = require('grpc');
 var hello_proto = grpc.load(PROTO_PATH).helloworld;
diff --git a/examples/node/greeter_server.js b/examples/node/dynamic_codegen/greeter_server.js
similarity index 97%
rename from examples/node/greeter_server.js
rename to examples/node/dynamic_codegen/greeter_server.js
index e7ad51f600..aa43e4c672 100644
--- a/examples/node/greeter_server.js
+++ b/examples/node/dynamic_codegen/greeter_server.js
@@ -31,7 +31,7 @@
  *
  */
 
-var PROTO_PATH = __dirname + '/../protos/helloworld.proto';
+var PROTO_PATH = __dirname + '/../../protos/helloworld.proto';
 
 var grpc = require('grpc');
 var hello_proto = grpc.load(PROTO_PATH).helloworld;
diff --git a/examples/node/route_guide/README.md b/examples/node/dynamic_codegen/route_guide/README.md
similarity index 100%
rename from examples/node/route_guide/README.md
rename to examples/node/dynamic_codegen/route_guide/README.md
diff --git a/examples/node/route_guide/route_guide_client.js b/examples/node/dynamic_codegen/route_guide/route_guide_client.js
similarity index 99%
rename from examples/node/route_guide/route_guide_client.js
rename to examples/node/dynamic_codegen/route_guide/route_guide_client.js
index fd05a59b63..775b9addbf 100644
--- a/examples/node/route_guide/route_guide_client.js
+++ b/examples/node/dynamic_codegen/route_guide/route_guide_client.js
@@ -31,7 +31,7 @@
  *
  */
 
-var PROTO_PATH = __dirname + '/../../protos/route_guide.proto';
+var PROTO_PATH = __dirname + '/../../../protos/route_guide.proto';
 
 var async = require('async');
 var fs = require('fs');
diff --git a/examples/node/route_guide/route_guide_db.json b/examples/node/dynamic_codegen/route_guide/route_guide_db.json
similarity index 100%
rename from examples/node/route_guide/route_guide_db.json
rename to examples/node/dynamic_codegen/route_guide/route_guide_db.json
diff --git a/examples/node/route_guide/route_guide_server.js b/examples/node/dynamic_codegen/route_guide/route_guide_server.js
similarity index 99%
rename from examples/node/route_guide/route_guide_server.js
rename to examples/node/dynamic_codegen/route_guide/route_guide_server.js
index 6c01fac246..6d59348cc9 100644
--- a/examples/node/route_guide/route_guide_server.js
+++ b/examples/node/dynamic_codegen/route_guide/route_guide_server.js
@@ -31,7 +31,7 @@
  *
  */
 
-var PROTO_PATH = __dirname + '/../../protos/route_guide.proto';
+var PROTO_PATH = __dirname + '/../../../protos/route_guide.proto';
 
 var fs = require('fs');
 var parseArgs = require('minimist');
diff --git a/examples/node/package.json b/examples/node/package.json
index d135df2464..2cae031175 100644
--- a/examples/node/package.json
+++ b/examples/node/package.json
@@ -3,7 +3,8 @@
   "version": "0.1.0",
   "dependencies": {
     "async": "^1.5.2",
-    "grpc": "0.13.0",
+    "google-protobuf": "^3.0.0-alpha.5",
+    "grpc": "^0.14.0",
     "lodash": "^4.6.1",
     "minimist": "^1.2.0"
   }
diff --git a/examples/node/static_codegen/README.md b/examples/node/static_codegen/README.md
new file mode 100644
index 0000000000..fc97d34a38
--- /dev/null
+++ b/examples/node/static_codegen/README.md
@@ -0,0 +1,7 @@
+This is the static code generation variant of the Node examples. Code in these examples is pre-generated using protoc and the Node gRPC protoc plugin, and the generated code can be found in various `*_pb.js` files. The command line sequence for generating those files is as follows (assuming that `protoc` and `grpc_node_plugin` are present, and starting in the base directory of this package):
+
+```sh
+cd ../protos
+protoc --js_out=import_style=commonjs,binary:../node/static_codegen/ --grpc_out=../node/static_codegen --plugin=protoc-gen-grpc=grpc_node_plugin helloworld.proto
+protoc --js_out=import_style=commonjs,binary:../node/static_codegen/route_guide/ --grpc_out=../node/static_codegen/route_guide/ --plugin=protoc-gen-grpc=grpc_node_plugin route_guide.proto
+```
diff --git a/examples/node/static_codegen/greeter_client.js b/examples/node/static_codegen/greeter_client.js
new file mode 100644
index 0000000000..da80cf34d8
--- /dev/null
+++ b/examples/node/static_codegen/greeter_client.js
@@ -0,0 +1,55 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var messages = require('./helloworld_pb');
+var services = require('./helloworld_grpc_pb');
+
+var grpc = require('grpc');
+
+function main() {
+  var client = new services.GreeterClient('localhost:50051',
+                                          grpc.credentials.createInsecure());
+  var user;
+  if (process.argv.length >= 3) {
+    user = process.argv[2];
+  } else {
+    user = 'world';
+  }
+  var request = new messages.HelloRequest();
+  request.setName(user);
+  client.sayHello(request, function(err, response) {
+    console.log('Greeting:', response.getMessage());
+  });
+}
+
+main();
diff --git a/examples/node/static_codegen/greeter_server.js b/examples/node/static_codegen/greeter_server.js
new file mode 100644
index 0000000000..a1591b89fa
--- /dev/null
+++ b/examples/node/static_codegen/greeter_server.js
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var messages = require('./helloworld_pb');
+var services = require('./helloworld_grpc_pb');
+
+var grpc = require('grpc');
+
+/**
+ * Implements the SayHello RPC method.
+ */
+function sayHello(call, callback) {
+  var reply = new messages.HelloReply();
+  reply.setMessage('Hello ' + call.request.getName());
+  callback(null, reply);
+}
+
+/**
+ * Starts an RPC server that receives requests for the Greeter service at the
+ * sample server port
+ */
+function main() {
+  var server = new grpc.Server();
+  server.addService(services.GreeterService, {sayHello: sayHello});
+  server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
+  server.start();
+}
+
+main();
diff --git a/examples/node/static_codegen/helloworld_grpc_pb.js b/examples/node/static_codegen/helloworld_grpc_pb.js
new file mode 100644
index 0000000000..846f8b6bf5
--- /dev/null
+++ b/examples/node/static_codegen/helloworld_grpc_pb.js
@@ -0,0 +1,44 @@
+// GENERATED CODE -- DO NOT EDIT!
+
+'use strict';
+var grpc = require('grpc');
+var helloworld_pb = require('./helloworld_pb.js');
+
+function serialize_HelloReply(arg) {
+  if (!(arg instanceof helloworld_pb.HelloReply)) {
+    throw new Error('Expected argument of type HelloReply');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_HelloReply(buffer_arg) {
+  return helloworld_pb.HelloReply.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_HelloRequest(arg) {
+  if (!(arg instanceof helloworld_pb.HelloRequest)) {
+    throw new Error('Expected argument of type HelloRequest');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_HelloRequest(buffer_arg) {
+  return helloworld_pb.HelloRequest.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+
+var GreeterService = exports.GreeterService = {
+  sayHello: {
+    path: '/helloworld.Greeter/SayHello',
+    requestStream: false,
+    responseStream: false,
+    requestType: helloworld_pb.HelloRequest,
+    responseType: helloworld_pb.HelloReply,
+    requestSerialize: serialize_HelloRequest,
+    requestDeserialize: deserialize_HelloRequest,
+    responseSerialize: serialize_HelloReply,
+    responseDeserialize: deserialize_HelloReply,
+  },
+};
+
+exports.GreeterClient = grpc.makeGenericClientConstructor(GreeterService);
diff --git a/examples/node/static_codegen/helloworld_pb.js b/examples/node/static_codegen/helloworld_pb.js
new file mode 100644
index 0000000000..6405bd90f1
--- /dev/null
+++ b/examples/node/static_codegen/helloworld_pb.js
@@ -0,0 +1,332 @@
+/**
+ * @fileoverview
+ * @enhanceable
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.helloworld.HelloReply', null, global);
+goog.exportSymbol('proto.helloworld.HelloRequest', null, global);
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.helloworld.HelloRequest = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.helloworld.HelloRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.helloworld.HelloRequest.displayName = 'proto.helloworld.HelloRequest';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.helloworld.HelloRequest.prototype.toObject = function(opt_includeInstance) {
+  return proto.helloworld.HelloRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.helloworld.HelloRequest} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.helloworld.HelloRequest.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    name: msg.getName()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.helloworld.HelloRequest}
+ */
+proto.helloworld.HelloRequest.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.helloworld.HelloRequest;
+  return proto.helloworld.HelloRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.helloworld.HelloRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.helloworld.HelloRequest}
+ */
+proto.helloworld.HelloRequest.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.helloworld.HelloRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloRequest.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.helloworld.HelloRequest.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloRequest.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.helloworld.HelloRequest} The clone.
+ */
+proto.helloworld.HelloRequest.prototype.cloneMessage = function() {
+  return /** @type {!proto.helloworld.HelloRequest} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional string name = 1;
+ * @return {string}
+ */
+proto.helloworld.HelloRequest.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+};
+
+
+/** @param {string} value  */
+proto.helloworld.HelloRequest.prototype.setName = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.helloworld.HelloReply = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.helloworld.HelloReply, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.helloworld.HelloReply.displayName = 'proto.helloworld.HelloReply';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.helloworld.HelloReply.prototype.toObject = function(opt_includeInstance) {
+  return proto.helloworld.HelloReply.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.helloworld.HelloReply} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.helloworld.HelloReply.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    message: msg.getMessage()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.helloworld.HelloReply}
+ */
+proto.helloworld.HelloReply.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.helloworld.HelloReply;
+  return proto.helloworld.HelloReply.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.helloworld.HelloReply} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.helloworld.HelloReply}
+ */
+proto.helloworld.HelloReply.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setMessage(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.helloworld.HelloReply} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloReply.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.helloworld.HelloReply.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.helloworld.HelloReply.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getMessage();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.helloworld.HelloReply} The clone.
+ */
+proto.helloworld.HelloReply.prototype.cloneMessage = function() {
+  return /** @type {!proto.helloworld.HelloReply} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional string message = 1;
+ * @return {string}
+ */
+proto.helloworld.HelloReply.prototype.getMessage = function() {
+  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+};
+
+
+/** @param {string} value  */
+proto.helloworld.HelloReply.prototype.setMessage = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+goog.object.extend(exports, proto.helloworld);
diff --git a/examples/node/static_codegen/route_guide/README.md b/examples/node/static_codegen/route_guide/README.md
new file mode 100644
index 0000000000..22bcf78986
--- /dev/null
+++ b/examples/node/static_codegen/route_guide/README.md
@@ -0,0 +1,5 @@
+#gRPC Basics: Node.js sample code
+
+The files in this folder are the samples used in [gRPC Basics: Node.js][], a detailed tutorial for using gRPC in Node.js.
+
+[gRPC Basics: Node.js]:http://www.grpc.io/docs/tutorials/basic/node.html
diff --git a/examples/node/static_codegen/route_guide/route_guide_client.js b/examples/node/static_codegen/route_guide/route_guide_client.js
new file mode 100644
index 0000000000..ecde78616b
--- /dev/null
+++ b/examples/node/static_codegen/route_guide/route_guide_client.js
@@ -0,0 +1,247 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var messages = require('./route_guide_pb');
+var services = require('./route_guide_grpc_pb');
+
+var async = require('async');
+var fs = require('fs');
+var parseArgs = require('minimist');
+var path = require('path');
+var _ = require('lodash');
+var grpc = require('grpc');
+
+var client = new services.RouteGuideClient('localhost:50051',
+                                           grpc.credentials.createInsecure());
+
+var COORD_FACTOR = 1e7;
+
+/**
+ * Run the getFeature demo. Calls getFeature with a point known to have a
+ * feature and a point known not to have a feature.
+ * @param {function} callback Called when this demo is complete
+ */
+function runGetFeature(callback) {
+  var next = _.after(2, callback);
+  function featureCallback(error, feature) {
+    if (error) {
+      callback(error);
+    }
+    var latitude = feature.getLocation().getLatitude();
+    var longitude = feature.getLocation().getLongitude();
+    if (feature.getName() === '') {
+      console.log('Found no feature at ' +
+          latitude/COORD_FACTOR + ', ' + longitude/COORD_FACTOR);
+    } else {
+      console.log('Found feature called "' + feature.getName() + '" at ' +
+          latitude/COORD_FACTOR + ', ' + longitude/COORD_FACTOR);
+    }
+    next();
+  }
+  var point1 = new messages.Point();
+  point1.setLatitude(409146138);
+  point1.setLongitude(-746188906);
+  var point2 = new messages.Point();
+  point2.setLatitude(0);
+  point2.setLongitude(0);
+  client.getFeature(point1, featureCallback);
+  client.getFeature(point2, featureCallback);
+}
+
+/**
+ * Run the listFeatures demo. Calls listFeatures with a rectangle containing all
+ * of the features in the pre-generated database. Prints each response as it
+ * comes in.
+ * @param {function} callback Called when this demo is complete
+ */
+function runListFeatures(callback) {
+  var rect = new messages.Rectangle();
+  var lo = new messages.Point();
+  lo.setLatitude(400000000);
+  lo.setLongitude(-750000000);
+  rect.setLo(lo);
+  var hi = new messages.Point();
+  hi.setLatitude(420000000);
+  hi.setLongitude(-730000000);
+  rect.setHi(hi);
+  console.log('Looking for features between 40, -75 and 42, -73');
+  var call = client.listFeatures(rect);
+  call.on('data', function(feature) {
+      console.log('Found feature called "' + feature.getName() + '" at ' +
+          feature.getLocation().getLatitude()/COORD_FACTOR + ', ' +
+          feature.getLocation().getLongitude()/COORD_FACTOR);
+  });
+  call.on('end', callback);
+}
+
+/**
+ * Run the recordRoute demo. Sends several randomly chosen points from the
+ * pre-generated feature database with a variable delay in between. Prints the
+ * statistics when they are sent from the server.
+ * @param {function} callback Called when this demo is complete
+ */
+function runRecordRoute(callback) {
+  var argv = parseArgs(process.argv, {
+    string: 'db_path'
+  });
+  fs.readFile(path.resolve(argv.db_path), function(err, data) {
+    if (err) callback(err);
+    // Transform the loaded features to Feature objects
+    var feature_list = _.map(JSON.parse(data), function(value) {
+      var feature = new messages.Feature();
+      feature.setName(value.name);
+      var location = new messages.Point();
+      location.setLatitude(value.location.latitude);
+      location.setLongitude(value.location.longitude);
+      feature.setLocation(location);
+      return feature;
+    });
+
+    var num_points = 10;
+    var call = client.recordRoute(function(error, stats) {
+      if (error) {
+        callback(error);
+      }
+      console.log('Finished trip with', stats.getPointCount(), 'points');
+      console.log('Passed', stats.getFeatureCount(), 'features');
+      console.log('Travelled', stats.getDistance(), 'meters');
+      console.log('It took', stats.getElapsedTime(), 'seconds');
+      callback();
+    });
+    /**
+     * Constructs a function that asynchronously sends the given point and then
+     * delays sending its callback
+     * @param {messages.Point} location The point to send
+     * @return {function(function)} The function that sends the point
+     */
+    function pointSender(location) {
+      /**
+       * Sends the point, then calls the callback after a delay
+       * @param {function} callback Called when complete
+       */
+      return function(callback) {
+        console.log('Visiting point ' + location.getLatitude()/COORD_FACTOR +
+            ', ' + location.getLongitude()/COORD_FACTOR);
+        call.write(location);
+        _.delay(callback, _.random(500, 1500));
+      };
+    }
+    var point_senders = [];
+    for (var i = 0; i < num_points; i++) {
+      var rand_point = feature_list[_.random(0, feature_list.length - 1)];
+      point_senders[i] = pointSender(rand_point.getLocation());
+    }
+    async.series(point_senders, function() {
+      call.end();
+    });
+  });
+}
+
+/**
+ * Run the routeChat demo. Send some chat messages, and print any chat messages
+ * that are sent from the server.
+ * @param {function} callback Called when the demo is complete
+ */
+function runRouteChat(callback) {
+  var call = client.routeChat();
+  call.on('data', function(note) {
+    console.log('Got message "' + note.getMessage() + '" at ' +
+        note.getLocation().getLatitude() + ', ' +
+        note.getLocation().getLongitude());
+  });
+
+  call.on('end', callback);
+
+  var notes = [{
+    location: {
+      latitude: 0,
+      longitude: 0
+    },
+    message: 'First message'
+  }, {
+    location: {
+      latitude: 0,
+      longitude: 1
+    },
+    message: 'Second message'
+  }, {
+    location: {
+      latitude: 1,
+      longitude: 0
+    },
+    message: 'Third message'
+  }, {
+    location: {
+      latitude: 0,
+      longitude: 0
+    },
+    message: 'Fourth message'
+  }];
+  for (var i = 0; i < notes.length; i++) {
+    var note = notes[i];
+    console.log('Sending message "' + note.message + '" at ' +
+        note.location.latitude + ', ' + note.location.longitude);
+    var noteMsg = new messages.RouteNote();
+    noteMsg.setMessage(note.message);
+    var location = new messages.Point();
+    location.setLatitude(note.location.latitude);
+    location.setLongitude(note.location.longitude);
+    noteMsg.setLocation(location);
+    call.write(noteMsg);
+  }
+  call.end();
+}
+
+/**
+ * Run all of the demos in order
+ */
+function main() {
+  async.series([
+    runGetFeature,
+    runListFeatures,
+    runRecordRoute,
+    runRouteChat
+  ]);
+}
+
+if (require.main === module) {
+  main();
+}
+
+exports.runGetFeature = runGetFeature;
+
+exports.runListFeatures = runListFeatures;
+
+exports.runRecordRoute = runRecordRoute;
+
+exports.runRouteChat = runRouteChat;
diff --git a/examples/node/static_codegen/route_guide/route_guide_db.json b/examples/node/static_codegen/route_guide/route_guide_db.json
new file mode 100644
index 0000000000..9d6a980ab7
--- /dev/null
+++ b/examples/node/static_codegen/route_guide/route_guide_db.json
@@ -0,0 +1,601 @@
+[{
+    "location": {
+        "latitude": 407838351,
+        "longitude": -746143763
+    },
+    "name": "Patriots Path, Mendham, NJ 07945, USA"
+}, {
+    "location": {
+        "latitude": 408122808,
+        "longitude": -743999179
+    },
+    "name": "101 New Jersey 10, Whippany, NJ 07981, USA"
+}, {
+    "location": {
+        "latitude": 413628156,
+        "longitude": -749015468
+    },
+    "name": "U.S. 6, Shohola, PA 18458, USA"
+}, {
+    "location": {
+        "latitude": 419999544,
+        "longitude": -740371136
+    },
+    "name": "5 Conners Road, Kingston, NY 12401, USA"
+}, {
+    "location": {
+        "latitude": 414008389,
+        "longitude": -743951297
+    },
+    "name": "Mid Hudson Psychiatric Center, New Hampton, NY 10958, USA"
+}, {
+    "location": {
+        "latitude": 419611318,
+        "longitude": -746524769
+    },
+    "name": "287 Flugertown Road, Livingston Manor, NY 12758, USA"
+}, {
+    "location": {
+        "latitude": 406109563,
+        "longitude": -742186778
+    },
+    "name": "4001 Tremley Point Road, Linden, NJ 07036, USA"
+}, {
+    "location": {
+        "latitude": 416802456,
+        "longitude": -742370183
+    },
+    "name": "352 South Mountain Road, Wallkill, NY 12589, USA"
+}, {
+    "location": {
+        "latitude": 412950425,
+        "longitude": -741077389
+    },
+    "name": "Bailey Turn Road, Harriman, NY 10926, USA"
+}, {
+    "location": {
+        "latitude": 412144655,
+        "longitude": -743949739
+    },
+    "name": "193-199 Wawayanda Road, Hewitt, NJ 07421, USA"
+}, {
+    "location": {
+        "latitude": 415736605,
+        "longitude": -742847522
+    },
+    "name": "406-496 Ward Avenue, Pine Bush, NY 12566, USA"
+}, {
+    "location": {
+        "latitude": 413843930,
+        "longitude": -740501726
+    },
+    "name": "162 Merrill Road, Highland Mills, NY 10930, USA"
+}, {
+    "location": {
+        "latitude": 410873075,
+        "longitude": -744459023
+    },
+    "name": "Clinton Road, West Milford, NJ 07480, USA"
+}, {
+    "location": {
+        "latitude": 412346009,
+        "longitude": -744026814
+    },
+    "name": "16 Old Brook Lane, Warwick, NY 10990, USA"
+}, {
+    "location": {
+        "latitude": 402948455,
+        "longitude": -747903913
+    },
+    "name": "3 Drake Lane, Pennington, NJ 08534, USA"
+}, {
+    "location": {
+        "latitude": 406337092,
+        "longitude": -740122226
+    },
+    "name": "6324 8th Avenue, Brooklyn, NY 11220, USA"
+}, {
+    "location": {
+        "latitude": 406421967,
+        "longitude": -747727624
+    },
+    "name": "1 Merck Access Road, Whitehouse Station, NJ 08889, USA"
+}, {
+    "location": {
+        "latitude": 416318082,
+        "longitude": -749677716
+    },
+    "name": "78-98 Schalck Road, Narrowsburg, NY 12764, USA"
+}, {
+    "location": {
+        "latitude": 415301720,
+        "longitude": -748416257
+    },
+    "name": "282 Lakeview Drive Road, Highland Lake, NY 12743, USA"
+}, {
+    "location": {
+        "latitude": 402647019,
+        "longitude": -747071791
+    },
+    "name": "330 Evelyn Avenue, Hamilton Township, NJ 08619, USA"
+}, {
+    "location": {
+        "latitude": 412567807,
+        "longitude": -741058078
+    },
+    "name": "New York State Reference Route 987E, Southfields, NY 10975, USA"
+}, {
+    "location": {
+        "latitude": 416855156,
+        "longitude": -744420597
+    },
+    "name": "103-271 Tempaloni Road, Ellenville, NY 12428, USA"
+}, {
+    "location": {
+        "latitude": 404663628,
+        "longitude": -744820157
+    },
+    "name": "1300 Airport Road, North Brunswick Township, NJ 08902, USA"
+}, {
+    "location": {
+        "latitude": 407113723,
+        "longitude": -749746483
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 402133926,
+        "longitude": -743613249
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 400273442,
+        "longitude": -741220915
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 411236786,
+        "longitude": -744070769
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 411633782,
+        "longitude": -746784970
+    },
+    "name": "211-225 Plains Road, Augusta, NJ 07822, USA"
+}, {
+    "location": {
+        "latitude": 415830701,
+        "longitude": -742952812
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 413447164,
+        "longitude": -748712898
+    },
+    "name": "165 Pedersen Ridge Road, Milford, PA 18337, USA"
+}, {
+    "location": {
+        "latitude": 405047245,
+        "longitude": -749800722
+    },
+    "name": "100-122 Locktown Road, Frenchtown, NJ 08825, USA"
+}, {
+    "location": {
+        "latitude": 418858923,
+        "longitude": -746156790
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 417951888,
+        "longitude": -748484944
+    },
+    "name": "650-652 Willi Hill Road, Swan Lake, NY 12783, USA"
+}, {
+    "location": {
+        "latitude": 407033786,
+        "longitude": -743977337
+    },
+    "name": "26 East 3rd Street, New Providence, NJ 07974, USA"
+}, {
+    "location": {
+        "latitude": 417548014,
+        "longitude": -740075041
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 410395868,
+        "longitude": -744972325
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 404615353,
+        "longitude": -745129803
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 406589790,
+        "longitude": -743560121
+    },
+    "name": "611 Lawrence Avenue, Westfield, NJ 07090, USA"
+}, {
+    "location": {
+        "latitude": 414653148,
+        "longitude": -740477477
+    },
+    "name": "18 Lannis Avenue, New Windsor, NY 12553, USA"
+}, {
+    "location": {
+        "latitude": 405957808,
+        "longitude": -743255336
+    },
+    "name": "82-104 Amherst Avenue, Colonia, NJ 07067, USA"
+}, {
+    "location": {
+        "latitude": 411733589,
+        "longitude": -741648093
+    },
+    "name": "170 Seven Lakes Drive, Sloatsburg, NY 10974, USA"
+}, {
+    "location": {
+        "latitude": 412676291,
+        "longitude": -742606606
+    },
+    "name": "1270 Lakes Road, Monroe, NY 10950, USA"
+}, {
+    "location": {
+        "latitude": 409224445,
+        "longitude": -748286738
+    },
+    "name": "509-535 Alphano Road, Great Meadows, NJ 07838, USA"
+}, {
+    "location": {
+        "latitude": 406523420,
+        "longitude": -742135517
+    },
+    "name": "652 Garden Street, Elizabeth, NJ 07202, USA"
+}, {
+    "location": {
+        "latitude": 401827388,
+        "longitude": -740294537
+    },
+    "name": "349 Sea Spray Court, Neptune City, NJ 07753, USA"
+}, {
+    "location": {
+        "latitude": 410564152,
+        "longitude": -743685054
+    },
+    "name": "13-17 Stanley Street, West Milford, NJ 07480, USA"
+}, {
+    "location": {
+        "latitude": 408472324,
+        "longitude": -740726046
+    },
+    "name": "47 Industrial Avenue, Teterboro, NJ 07608, USA"
+}, {
+    "location": {
+        "latitude": 412452168,
+        "longitude": -740214052
+    },
+    "name": "5 White Oak Lane, Stony Point, NY 10980, USA"
+}, {
+    "location": {
+        "latitude": 409146138,
+        "longitude": -746188906
+    },
+    "name": "Berkshire Valley Management Area Trail, Jefferson, NJ, USA"
+}, {
+    "location": {
+        "latitude": 404701380,
+        "longitude": -744781745
+    },
+    "name": "1007 Jersey Avenue, New Brunswick, NJ 08901, USA"
+}, {
+    "location": {
+        "latitude": 409642566,
+        "longitude": -746017679
+    },
+    "name": "6 East Emerald Isle Drive, Lake Hopatcong, NJ 07849, USA"
+}, {
+    "location": {
+        "latitude": 408031728,
+        "longitude": -748645385
+    },
+    "name": "1358-1474 New Jersey 57, Port Murray, NJ 07865, USA"
+}, {
+    "location": {
+        "latitude": 413700272,
+        "longitude": -742135189
+    },
+    "name": "367 Prospect Road, Chester, NY 10918, USA"
+}, {
+    "location": {
+        "latitude": 404310607,
+        "longitude": -740282632
+    },
+    "name": "10 Simon Lake Drive, Atlantic Highlands, NJ 07716, USA"
+}, {
+    "location": {
+        "latitude": 409319800,
+        "longitude": -746201391
+    },
+    "name": "11 Ward Street, Mount Arlington, NJ 07856, USA"
+}, {
+    "location": {
+        "latitude": 406685311,
+        "longitude": -742108603
+    },
+    "name": "300-398 Jefferson Avenue, Elizabeth, NJ 07201, USA"
+}, {
+    "location": {
+        "latitude": 419018117,
+        "longitude": -749142781
+    },
+    "name": "43 Dreher Road, Roscoe, NY 12776, USA"
+}, {
+    "location": {
+        "latitude": 412856162,
+        "longitude": -745148837
+    },
+    "name": "Swan Street, Pine Island, NY 10969, USA"
+}, {
+    "location": {
+        "latitude": 416560744,
+        "longitude": -746721964
+    },
+    "name": "66 Pleasantview Avenue, Monticello, NY 12701, USA"
+}, {
+    "location": {
+        "latitude": 405314270,
+        "longitude": -749836354
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 414219548,
+        "longitude": -743327440
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 415534177,
+        "longitude": -742900616
+    },
+    "name": "565 Winding Hills Road, Montgomery, NY 12549, USA"
+}, {
+    "location": {
+        "latitude": 406898530,
+        "longitude": -749127080
+    },
+    "name": "231 Rocky Run Road, Glen Gardner, NJ 08826, USA"
+}, {
+    "location": {
+        "latitude": 407586880,
+        "longitude": -741670168
+    },
+    "name": "100 Mount Pleasant Avenue, Newark, NJ 07104, USA"
+}, {
+    "location": {
+        "latitude": 400106455,
+        "longitude": -742870190
+    },
+    "name": "517-521 Huntington Drive, Manchester Township, NJ 08759, USA"
+}, {
+    "location": {
+        "latitude": 400066188,
+        "longitude": -746793294
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 418803880,
+        "longitude": -744102673
+    },
+    "name": "40 Mountain Road, Napanoch, NY 12458, USA"
+}, {
+    "location": {
+        "latitude": 414204288,
+        "longitude": -747895140
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 414777405,
+        "longitude": -740615601
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 415464475,
+        "longitude": -747175374
+    },
+    "name": "48 North Road, Forestburgh, NY 12777, USA"
+}, {
+    "location": {
+        "latitude": 404062378,
+        "longitude": -746376177
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 405688272,
+        "longitude": -749285130
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 400342070,
+        "longitude": -748788996
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 401809022,
+        "longitude": -744157964
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 404226644,
+        "longitude": -740517141
+    },
+    "name": "9 Thompson Avenue, Leonardo, NJ 07737, USA"
+}, {
+    "location": {
+        "latitude": 410322033,
+        "longitude": -747871659
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 407100674,
+        "longitude": -747742727
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 418811433,
+        "longitude": -741718005
+    },
+    "name": "213 Bush Road, Stone Ridge, NY 12484, USA"
+}, {
+    "location": {
+        "latitude": 415034302,
+        "longitude": -743850945
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 411349992,
+        "longitude": -743694161
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 404839914,
+        "longitude": -744759616
+    },
+    "name": "1-17 Bergen Court, New Brunswick, NJ 08901, USA"
+}, {
+    "location": {
+        "latitude": 414638017,
+        "longitude": -745957854
+    },
+    "name": "35 Oakland Valley Road, Cuddebackville, NY 12729, USA"
+}, {
+    "location": {
+        "latitude": 412127800,
+        "longitude": -740173578
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 401263460,
+        "longitude": -747964303
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 412843391,
+        "longitude": -749086026
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 418512773,
+        "longitude": -743067823
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 404318328,
+        "longitude": -740835638
+    },
+    "name": "42-102 Main Street, Belford, NJ 07718, USA"
+}, {
+    "location": {
+        "latitude": 419020746,
+        "longitude": -741172328
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 404080723,
+        "longitude": -746119569
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 401012643,
+        "longitude": -744035134
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 404306372,
+        "longitude": -741079661
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 403966326,
+        "longitude": -748519297
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 405002031,
+        "longitude": -748407866
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 409532885,
+        "longitude": -742200683
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 416851321,
+        "longitude": -742674555
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 406411633,
+        "longitude": -741722051
+    },
+    "name": "3387 Richmond Terrace, Staten Island, NY 10303, USA"
+}, {
+    "location": {
+        "latitude": 413069058,
+        "longitude": -744597778
+    },
+    "name": "261 Van Sickle Road, Goshen, NY 10924, USA"
+}, {
+    "location": {
+        "latitude": 418465462,
+        "longitude": -746859398
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 411733222,
+        "longitude": -744228360
+    },
+    "name": ""
+}, {
+    "location": {
+        "latitude": 410248224,
+        "longitude": -747127767
+    },
+    "name": "3 Hasta Way, Newton, NJ 07860, USA"
+}]
diff --git a/examples/node/static_codegen/route_guide/route_guide_grpc_pb.js b/examples/node/static_codegen/route_guide/route_guide_grpc_pb.js
new file mode 100644
index 0000000000..1dd71331db
--- /dev/null
+++ b/examples/node/static_codegen/route_guide/route_guide_grpc_pb.js
@@ -0,0 +1,110 @@
+// GENERATED CODE -- DO NOT EDIT!
+
+'use strict';
+var grpc = require('grpc');
+var route_guide_pb = require('./route_guide_pb.js');
+
+function serialize_Feature(arg) {
+  if (!(arg instanceof route_guide_pb.Feature)) {
+    throw new Error('Expected argument of type Feature');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_Feature(buffer_arg) {
+  return route_guide_pb.Feature.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_Point(arg) {
+  if (!(arg instanceof route_guide_pb.Point)) {
+    throw new Error('Expected argument of type Point');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_Point(buffer_arg) {
+  return route_guide_pb.Point.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_Rectangle(arg) {
+  if (!(arg instanceof route_guide_pb.Rectangle)) {
+    throw new Error('Expected argument of type Rectangle');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_Rectangle(buffer_arg) {
+  return route_guide_pb.Rectangle.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_RouteNote(arg) {
+  if (!(arg instanceof route_guide_pb.RouteNote)) {
+    throw new Error('Expected argument of type RouteNote');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_RouteNote(buffer_arg) {
+  return route_guide_pb.RouteNote.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_RouteSummary(arg) {
+  if (!(arg instanceof route_guide_pb.RouteSummary)) {
+    throw new Error('Expected argument of type RouteSummary');
+  }
+  return new Buffer(arg.serializeBinary());
+}
+
+function deserialize_RouteSummary(buffer_arg) {
+  return route_guide_pb.RouteSummary.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+
+var RouteGuideService = exports.RouteGuideService = {
+  getFeature: {
+    path: '/routeguide.RouteGuide/GetFeature',
+    requestStream: false,
+    responseStream: false,
+    requestType: route_guide_pb.Point,
+    responseType: route_guide_pb.Feature,
+    requestSerialize: serialize_Point,
+    requestDeserialize: deserialize_Point,
+    responseSerialize: serialize_Feature,
+    responseDeserialize: deserialize_Feature,
+  },
+  listFeatures: {
+    path: '/routeguide.RouteGuide/ListFeatures',
+    requestStream: false,
+    responseStream: true,
+    requestType: route_guide_pb.Rectangle,
+    responseType: route_guide_pb.Feature,
+    requestSerialize: serialize_Rectangle,
+    requestDeserialize: deserialize_Rectangle,
+    responseSerialize: serialize_Feature,
+    responseDeserialize: deserialize_Feature,
+  },
+  recordRoute: {
+    path: '/routeguide.RouteGuide/RecordRoute',
+    requestStream: true,
+    responseStream: false,
+    requestType: route_guide_pb.Point,
+    responseType: route_guide_pb.RouteSummary,
+    requestSerialize: serialize_Point,
+    requestDeserialize: deserialize_Point,
+    responseSerialize: serialize_RouteSummary,
+    responseDeserialize: deserialize_RouteSummary,
+  },
+  routeChat: {
+    path: '/routeguide.RouteGuide/RouteChat',
+    requestStream: true,
+    responseStream: true,
+    requestType: route_guide_pb.RouteNote,
+    responseType: route_guide_pb.RouteNote,
+    requestSerialize: serialize_RouteNote,
+    requestDeserialize: deserialize_RouteNote,
+    responseSerialize: serialize_RouteNote,
+    responseDeserialize: deserialize_RouteNote,
+  },
+};
+
+exports.RouteGuideClient = grpc.makeGenericClientConstructor(RouteGuideService);
diff --git a/examples/node/static_codegen/route_guide/route_guide_pb.js b/examples/node/static_codegen/route_guide/route_guide_pb.js
new file mode 100644
index 0000000000..f604cd6d50
--- /dev/null
+++ b/examples/node/static_codegen/route_guide/route_guide_pb.js
@@ -0,0 +1,1033 @@
+/**
+ * @fileoverview
+ * @enhanceable
+ * @public
+ */
+// GENERATED CODE -- DO NOT EDIT!
+
+var jspb = require('google-protobuf');
+var goog = jspb;
+var global = Function('return this')();
+
+goog.exportSymbol('proto.routeguide.Feature', null, global);
+goog.exportSymbol('proto.routeguide.Point', null, global);
+goog.exportSymbol('proto.routeguide.Rectangle', null, global);
+goog.exportSymbol('proto.routeguide.RouteNote', null, global);
+goog.exportSymbol('proto.routeguide.RouteSummary', null, global);
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.Point = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.Point, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.routeguide.Point.displayName = 'proto.routeguide.Point';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.routeguide.Point.prototype.toObject = function(opt_includeInstance) {
+  return proto.routeguide.Point.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.routeguide.Point} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.routeguide.Point.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    latitude: msg.getLatitude(),
+    longitude: msg.getLongitude()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.routeguide.Point}
+ */
+proto.routeguide.Point.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.routeguide.Point;
+  return proto.routeguide.Point.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.routeguide.Point} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.routeguide.Point}
+ */
+proto.routeguide.Point.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt32());
+      msg.setLatitude(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readInt32());
+      msg.setLongitude(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.Point} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.Point.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.routeguide.Point.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.Point.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getLatitude();
+  if (f !== 0) {
+    writer.writeInt32(
+      1,
+      f
+    );
+  }
+  f = this.getLongitude();
+  if (f !== 0) {
+    writer.writeInt32(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.routeguide.Point} The clone.
+ */
+proto.routeguide.Point.prototype.cloneMessage = function() {
+  return /** @type {!proto.routeguide.Point} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int32 latitude = 1;
+ * @return {number}
+ */
+proto.routeguide.Point.prototype.getLatitude = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value  */
+proto.routeguide.Point.prototype.setLatitude = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+/**
+ * optional int32 longitude = 2;
+ * @return {number}
+ */
+proto.routeguide.Point.prototype.getLongitude = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+};
+
+
+/** @param {number} value  */
+proto.routeguide.Point.prototype.setLongitude = function(value) {
+  jspb.Message.setField(this, 2, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.Rectangle = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.Rectangle, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.routeguide.Rectangle.displayName = 'proto.routeguide.Rectangle';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.routeguide.Rectangle.prototype.toObject = function(opt_includeInstance) {
+  return proto.routeguide.Rectangle.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.routeguide.Rectangle} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.routeguide.Rectangle.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    lo: (f = msg.getLo()) && proto.routeguide.Point.toObject(includeInstance, f),
+    hi: (f = msg.getHi()) && proto.routeguide.Point.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.routeguide.Rectangle}
+ */
+proto.routeguide.Rectangle.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.routeguide.Rectangle;
+  return proto.routeguide.Rectangle.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.routeguide.Rectangle} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.routeguide.Rectangle}
+ */
+proto.routeguide.Rectangle.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.routeguide.Point;
+      reader.readMessage(value,proto.routeguide.Point.deserializeBinaryFromReader);
+      msg.setLo(value);
+      break;
+    case 2:
+      var value = new proto.routeguide.Point;
+      reader.readMessage(value,proto.routeguide.Point.deserializeBinaryFromReader);
+      msg.setHi(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.Rectangle} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.Rectangle.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.routeguide.Rectangle.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.Rectangle.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getLo();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.routeguide.Point.serializeBinaryToWriter
+    );
+  }
+  f = this.getHi();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.routeguide.Point.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.routeguide.Rectangle} The clone.
+ */
+proto.routeguide.Rectangle.prototype.cloneMessage = function() {
+  return /** @type {!proto.routeguide.Rectangle} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional Point lo = 1;
+ * @return {proto.routeguide.Point}
+ */
+proto.routeguide.Rectangle.prototype.getLo = function() {
+  return /** @type{proto.routeguide.Point} */ (
+    jspb.Message.getWrapperField(this, proto.routeguide.Point, 1));
+};
+
+
+/** @param {proto.routeguide.Point|undefined} value  */
+proto.routeguide.Rectangle.prototype.setLo = function(value) {
+  jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+proto.routeguide.Rectangle.prototype.clearLo = function() {
+  this.setLo(undefined);
+};
+
+
+/**
+ * optional Point hi = 2;
+ * @return {proto.routeguide.Point}
+ */
+proto.routeguide.Rectangle.prototype.getHi = function() {
+  return /** @type{proto.routeguide.Point} */ (
+    jspb.Message.getWrapperField(this, proto.routeguide.Point, 2));
+};
+
+
+/** @param {proto.routeguide.Point|undefined} value  */
+proto.routeguide.Rectangle.prototype.setHi = function(value) {
+  jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+proto.routeguide.Rectangle.prototype.clearHi = function() {
+  this.setHi(undefined);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.Feature = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.Feature, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.routeguide.Feature.displayName = 'proto.routeguide.Feature';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.routeguide.Feature.prototype.toObject = function(opt_includeInstance) {
+  return proto.routeguide.Feature.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.routeguide.Feature} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.routeguide.Feature.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    name: msg.getName(),
+    location: (f = msg.getLocation()) && proto.routeguide.Point.toObject(includeInstance, f)
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.routeguide.Feature}
+ */
+proto.routeguide.Feature.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.routeguide.Feature;
+  return proto.routeguide.Feature.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.routeguide.Feature} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.routeguide.Feature}
+ */
+proto.routeguide.Feature.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setName(value);
+      break;
+    case 2:
+      var value = new proto.routeguide.Point;
+      reader.readMessage(value,proto.routeguide.Point.deserializeBinaryFromReader);
+      msg.setLocation(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.Feature} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.Feature.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.routeguide.Feature.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.Feature.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getName();
+  if (f.length > 0) {
+    writer.writeString(
+      1,
+      f
+    );
+  }
+  f = this.getLocation();
+  if (f != null) {
+    writer.writeMessage(
+      2,
+      f,
+      proto.routeguide.Point.serializeBinaryToWriter
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.routeguide.Feature} The clone.
+ */
+proto.routeguide.Feature.prototype.cloneMessage = function() {
+  return /** @type {!proto.routeguide.Feature} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional string name = 1;
+ * @return {string}
+ */
+proto.routeguide.Feature.prototype.getName = function() {
+  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
+};
+
+
+/** @param {string} value  */
+proto.routeguide.Feature.prototype.setName = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+/**
+ * optional Point location = 2;
+ * @return {proto.routeguide.Point}
+ */
+proto.routeguide.Feature.prototype.getLocation = function() {
+  return /** @type{proto.routeguide.Point} */ (
+    jspb.Message.getWrapperField(this, proto.routeguide.Point, 2));
+};
+
+
+/** @param {proto.routeguide.Point|undefined} value  */
+proto.routeguide.Feature.prototype.setLocation = function(value) {
+  jspb.Message.setWrapperField(this, 2, value);
+};
+
+
+proto.routeguide.Feature.prototype.clearLocation = function() {
+  this.setLocation(undefined);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.RouteNote = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.RouteNote, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.routeguide.RouteNote.displayName = 'proto.routeguide.RouteNote';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.routeguide.RouteNote.prototype.toObject = function(opt_includeInstance) {
+  return proto.routeguide.RouteNote.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.routeguide.RouteNote} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.routeguide.RouteNote.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    location: (f = msg.getLocation()) && proto.routeguide.Point.toObject(includeInstance, f),
+    message: msg.getMessage()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.routeguide.RouteNote}
+ */
+proto.routeguide.RouteNote.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.routeguide.RouteNote;
+  return proto.routeguide.RouteNote.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.routeguide.RouteNote} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.routeguide.RouteNote}
+ */
+proto.routeguide.RouteNote.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = new proto.routeguide.Point;
+      reader.readMessage(value,proto.routeguide.Point.deserializeBinaryFromReader);
+      msg.setLocation(value);
+      break;
+    case 2:
+      var value = /** @type {string} */ (reader.readString());
+      msg.setMessage(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.RouteNote} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.RouteNote.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.routeguide.RouteNote.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.RouteNote.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getLocation();
+  if (f != null) {
+    writer.writeMessage(
+      1,
+      f,
+      proto.routeguide.Point.serializeBinaryToWriter
+    );
+  }
+  f = this.getMessage();
+  if (f.length > 0) {
+    writer.writeString(
+      2,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.routeguide.RouteNote} The clone.
+ */
+proto.routeguide.RouteNote.prototype.cloneMessage = function() {
+  return /** @type {!proto.routeguide.RouteNote} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional Point location = 1;
+ * @return {proto.routeguide.Point}
+ */
+proto.routeguide.RouteNote.prototype.getLocation = function() {
+  return /** @type{proto.routeguide.Point} */ (
+    jspb.Message.getWrapperField(this, proto.routeguide.Point, 1));
+};
+
+
+/** @param {proto.routeguide.Point|undefined} value  */
+proto.routeguide.RouteNote.prototype.setLocation = function(value) {
+  jspb.Message.setWrapperField(this, 1, value);
+};
+
+
+proto.routeguide.RouteNote.prototype.clearLocation = function() {
+  this.setLocation(undefined);
+};
+
+
+/**
+ * optional string message = 2;
+ * @return {string}
+ */
+proto.routeguide.RouteNote.prototype.getMessage = function() {
+  return /** @type {string} */ (jspb.Message.getFieldProto3(this, 2, ""));
+};
+
+
+/** @param {string} value  */
+proto.routeguide.RouteNote.prototype.setMessage = function(value) {
+  jspb.Message.setField(this, 2, value);
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.routeguide.RouteSummary = function(opt_data) {
+  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.routeguide.RouteSummary, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+  proto.routeguide.RouteSummary.displayName = 'proto.routeguide.RouteSummary';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ *     for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.routeguide.RouteSummary.prototype.toObject = function(opt_includeInstance) {
+  return proto.routeguide.RouteSummary.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ *     instance for transitional soy proto support:
+ *     http://goto/soy-param-migration
+ * @param {!proto.routeguide.RouteSummary} msg The msg instance to transform.
+ * @return {!Object}
+ */
+proto.routeguide.RouteSummary.toObject = function(includeInstance, msg) {
+  var f, obj = {
+    pointCount: msg.getPointCount(),
+    featureCount: msg.getFeatureCount(),
+    distance: msg.getDistance(),
+    elapsedTime: msg.getElapsedTime()
+  };
+
+  if (includeInstance) {
+    obj.$jspbMessageInstance = msg
+  }
+  return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.routeguide.RouteSummary}
+ */
+proto.routeguide.RouteSummary.deserializeBinary = function(bytes) {
+  var reader = new jspb.BinaryReader(bytes);
+  var msg = new proto.routeguide.RouteSummary;
+  return proto.routeguide.RouteSummary.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.routeguide.RouteSummary} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.routeguide.RouteSummary}
+ */
+proto.routeguide.RouteSummary.deserializeBinaryFromReader = function(msg, reader) {
+  while (reader.nextField()) {
+    if (reader.isEndGroup()) {
+      break;
+    }
+    var field = reader.getFieldNumber();
+    switch (field) {
+    case 1:
+      var value = /** @type {number} */ (reader.readInt32());
+      msg.setPointCount(value);
+      break;
+    case 2:
+      var value = /** @type {number} */ (reader.readInt32());
+      msg.setFeatureCount(value);
+      break;
+    case 3:
+      var value = /** @type {number} */ (reader.readInt32());
+      msg.setDistance(value);
+      break;
+    case 4:
+      var value = /** @type {number} */ (reader.readInt32());
+      msg.setElapsedTime(value);
+      break;
+    default:
+      reader.skipField();
+      break;
+    }
+  }
+  return msg;
+};
+
+
+/**
+ * Class method variant: serializes the given message to binary data
+ * (in protobuf wire format), writing to the given BinaryWriter.
+ * @param {!proto.routeguide.RouteSummary} message
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.RouteSummary.serializeBinaryToWriter = function(message, writer) {
+  message.serializeBinaryToWriter(writer);
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.routeguide.RouteSummary.prototype.serializeBinary = function() {
+  var writer = new jspb.BinaryWriter();
+  this.serializeBinaryToWriter(writer);
+  return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format),
+ * writing to the given BinaryWriter.
+ * @param {!jspb.BinaryWriter} writer
+ */
+proto.routeguide.RouteSummary.prototype.serializeBinaryToWriter = function (writer) {
+  var f = undefined;
+  f = this.getPointCount();
+  if (f !== 0) {
+    writer.writeInt32(
+      1,
+      f
+    );
+  }
+  f = this.getFeatureCount();
+  if (f !== 0) {
+    writer.writeInt32(
+      2,
+      f
+    );
+  }
+  f = this.getDistance();
+  if (f !== 0) {
+    writer.writeInt32(
+      3,
+      f
+    );
+  }
+  f = this.getElapsedTime();
+  if (f !== 0) {
+    writer.writeInt32(
+      4,
+      f
+    );
+  }
+};
+
+
+/**
+ * Creates a deep clone of this proto. No data is shared with the original.
+ * @return {!proto.routeguide.RouteSummary} The clone.
+ */
+proto.routeguide.RouteSummary.prototype.cloneMessage = function() {
+  return /** @type {!proto.routeguide.RouteSummary} */ (jspb.Message.cloneMessage(this));
+};
+
+
+/**
+ * optional int32 point_count = 1;
+ * @return {number}
+ */
+proto.routeguide.RouteSummary.prototype.getPointCount = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 1, 0));
+};
+
+
+/** @param {number} value  */
+proto.routeguide.RouteSummary.prototype.setPointCount = function(value) {
+  jspb.Message.setField(this, 1, value);
+};
+
+
+/**
+ * optional int32 feature_count = 2;
+ * @return {number}
+ */
+proto.routeguide.RouteSummary.prototype.getFeatureCount = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 2, 0));
+};
+
+
+/** @param {number} value  */
+proto.routeguide.RouteSummary.prototype.setFeatureCount = function(value) {
+  jspb.Message.setField(this, 2, value);
+};
+
+
+/**
+ * optional int32 distance = 3;
+ * @return {number}
+ */
+proto.routeguide.RouteSummary.prototype.getDistance = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 3, 0));
+};
+
+
+/** @param {number} value  */
+proto.routeguide.RouteSummary.prototype.setDistance = function(value) {
+  jspb.Message.setField(this, 3, value);
+};
+
+
+/**
+ * optional int32 elapsed_time = 4;
+ * @return {number}
+ */
+proto.routeguide.RouteSummary.prototype.getElapsedTime = function() {
+  return /** @type {number} */ (jspb.Message.getFieldProto3(this, 4, 0));
+};
+
+
+/** @param {number} value  */
+proto.routeguide.RouteSummary.prototype.setElapsedTime = function(value) {
+  jspb.Message.setField(this, 4, value);
+};
+
+
+goog.object.extend(exports, proto.routeguide);
diff --git a/examples/node/static_codegen/route_guide/route_guide_server.js b/examples/node/static_codegen/route_guide/route_guide_server.js
new file mode 100644
index 0000000000..53628fb046
--- /dev/null
+++ b/examples/node/static_codegen/route_guide/route_guide_server.js
@@ -0,0 +1,261 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+var messages = require('./route_guide_pb');
+var services = require('./route_guide_grpc_pb');
+
+var fs = require('fs');
+var parseArgs = require('minimist');
+var path = require('path');
+var _ = require('lodash');
+var grpc = require('grpc');
+
+var COORD_FACTOR = 1e7;
+
+/**
+ * For simplicity, a point is a record type that looks like
+ * {latitude: number, longitude: number}, and a feature is a record type that
+ * looks like {name: string, location: point}. feature objects with name===''
+ * are points with no feature.
+ */
+
+/**
+ * List of feature objects at points that have been requested so far.
+ */
+var feature_list = [];
+
+/**
+ * Get a feature object at the given point, or creates one if it does not exist.
+ * @param {point} point The point to check
+ * @return {feature} The feature object at the point. Note that an empty name
+ *     indicates no feature
+ */
+function checkFeature(point) {
+  var feature;
+  // Check if there is already a feature object for the given point
+  for (var i = 0; i < feature_list.length; i++) {
+    feature = feature_list[i];
+    if (feature.getLocation().getLatitude() === point.getLatitude() &&
+        feature.getLocation().getLongitude() === point.getLongitude()) {
+      return feature;
+    }
+  }
+  var name = '';
+  feature = new messages.Feature();
+  feature.setName(name);
+  feature.setLocation(point);
+  return feature;
+}
+
+/**
+ * getFeature request handler. Gets a request with a point, and responds with a
+ * feature object indicating whether there is a feature at that point.
+ * @param {EventEmitter} call Call object for the handler to process
+ * @param {function(Error, feature)} callback Response callback
+ */
+function getFeature(call, callback) {
+  callback(null, checkFeature(call.request));
+}
+
+/**
+ * listFeatures request handler. Gets a request with two points, and responds
+ * with a stream of all features in the bounding box defined by those points.
+ * @param {Writable} call Writable stream for responses with an additional
+ *     request property for the request value.
+ */
+function listFeatures(call) {
+  var lo = call.request.getLo();
+  var hi = call.request.getHi();
+  var left = _.min([lo.getLongitude(), hi.getLongitude()]);
+  var right = _.max([lo.getLongitude(), hi.getLongitude()]);
+  var top = _.max([lo.getLatitude(), hi.getLatitude()]);
+  var bottom = _.min([lo.getLatitude(), hi.getLatitude()]);
+  // For each feature, check if it is in the given bounding box
+  _.each(feature_list, function(feature) {
+    if (feature.getName() === '') {
+      return;
+    }
+    if (feature.getLocation().getLongitude() >= left &&
+        feature.getLocation().getLongitude() <= right &&
+        feature.getLocation().getLatitude() >= bottom &&
+        feature.getLocation().getLatitude() <= top) {
+      call.write(feature);
+    }
+  });
+  call.end();
+}
+
+/**
+ * Calculate the distance between two points using the "haversine" formula.
+ * This code was taken from http://www.movable-type.co.uk/scripts/latlong.html.
+ * @param start The starting point
+ * @param end The end point
+ * @return The distance between the points in meters
+ */
+function getDistance(start, end) {
+  function toRadians(num) {
+    return num * Math.PI / 180;
+  }
+  var lat1 = start.getLatitude() / COORD_FACTOR;
+  var lat2 = end.getLatitude() / COORD_FACTOR;
+  var lon1 = start.getLongitude() / COORD_FACTOR;
+  var lon2 = end.getLongitude() / COORD_FACTOR;
+  var R = 6371000; // metres
+  var φ1 = toRadians(lat1);
+  var φ2 = toRadians(lat2);
+  var Δφ = toRadians(lat2-lat1);
+  var Δλ = toRadians(lon2-lon1);
+
+  var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
+      Math.cos(φ1) * Math.cos(φ2) *
+      Math.sin(Δλ/2) * Math.sin(Δλ/2);
+  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+
+  return R * c;
+}
+
+/**
+ * recordRoute handler. Gets a stream of points, and responds with statistics
+ * about the "trip": number of points, number of known features visited, total
+ * distance traveled, and total time spent.
+ * @param {Readable} call The request point stream.
+ * @param {function(Error, routeSummary)} callback The callback to pass the
+ *     response to
+ */
+function recordRoute(call, callback) {
+  var point_count = 0;
+  var feature_count = 0;
+  var distance = 0;
+  var previous = null;
+  // Start a timer
+  var start_time = process.hrtime();
+  call.on('data', function(point) {
+    point_count += 1;
+    if (checkFeature(point).name !== '') {
+      feature_count += 1;
+    }
+    /* For each point after the first, add the incremental distance from the
+     * previous point to the total distance value */
+    if (previous != null) {
+      distance += getDistance(previous, point);
+    }
+    previous = point;
+  });
+  call.on('end', function() {
+    var summary = new messages.RouteSummary();
+    summary.setPointCount(point_count);
+    summary.setFeatureCount(feature_count);
+    // Cast the distance to an integer
+    summary.setDistance(distance|0);
+    // End the timer
+    summary.setElapsedTime(process.hrtime(start_time)[0]);
+    callback(null, summary);
+  });
+}
+
+var route_notes = {};
+
+/**
+ * Turn the point into a dictionary key.
+ * @param {point} point The point to use
+ * @return {string} The key for an object
+ */
+function pointKey(point) {
+  return point.getLatitude() + ' ' + point.getLongitude();
+}
+
+/**
+ * routeChat handler. Receives a stream of message/location pairs, and responds
+ * with a stream of all previous messages at each of those locations.
+ * @param {Duplex} call The stream for incoming and outgoing messages
+ */
+function routeChat(call) {
+  call.on('data', function(note) {
+    var key = pointKey(note.getLocation());
+    /* For each note sent, respond with all previous notes that correspond to
+     * the same point */
+    if (route_notes.hasOwnProperty(key)) {
+      _.each(route_notes[key], function(note) {
+        call.write(note);
+      });
+    } else {
+      route_notes[key] = [];
+    }
+    // Then add the new note to the list
+    route_notes[key].push(note);
+  });
+  call.on('end', function() {
+    call.end();
+  });
+}
+
+/**
+ * Get a new server with the handler functions in this file bound to the methods
+ * it serves.
+ * @return {Server} The new server object
+ */
+function getServer() {
+  var server = new grpc.Server();
+  server.addService(services.RouteGuideService, {
+    getFeature: getFeature,
+    listFeatures: listFeatures,
+    recordRoute: recordRoute,
+    routeChat: routeChat
+  });
+  return server;
+}
+
+if (require.main === module) {
+  // If this is run as a script, start a server on an unused port
+  var routeServer = getServer();
+  routeServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
+  var argv = parseArgs(process.argv, {
+    string: 'db_path'
+  });
+  fs.readFile(path.resolve(argv.db_path), function(err, data) {
+    if (err) throw err;
+    // Transform the loaded features to Feature objects
+    feature_list = _.map(JSON.parse(data), function(value) {
+      var feature = new messages.Feature();
+      feature.setName(value.name);
+      var location = new messages.Point();
+      location.setLatitude(value.location.latitude);
+      location.setLongitude(value.location.longitude);
+      feature.setLocation(location);
+      return feature;
+    });
+    routeServer.start();
+  });
+}
+
+exports.getServer = getServer;
-- 
GitLab


From bc846725376821d62ac35bd21fc542fb4c712930 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Wed, 4 May 2016 10:53:50 -0700
Subject: [PATCH 346/525] Use unlimited default for max header size until
 receiving new settings from the peer.  This both complies with the RFC and
 ensures that if the user sets a higher limit than the 16K default, we won't
 incorrectly reject data sent before settings are exchanged.

Also fix proxy tests.
---
 .../chttp2/transport/chttp2_transport.c       |  4 ++++
 .../chttp2/transport/frame_settings.c         |  3 +--
 src/core/lib/iomgr/tcp_posix.c                |  4 ++--
 test/core/end2end/fixtures/h2_proxy.c         | 12 +++++++-----
 test/core/end2end/fixtures/h2_ssl_proxy.c     | 19 +++++++++++--------
 test/core/end2end/fixtures/proxy.c            |  7 ++++---
 test/core/end2end/fixtures/proxy.h            |  9 ++++++---
 test/core/end2end/tests/large_metadata.c      | 10 +++++-----
 8 files changed, 40 insertions(+), 28 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index f5359f2a81..44b2a7a59f 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -56,6 +56,8 @@
 #define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
 #define MAX_WINDOW 0x7fffffffu
 
+#define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
+
 #define MAX_CLIENT_STREAM_ID 0x7fffffffu
 
 int grpc_http_trace = 0;
@@ -311,6 +313,8 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
     push_setting(t, GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 0);
   }
   push_setting(t, GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, DEFAULT_WINDOW);
+  push_setting(t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
+               DEFAULT_MAX_HEADER_LIST_SIZE);
 
   if (channel_args) {
     for (i = 0; i < channel_args->num_args; i++) {
diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.c b/src/core/ext/transport/chttp2/transport/frame_settings.c
index 7fa66247e4..a3c1e15f35 100644
--- a/src/core/ext/transport/chttp2/transport/frame_settings.c
+++ b/src/core/ext/transport/chttp2/transport/frame_settings.c
@@ -44,7 +44,6 @@
 #include "src/core/ext/transport/chttp2/transport/http2_errors.h"
 #include "src/core/lib/debug/trace.h"
 
-#define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
 #define MAX_MAX_HEADER_LIST_SIZE (1024 * 1024 * 1024)
 
 /* HTTP/2 mandated initial connection settings */
@@ -63,7 +62,7 @@ const grpc_chttp2_setting_parameters
          GRPC_CHTTP2_FLOW_CONTROL_ERROR},
         {"MAX_FRAME_SIZE", 16384, 16384, 16777215,
          GRPC_CHTTP2_DISCONNECT_ON_INVALID_VALUE, GRPC_CHTTP2_PROTOCOL_ERROR},
-        {"MAX_HEADER_LIST_SIZE", DEFAULT_MAX_HEADER_LIST_SIZE, 0,
+        {"MAX_HEADER_LIST_SIZE", MAX_MAX_HEADER_LIST_SIZE, 0,
          MAX_MAX_HEADER_LIST_SIZE, GRPC_CHTTP2_CLAMP_INVALID_VALUE,
          GRPC_CHTTP2_PROTOCOL_ERROR},
 };
diff --git a/src/core/lib/iomgr/tcp_posix.c b/src/core/lib/iomgr/tcp_posix.c
index 7210aef5d5..e2869224f1 100644
--- a/src/core/lib/iomgr/tcp_posix.c
+++ b/src/core/lib/iomgr/tcp_posix.c
@@ -164,7 +164,7 @@ static void call_read_cb(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp, int success) {
     for (i = 0; i < tcp->incoming_buffer->count; i++) {
       char *dump = gpr_dump_slice(tcp->incoming_buffer->slices[i],
                                   GPR_DUMP_HEX | GPR_DUMP_ASCII);
-      gpr_log(GPR_DEBUG, "READ %p: %s", tcp, dump);
+      gpr_log(GPR_DEBUG, "READ %p (peer=%s): %s", tcp, tcp->peer_string, dump);
       gpr_free(dump);
     }
   }
@@ -398,7 +398,7 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
     for (i = 0; i < buf->count; i++) {
       char *data =
           gpr_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
-      gpr_log(GPR_DEBUG, "WRITE %p: %s", tcp, data);
+      gpr_log(GPR_DEBUG, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string, data);
       gpr_free(data);
     }
   }
diff --git a/test/core/end2end/fixtures/h2_proxy.c b/test/core/end2end/fixtures/h2_proxy.c
index 863673a4e0..8c50eeb5d5 100644
--- a/test/core/end2end/fixtures/h2_proxy.c
+++ b/test/core/end2end/fixtures/h2_proxy.c
@@ -55,14 +55,16 @@ typedef struct fullstack_fixture_data {
   grpc_end2end_proxy *proxy;
 } fullstack_fixture_data;
 
-static grpc_server *create_proxy_server(const char *port) {
-  grpc_server *s = grpc_server_create(NULL, NULL);
+static grpc_server *create_proxy_server(const char *port,
+                                        grpc_channel_args *server_args) {
+  grpc_server *s = grpc_server_create(server_args, NULL);
   GPR_ASSERT(grpc_server_add_insecure_http2_port(s, port));
   return s;
 }
 
-static grpc_channel *create_proxy_client(const char *target) {
-  return grpc_insecure_channel_create(target, NULL, NULL);
+static grpc_channel *create_proxy_client(const char *target,
+                                         grpc_channel_args *client_args) {
+  return grpc_insecure_channel_create(target, client_args, NULL);
 }
 
 static const grpc_end2end_proxy_def proxy_def = {create_proxy_server,
@@ -74,7 +76,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_fullstack(
   fullstack_fixture_data *ffd = gpr_malloc(sizeof(fullstack_fixture_data));
   memset(&f, 0, sizeof(f));
 
-  ffd->proxy = grpc_end2end_proxy_create(&proxy_def);
+  ffd->proxy = grpc_end2end_proxy_create(&proxy_def, client_args, server_args);
 
   f.fixture_data = ffd;
   f.cq = grpc_completion_queue_create(NULL);
diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.c b/test/core/end2end/fixtures/h2_ssl_proxy.c
index 1403b760f5..0ec6ad437e 100644
--- a/test/core/end2end/fixtures/h2_ssl_proxy.c
+++ b/test/core/end2end/fixtures/h2_ssl_proxy.c
@@ -54,8 +54,9 @@ typedef struct fullstack_secure_fixture_data {
   grpc_end2end_proxy *proxy;
 } fullstack_secure_fixture_data;
 
-static grpc_server *create_proxy_server(const char *port) {
-  grpc_server *s = grpc_server_create(NULL, NULL);
+static grpc_server *create_proxy_server(const char *port,
+                                        grpc_channel_args *server_args) {
+  grpc_server *s = grpc_server_create(server_args, NULL);
   grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key,
                                                   test_server1_cert};
   grpc_server_credentials *ssl_creds =
@@ -65,18 +66,20 @@ static grpc_server *create_proxy_server(const char *port) {
   return s;
 }
 
-static grpc_channel *create_proxy_client(const char *target) {
+static grpc_channel *create_proxy_client(const char *target,
+                                         grpc_channel_args *client_args) {
   grpc_channel *channel;
   grpc_channel_credentials *ssl_creds =
       grpc_ssl_credentials_create(NULL, NULL, NULL);
   grpc_arg ssl_name_override = {GRPC_ARG_STRING,
                                 GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
                                 {"foo.test.google.fr"}};
-  grpc_channel_args client_args;
-  client_args.num_args = 1;
-  client_args.args = &ssl_name_override;
-  channel = grpc_secure_channel_create(ssl_creds, target, &client_args, NULL);
+  grpc_channel_args *new_client_args =
+      grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
+  channel = grpc_secure_channel_create(ssl_creds, target, new_client_args,
+                                       NULL);
   grpc_channel_credentials_release(ssl_creds);
+  grpc_channel_args_destroy(new_client_args);
   return channel;
 }
 
@@ -90,7 +93,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack(
       gpr_malloc(sizeof(fullstack_secure_fixture_data));
   memset(&f, 0, sizeof(f));
 
-  ffd->proxy = grpc_end2end_proxy_create(&proxy_def);
+  ffd->proxy = grpc_end2end_proxy_create(&proxy_def, client_args, server_args);
 
   f.fixture_data = ffd;
   f.cq = grpc_completion_queue_create(NULL);
diff --git a/test/core/end2end/fixtures/proxy.c b/test/core/end2end/fixtures/proxy.c
index a6487a17ac..ff413ffd65 100644
--- a/test/core/end2end/fixtures/proxy.c
+++ b/test/core/end2end/fixtures/proxy.c
@@ -90,7 +90,8 @@ static void thread_main(void *arg);
 static void request_call(grpc_end2end_proxy *proxy);
 
 grpc_end2end_proxy *grpc_end2end_proxy_create(
-    const grpc_end2end_proxy_def *def) {
+    const grpc_end2end_proxy_def *def,
+    grpc_channel_args *client_args, grpc_channel_args *server_args) {
   gpr_thd_options opt = gpr_thd_options_default();
   int proxy_port = grpc_pick_unused_port_or_die();
   int server_port = grpc_pick_unused_port_or_die();
@@ -105,8 +106,8 @@ grpc_end2end_proxy *grpc_end2end_proxy_create(
           proxy->server_port);
 
   proxy->cq = grpc_completion_queue_create(NULL);
-  proxy->server = def->create_server(proxy->proxy_port);
-  proxy->client = def->create_client(proxy->server_port);
+  proxy->server = def->create_server(proxy->proxy_port, server_args);
+  proxy->client = def->create_client(proxy->server_port, client_args);
 
   grpc_server_register_completion_queue(proxy->server, proxy->cq, NULL);
   grpc_server_start(proxy->server);
diff --git a/test/core/end2end/fixtures/proxy.h b/test/core/end2end/fixtures/proxy.h
index c1cf01d39a..89f95f09f9 100644
--- a/test/core/end2end/fixtures/proxy.h
+++ b/test/core/end2end/fixtures/proxy.h
@@ -41,12 +41,15 @@
 typedef struct grpc_end2end_proxy grpc_end2end_proxy;
 
 typedef struct grpc_end2end_proxy_def {
-  grpc_server *(*create_server)(const char *port);
-  grpc_channel *(*create_client)(const char *target);
+  grpc_server *(*create_server)(const char *port,
+                                grpc_channel_args *server_args);
+  grpc_channel *(*create_client)(const char *target,
+                                 grpc_channel_args *client_args);
 } grpc_end2end_proxy_def;
 
 grpc_end2end_proxy *grpc_end2end_proxy_create(
-    const grpc_end2end_proxy_def *def);
+    const grpc_end2end_proxy_def *def,
+    grpc_channel_args *client_args, grpc_channel_args *server_args);
 void grpc_end2end_proxy_destroy(grpc_end2end_proxy *proxy);
 
 const char *grpc_end2end_proxy_get_client_target(grpc_end2end_proxy *proxy);
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c
index b78d5b8292..6d3074a94b 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.c
@@ -97,7 +97,7 @@ static void end_test(grpc_end2end_test_fixture *f) {
   grpc_completion_queue_destroy(f->cq);
 }
 
-/* Request with a large amount of metadata. */
+// Request with a large amount of metadata.
 static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   grpc_call *c;
   grpc_call *s;
@@ -141,7 +141,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   grpc_metadata_array_init(&request_metadata_recv);
   grpc_call_details_init(&call_details);
 
-  /* Client: send request. */
+  // Client: send request.
   op = ops;
   op->op = GRPC_OP_SEND_INITIAL_METADATA;
   op->data.send_initial_metadata.count = 1;
@@ -182,7 +182,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   cq_expect_completion(cqv, tag(101), 1);
   cq_verify(cqv);
 
-  /* Server: send initial metadata and receive request. */
+  // Server: send initial metadata and receive request.
   op = ops;
   op->op = GRPC_OP_SEND_INITIAL_METADATA;
   op->data.send_initial_metadata.count = 0;
@@ -200,8 +200,8 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   cq_expect_completion(cqv, tag(102), 1);
   cq_verify(cqv);
 
-  /* Server: receive close and send status.  This should trigger
-     completion of request on client. */
+  // Server: receive close and send status.  This should trigger
+  // completion of request on client.
   op = ops;
   op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
   op->data.recv_close_on_server.cancelled = &was_cancelled;
-- 
GitLab


From 2df7d409144af95c99cdabefcc7a3ad841c464d0 Mon Sep 17 00:00:00 2001
From: Michael Yeh <miyeh@cisco.com>
Date: Wed, 4 May 2016 10:59:03 -0700
Subject: [PATCH 347/525] Modified sample async client to be non-blocking.  A
 reader thread is spawned to handle all the RPC results.

---
 .../cpp/helloworld/greeter_async_client.cc    | 93 ++++++++++++-------
 1 file changed, 57 insertions(+), 36 deletions(-)

diff --git a/examples/cpp/helloworld/greeter_async_client.cc b/examples/cpp/helloworld/greeter_async_client.cc
index 35014267fe..ca5a7defb0 100644
--- a/examples/cpp/helloworld/greeter_async_client.cc
+++ b/examples/cpp/helloworld/greeter_async_client.cc
@@ -36,6 +36,7 @@
 #include <string>
 
 #include <grpc++/grpc++.h>
+#include <thread>
 
 #include "helloworld.grpc.pb.h"
 
@@ -55,71 +56,91 @@ class GreeterClient {
 
   // Assambles the client's payload, sends it and presents the response back
   // from the server.
-  std::string SayHello(const std::string& user) {
+  void SayHello(const std::string& user) {
     // Data we are sending to the server.
     HelloRequest request;
     request.set_name(user);
 
-    // Container for the data we expect from the server.
-    HelloReply reply;
-
-    // Context for the client. It could be used to convey extra information to
-    // the server and/or tweak certain RPC behaviors.
-    ClientContext context;
-
-    // The producer-consumer queue we use to communicate asynchronously with the
-    // gRPC runtime.
-    CompletionQueue cq;
-
-    // Storage for the status of the RPC upon completion.
-    Status status;
+    AsyncClientCall* call = new AsyncClientCall;
 
     // stub_->AsyncSayHello() perform the RPC call, returning an instance we
     // store in "rpc". Because we are using the asynchronous API, we need the
-    // hold on to the "rpc" instance in order to get updates on the ongoig RPC.
-    std::unique_ptr<ClientAsyncResponseReader<HelloReply> > rpc(
-        stub_->AsyncSayHello(&context, request, &cq));
+    // hold on to the "rpc" instance in order to get updates on the ongoing RPC.
+    call->response_reader = stub_->AsyncSayHello(&call->context, request, &cq_);
+
 
     // Request that, upon completion of the RPC, "reply" be updated with the
     // server's response; "status" with the indication of whether the operation
-    // was successful. Tag the request with the integer 1.
-    rpc->Finish(&reply, &status, (void*)1);
+    // was successful. Tag the request with the memory address of call object.
+    call->response_reader->Finish(&call->reply, &call->status, (void*)call);
+
+  }
+  void AsyncCompleteRpc()
+  {
     void* got_tag;
     bool ok = false;
+
     // Block until the next result is available in the completion queue "cq".
-    cq.Next(&got_tag, &ok);
-
-    // Verify that the result from "cq" corresponds, by its tag, our previous
-    // request.
-    GPR_ASSERT(got_tag == (void*)1);
-    // ... and that the request was completed successfully. Note that "ok"
-    // corresponds solely to the request for updates introduced by Finish().
-    GPR_ASSERT(ok);
-
-    // Act upon the status of the actual RPC.
-    if (status.ok()) {
-      return reply.message();
-    } else {
-      return "RPC failed";
+    while (cq_.Next(&got_tag, &ok))
+    {
+      AsyncClientCall* call = static_cast<AsyncClientCall*>(got_tag);
+      if (ok)
+        std::cout << "Greeter received: " << call->reply.message() << std::endl;
+      else
+        std::cout << "RPC failed" << std::endl;
+      delete call;
     }
   }
 
  private:
+
+  // Structure for keeping state and data information
+  struct AsyncClientCall
+  {
+      // Container for the data we expect from the server.
+      HelloReply reply;
+
+      // Context for the client. It could be used to convey extra information to
+      // the server and/or tweak certain RPC behaviors.
+      ClientContext context;
+
+      // Storage for the status of the RPC upon completion.
+      Status status;
+
+
+      std::unique_ptr<ClientAsyncResponseReader<HelloReply>> response_reader;
+  };
+
   // Out of the passed in Channel comes the stub, stored here, our view of the
   // server's exposed services.
   std::unique_ptr<Greeter::Stub> stub_;
+
+  // The producer-consumer queue we use to communicate asynchronously with the
+  // gRPC runtime.
+  CompletionQueue cq_;
 };
 
 int main(int argc, char** argv) {
+
+
   // Instantiate the client. It requires a channel, out of which the actual RPCs
   // are created. This channel models a connection to an endpoint (in this case,
   // localhost at port 50051). We indicate that the channel isn't authenticated
   // (use of InsecureChannelCredentials()).
   GreeterClient greeter(grpc::CreateChannel(
       "localhost:50051", grpc::InsecureChannelCredentials()));
-  std::string user("world");
-  std::string reply = greeter.SayHello(user);  // The actual RPC call!
-  std::cout << "Greeter received: " << reply << std::endl;
+
+  // Spawn reader thread that loops indefinitely
+  std::thread thread_ = std::thread(&GreeterClient::AsyncCompleteRpc, &greeter);
+
+  for (int i = 0; i < 100; i++)
+  {
+    std::string user("world " + std::to_string(i));
+    greeter.SayHello(user);  // The actual RPC call!
+  }
+
+  std::cout << "Press control-c to quit" << std::endl << std::endl;
+  thread_.join();  //blocks forever
 
   return 0;
 }
-- 
GitLab


From d50b58c3f61b00b3bbdaae63dd794c8e2a96d06d Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Tue, 3 May 2016 18:38:29 -0700
Subject: [PATCH 348/525] Add comments for messages

---
 .../grpc/reflection/v1alpha/reflection.proto  | 26 +++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/src/proto/grpc/reflection/v1alpha/reflection.proto b/src/proto/grpc/reflection/v1alpha/reflection.proto
index e6735d2cd5..4b13bd1e51 100644
--- a/src/proto/grpc/reflection/v1alpha/reflection.proto
+++ b/src/proto/grpc/reflection/v1alpha/reflection.proto
@@ -55,38 +55,64 @@ service ServerReflection {
 
   // Finds the tag numbers used by all known extensions of extendee_type, and
   // appends them to ExtensionNumberResponse in an undefined order.
+  // This method is best-effort: it's not guaranteed that the reflection service
+  // will implement this method, and it's not guaranteed that this method will
+  // provide all extensions. Returns StatusCode::UNIMPLEMENTED if it's not
+  // implemented.
   rpc GetAllExtensionNumbers(TypeRequest) returns (ExtensionNumberResponse) {
   }
 }
 
+// An empty message sent by the client when calling ListService method.
 message EmptyRequest {
 }
 
+// The filename sent by the client when calling GetFileByName method.
 message FileNameRequest {
+  // Name of the proto file.
   string filename = 1;
 }
 
+// The symbol name sent by the client when calling GetFileContainingSymbol
+// method.
 message SymbolRequest {
+  // Fully-qualified symbol name (e.g. <package>.<service>[.<method>] or
+  // <package>.<type>).
   string symbol = 1;
 }
 
+// The type name and extension number sent by the client when calling
+// GetFileContainingExtension method.
 message ExtensionRequest {
+  // Fully-qualified type name. The format should be <package>.<type>
   string containing_type = 1;
   int32 extension_number = 2;
 }
 
+// The type name sent by the client when calling GetAllExtensionNumbers method.
 message TypeRequest {
+  // Fully-qualified type name. The format should be <package>.<type>
   string type = 1;
 }
 
+// A list of service names sent by the server answering ListService method.
 message ListServiceResponse {
+  // Full names of registered services, including package names. The format
+  // is <package>.<service>
   repeated string services = 1;
 }
 
+// A serialized FileDescriptorProto sent by the server answering
+// GetFileByName, GetFileContainingSymbol, GetFileContainingExtension methods.
 message FileDescriptorProtoResponse {
+  // Serialized FileDescriptorProto message. Some languages have limited support
+  // for working with descriptors. The can only obtain an opaque binary blob
+  // that contains serialized FileDescriptorProto message.
   bytes file_descriptor_proto = 1;
 }
 
+// A list of extension numbers sent by the server answering
+// GetAllExtensionNumbers method.
 message ExtensionNumberResponse {
   repeated int32 extension_number = 1;
 }
-- 
GitLab


From 2df502e5181d98752d193e55824b07722a16c594 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Wed, 4 May 2016 11:22:24 -0700
Subject: [PATCH 349/525] Fix max_message_length test, which was broken by the
 previous fix to the proxy tests.

---
 test/core/end2end/tests/max_message_length.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/test/core/end2end/tests/max_message_length.c b/test/core/end2end/tests/max_message_length.c
index b5dbc1382a..4f572789d9 100644
--- a/test/core/end2end/tests/max_message_length.c
+++ b/test/core/end2end/tests/max_message_length.c
@@ -53,7 +53,10 @@ static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
                                             grpc_channel_args *server_args) {
   grpc_end2end_test_fixture f;
   gpr_log(GPR_INFO, "%s/%s", test_name, config.name);
-  f = config.create_fixture(client_args, server_args);
+  // We intentionally do not pass the client and server args to
+  // create_fixture(), since we don't want the limit enforced on the
+  // proxy, only on the backend server.
+  f = config.create_fixture(NULL, NULL);
   config.init_server(&f, server_args);
   config.init_client(&f, client_args);
   return f;
-- 
GitLab


From 470cbd1c6e0f1e4d49265a1ed403ffb1219fffa6 Mon Sep 17 00:00:00 2001
From: Michael Yeh <miyeh@cisco.com>
Date: Wed, 4 May 2016 12:39:20 -0700
Subject: [PATCH 350/525] Created a new sample async client that is
 non-blocking.  A reader thread is spawned to handle all the RPC results.

---
 examples/cpp/helloworld/Makefile              |   7 +-
 .../cpp/helloworld/greeter_async_client.cc    |  93 +++++------
 .../cpp/helloworld/greeter_async_client2.cc   | 148 ++++++++++++++++++
 3 files changed, 189 insertions(+), 59 deletions(-)
 create mode 100644 examples/cpp/helloworld/greeter_async_client2.cc

diff --git a/examples/cpp/helloworld/Makefile b/examples/cpp/helloworld/Makefile
index 470b83573e..58a82dbb83 100644
--- a/examples/cpp/helloworld/Makefile
+++ b/examples/cpp/helloworld/Makefile
@@ -41,7 +41,7 @@ PROTOS_PATH = ../../protos
 
 vpath %.proto $(PROTOS_PATH)
 
-all: system-check greeter_client greeter_server greeter_async_client greeter_async_server
+all: system-check greeter_client greeter_server greeter_async_client greeter_async_client2 greeter_async_server
 
 greeter_client: helloworld.pb.o helloworld.grpc.pb.o greeter_client.o
 	$(CXX) $^ $(LDFLAGS) -o $@
@@ -52,6 +52,9 @@ greeter_server: helloworld.pb.o helloworld.grpc.pb.o greeter_server.o
 greeter_async_client: helloworld.pb.o helloworld.grpc.pb.o greeter_async_client.o
 	$(CXX) $^ $(LDFLAGS) -o $@
 
+greeter_async_client2: helloworld.pb.o helloworld.grpc.pb.o greeter_async_client2.o
+	$(CXX) $^ $(LDFLAGS) -o $@
+
 greeter_async_server: helloworld.pb.o helloworld.grpc.pb.o greeter_async_server.o
 	$(CXX) $^ $(LDFLAGS) -o $@
 
@@ -64,7 +67,7 @@ greeter_async_server: helloworld.pb.o helloworld.grpc.pb.o greeter_async_server.
 	$(PROTOC) -I $(PROTOS_PATH) --cpp_out=. $<
 
 clean:
-	rm -f *.o *.pb.cc *.pb.h greeter_client greeter_server greeter_async_client greeter_async_server
+	rm -f *.o *.pb.cc *.pb.h greeter_client greeter_server greeter_async_client greeter_async_client2 greeter_async_server
 
 
 # The following is to test your system and ensure a smoother experience.
diff --git a/examples/cpp/helloworld/greeter_async_client.cc b/examples/cpp/helloworld/greeter_async_client.cc
index ca5a7defb0..35014267fe 100644
--- a/examples/cpp/helloworld/greeter_async_client.cc
+++ b/examples/cpp/helloworld/greeter_async_client.cc
@@ -36,7 +36,6 @@
 #include <string>
 
 #include <grpc++/grpc++.h>
-#include <thread>
 
 #include "helloworld.grpc.pb.h"
 
@@ -56,91 +55,71 @@ class GreeterClient {
 
   // Assambles the client's payload, sends it and presents the response back
   // from the server.
-  void SayHello(const std::string& user) {
+  std::string SayHello(const std::string& user) {
     // Data we are sending to the server.
     HelloRequest request;
     request.set_name(user);
 
-    AsyncClientCall* call = new AsyncClientCall;
+    // Container for the data we expect from the server.
+    HelloReply reply;
+
+    // Context for the client. It could be used to convey extra information to
+    // the server and/or tweak certain RPC behaviors.
+    ClientContext context;
+
+    // The producer-consumer queue we use to communicate asynchronously with the
+    // gRPC runtime.
+    CompletionQueue cq;
+
+    // Storage for the status of the RPC upon completion.
+    Status status;
 
     // stub_->AsyncSayHello() perform the RPC call, returning an instance we
     // store in "rpc". Because we are using the asynchronous API, we need the
-    // hold on to the "rpc" instance in order to get updates on the ongoing RPC.
-    call->response_reader = stub_->AsyncSayHello(&call->context, request, &cq_);
-
+    // hold on to the "rpc" instance in order to get updates on the ongoig RPC.
+    std::unique_ptr<ClientAsyncResponseReader<HelloReply> > rpc(
+        stub_->AsyncSayHello(&context, request, &cq));
 
     // Request that, upon completion of the RPC, "reply" be updated with the
     // server's response; "status" with the indication of whether the operation
-    // was successful. Tag the request with the memory address of call object.
-    call->response_reader->Finish(&call->reply, &call->status, (void*)call);
-
-  }
-  void AsyncCompleteRpc()
-  {
+    // was successful. Tag the request with the integer 1.
+    rpc->Finish(&reply, &status, (void*)1);
     void* got_tag;
     bool ok = false;
-
     // Block until the next result is available in the completion queue "cq".
-    while (cq_.Next(&got_tag, &ok))
-    {
-      AsyncClientCall* call = static_cast<AsyncClientCall*>(got_tag);
-      if (ok)
-        std::cout << "Greeter received: " << call->reply.message() << std::endl;
-      else
-        std::cout << "RPC failed" << std::endl;
-      delete call;
+    cq.Next(&got_tag, &ok);
+
+    // Verify that the result from "cq" corresponds, by its tag, our previous
+    // request.
+    GPR_ASSERT(got_tag == (void*)1);
+    // ... and that the request was completed successfully. Note that "ok"
+    // corresponds solely to the request for updates introduced by Finish().
+    GPR_ASSERT(ok);
+
+    // Act upon the status of the actual RPC.
+    if (status.ok()) {
+      return reply.message();
+    } else {
+      return "RPC failed";
     }
   }
 
  private:
-
-  // Structure for keeping state and data information
-  struct AsyncClientCall
-  {
-      // Container for the data we expect from the server.
-      HelloReply reply;
-
-      // Context for the client. It could be used to convey extra information to
-      // the server and/or tweak certain RPC behaviors.
-      ClientContext context;
-
-      // Storage for the status of the RPC upon completion.
-      Status status;
-
-
-      std::unique_ptr<ClientAsyncResponseReader<HelloReply>> response_reader;
-  };
-
   // Out of the passed in Channel comes the stub, stored here, our view of the
   // server's exposed services.
   std::unique_ptr<Greeter::Stub> stub_;
-
-  // The producer-consumer queue we use to communicate asynchronously with the
-  // gRPC runtime.
-  CompletionQueue cq_;
 };
 
 int main(int argc, char** argv) {
-
-
   // Instantiate the client. It requires a channel, out of which the actual RPCs
   // are created. This channel models a connection to an endpoint (in this case,
   // localhost at port 50051). We indicate that the channel isn't authenticated
   // (use of InsecureChannelCredentials()).
   GreeterClient greeter(grpc::CreateChannel(
       "localhost:50051", grpc::InsecureChannelCredentials()));
-
-  // Spawn reader thread that loops indefinitely
-  std::thread thread_ = std::thread(&GreeterClient::AsyncCompleteRpc, &greeter);
-
-  for (int i = 0; i < 100; i++)
-  {
-    std::string user("world " + std::to_string(i));
-    greeter.SayHello(user);  // The actual RPC call!
-  }
-
-  std::cout << "Press control-c to quit" << std::endl << std::endl;
-  thread_.join();  //blocks forever
+  std::string user("world");
+  std::string reply = greeter.SayHello(user);  // The actual RPC call!
+  std::cout << "Greeter received: " << reply << std::endl;
 
   return 0;
 }
diff --git a/examples/cpp/helloworld/greeter_async_client2.cc b/examples/cpp/helloworld/greeter_async_client2.cc
new file mode 100644
index 0000000000..cdbdd1f306
--- /dev/null
+++ b/examples/cpp/helloworld/greeter_async_client2.cc
@@ -0,0 +1,148 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <iostream>
+#include <memory>
+#include <string>
+
+#include <grpc++/grpc++.h>
+#include <thread>
+
+#include "helloworld.grpc.pb.h"
+
+using grpc::Channel;
+using grpc::ClientAsyncResponseReader;
+using grpc::ClientContext;
+using grpc::CompletionQueue;
+using grpc::Status;
+using helloworld::HelloRequest;
+using helloworld::HelloReply;
+using helloworld::Greeter;
+
+class GreeterClient {
+  public:
+    explicit GreeterClient(std::shared_ptr<Channel> channel)
+            : stub_(Greeter::NewStub(channel)) {}
+
+    // Assambles the client's payload, sends it and presents the response back
+    // from the server.
+    void SayHello(const std::string& user) {
+        // Data we are sending to the server.
+        HelloRequest request;
+        request.set_name(user);
+
+        AsyncClientCall* call = new AsyncClientCall;
+
+        // stub_->AsyncSayHello() perform the RPC call, returning an instance we
+        // store in "rpc". Because we are using the asynchronous API, we need the
+        // hold on to the "rpc" instance in order to get updates on the ongoing RPC.
+        call->response_reader = stub_->AsyncSayHello(&call->context, request, &cq_);
+
+
+        // Request that, upon completion of the RPC, "reply" be updated with the
+        // server's response; "status" with the indication of whether the operation
+        // was successful. Tag the request with the memory address of call object.
+        call->response_reader->Finish(&call->reply, &call->status, (void*)call);
+
+    }
+
+    // Loop while listening for completed responses
+    void AsyncCompleteRpc()
+    {
+        void* got_tag;
+        bool ok = false;
+
+        // Block until the next result is available in the completion queue "cq".
+        while (cq_.Next(&got_tag, &ok))
+        {
+            AsyncClientCall* call = static_cast<AsyncClientCall*>(got_tag);
+            if (ok)
+                std::cout << "Greeter received: " << call->reply.message() << std::endl;
+            else
+                std::cout << "RPC failed" << std::endl;
+            delete call;
+        }
+    }
+
+  private:
+
+    // struct for keeping state and data information
+    struct AsyncClientCall
+    {
+        // Container for the data we expect from the server.
+        HelloReply reply;
+
+        // Context for the client. It could be used to convey extra information to
+        // the server and/or tweak certain RPC behaviors.
+        ClientContext context;
+
+        // Storage for the status of the RPC upon completion.
+        Status status;
+
+
+        std::unique_ptr<ClientAsyncResponseReader<HelloReply>> response_reader;
+    };
+
+    // Out of the passed in Channel comes the stub, stored here, our view of the
+    // server's exposed services.
+    std::unique_ptr<Greeter::Stub> stub_;
+
+    // The producer-consumer queue we use to communicate asynchronously with the
+    // gRPC runtime.
+    CompletionQueue cq_;
+};
+
+int main(int argc, char** argv) {
+
+
+    // Instantiate the client. It requires a channel, out of which the actual RPCs
+    // are created. This channel models a connection to an endpoint (in this case,
+    // localhost at port 50051). We indicate that the channel isn't authenticated
+    // (use of InsecureChannelCredentials()).
+    GreeterClient greeter(grpc::CreateChannel(
+            "localhost:50051", grpc::InsecureChannelCredentials()));
+
+    // Spawn reader thread that loops indefinitely
+    std::thread thread_ = std::thread(&GreeterClient::AsyncCompleteRpc, &greeter);
+
+    for (int i = 0; i < 100; i++)
+    {
+        std::string user("world " + std::to_string(i));
+        greeter.SayHello(user);  // The actual RPC call!
+    }
+
+    std::cout << "Press control-c to quit" << std::endl << std::endl;
+    thread_.join();  //blocks forever
+
+    return 0;
+}
-- 
GitLab


From 2b6a2ab59a47c166652c7eb3e483eb8a75634d19 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 4 May 2016 12:54:14 -0700
Subject: [PATCH 351/525] Make namespacing of executables exposed by grpc-tools
 packages consistent between Node and Ruby

---
 src/node/tools/package.json                                   | 4 ++--
 src/ruby/tools/bin/{protoc.rb => grpc_tools_ruby_protoc.rb}   | 0
 ...c_grpc_ruby_plugin.rb => grpc_tools_ruby_protoc_plugin.rb} | 0
 3 files changed, 2 insertions(+), 2 deletions(-)
 rename src/ruby/tools/bin/{protoc.rb => grpc_tools_ruby_protoc.rb} (100%)
 rename src/ruby/tools/bin/{protoc_grpc_ruby_plugin.rb => grpc_tools_ruby_protoc_plugin.rb} (100%)

diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index d98ed0b1fc..62155edd68 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -16,8 +16,8 @@
     }
   ],
   "bin": {
-    "grpc-tools-protoc": "./bin/protoc.js",
-    "grpc-tools-plugin": "./bin/protoc_plugin.js"
+    "grpc_tools_node_protoc": "./bin/protoc.js",
+    "grpc_tools_node_protoc_plugin": "./bin/protoc_plugin.js"
   },
   "scripts": {
     "install": "./node_modules/.bin/node-pre-gyp install"
diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/grpc_tools_ruby_protoc.rb
similarity index 100%
rename from src/ruby/tools/bin/protoc.rb
rename to src/ruby/tools/bin/grpc_tools_ruby_protoc.rb
diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb
similarity index 100%
rename from src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
rename to src/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb
-- 
GitLab


From d5d8f8fbf94fab16b5c2ecc84cdefffed1a44b4e Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Wed, 4 May 2016 13:22:26 -0700
Subject: [PATCH 352/525] Added all transitive header dependencies in
 build.yaml to fix the failing check.

---
 BUILD                                        |  68 ++++++++++++
 build.yaml                                   |  49 +++++++++
 gRPC.podspec                                 |  68 ++++++++++++
 grpc.gemspec                                 |  34 ++++++
 package.xml                                  |  34 ++++++
 tools/doxygen/Doxyfile.core.internal         |  34 ++++++
 tools/run_tests/sources_and_headers.json     | 100 +++++++++++++++++-
 vsprojects/vcxproj/grpc/grpc.vcxproj         |  34 ++++++
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 105 +++++++++++++++++++
 9 files changed, 525 insertions(+), 1 deletion(-)

diff --git a/BUILD b/BUILD
index 2e1d762f07..9a14f30c36 100644
--- a/BUILD
+++ b/BUILD
@@ -285,7 +285,41 @@ cc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
+    "include/grpc/byte_buffer.h",
+    "include/grpc/grpc.h",
+    "include/grpc/impl/codegen/alloc.h",
+    "include/grpc/impl/codegen/atm.h",
+    "include/grpc/impl/codegen/atm_gcc_atomic.h",
+    "include/grpc/impl/codegen/atm_gcc_sync.h",
+    "include/grpc/impl/codegen/atm_win32.h",
+    "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/compression_types.h",
+    "include/grpc/impl/codegen/connectivity_state.h",
+    "include/grpc/impl/codegen/grpc_types.h",
+    "include/grpc/impl/codegen/log.h",
+    "include/grpc/impl/codegen/port_platform.h",
+    "include/grpc/impl/codegen/propagation_bits.h",
+    "include/grpc/impl/codegen/slice.h",
+    "include/grpc/impl/codegen/slice_buffer.h",
+    "include/grpc/impl/codegen/status.h",
+    "include/grpc/impl/codegen/sync.h",
+    "include/grpc/impl/codegen/sync_generic.h",
+    "include/grpc/impl/codegen/sync_posix.h",
+    "include/grpc/impl/codegen/sync_win32.h",
+    "include/grpc/impl/codegen/time.h",
+    "include/grpc/status.h",
+    "include/grpc/support/alloc.h",
+    "include/grpc/support/atm.h",
+    "include/grpc/support/host_port.h",
+    "include/grpc/support/log.h",
     "include/grpc/support/port_platform.h",
+    "include/grpc/support/slice.h",
+    "include/grpc/support/slice_buffer.h",
+    "include/grpc/support/string_util.h",
+    "include/grpc/support/sync.h",
+    "include/grpc/support/time.h",
+    "include/grpc/support/useful.h",
+    "src/core/lib/support/string.h",
     "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
@@ -1636,7 +1670,41 @@ objc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
+    "include/grpc/byte_buffer.h",
+    "include/grpc/grpc.h",
+    "include/grpc/impl/codegen/alloc.h",
+    "include/grpc/impl/codegen/atm.h",
+    "include/grpc/impl/codegen/atm_gcc_atomic.h",
+    "include/grpc/impl/codegen/atm_gcc_sync.h",
+    "include/grpc/impl/codegen/atm_win32.h",
+    "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/compression_types.h",
+    "include/grpc/impl/codegen/connectivity_state.h",
+    "include/grpc/impl/codegen/grpc_types.h",
+    "include/grpc/impl/codegen/log.h",
+    "include/grpc/impl/codegen/port_platform.h",
+    "include/grpc/impl/codegen/propagation_bits.h",
+    "include/grpc/impl/codegen/slice.h",
+    "include/grpc/impl/codegen/slice_buffer.h",
+    "include/grpc/impl/codegen/status.h",
+    "include/grpc/impl/codegen/sync.h",
+    "include/grpc/impl/codegen/sync_generic.h",
+    "include/grpc/impl/codegen/sync_posix.h",
+    "include/grpc/impl/codegen/sync_win32.h",
+    "include/grpc/impl/codegen/time.h",
+    "include/grpc/status.h",
+    "include/grpc/support/alloc.h",
+    "include/grpc/support/atm.h",
+    "include/grpc/support/host_port.h",
+    "include/grpc/support/log.h",
     "include/grpc/support/port_platform.h",
+    "include/grpc/support/slice.h",
+    "include/grpc/support/slice_buffer.h",
+    "include/grpc/support/string_util.h",
+    "include/grpc/support/sync.h",
+    "include/grpc/support/time.h",
+    "include/grpc/support/useful.h",
+    "src/core/lib/support/string.h",
     "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
diff --git a/build.yaml b/build.yaml
index a7ab412722..ff4e7f0f90 100644
--- a/build.yaml
+++ b/build.yaml
@@ -549,7 +549,56 @@ filegroups:
   - grpc_secure
 - name: grpc_transport_cronet_client_secure
   headers:
+  - include/grpc/byte_buffer.h
+  - include/grpc/grpc.h
+  - include/grpc/impl/codegen/alloc.h
+  - include/grpc/impl/codegen/atm.h
+  - include/grpc/impl/codegen/atm_gcc_atomic.h
+  - include/grpc/impl/codegen/atm_gcc_sync.h
+  - include/grpc/impl/codegen/atm_win32.h
+  - include/grpc/impl/codegen/byte_buffer.h
+  - include/grpc/impl/codegen/compression_types.h
+  - include/grpc/impl/codegen/connectivity_state.h
+  - include/grpc/impl/codegen/grpc_types.h
+  - include/grpc/impl/codegen/log.h
+  - include/grpc/impl/codegen/port_platform.h
+  - include/grpc/impl/codegen/propagation_bits.h
+  - include/grpc/impl/codegen/slice.h
+  - include/grpc/impl/codegen/slice_buffer.h
+  - include/grpc/impl/codegen/status.h
+  - include/grpc/impl/codegen/sync.h
+  - include/grpc/impl/codegen/sync_generic.h
+  - include/grpc/impl/codegen/sync_posix.h
+  - include/grpc/impl/codegen/sync_win32.h
+  - include/grpc/impl/codegen/time.h
+  - include/grpc/status.h
+  - include/grpc/support/alloc.h
+  - include/grpc/support/atm.h
+  - include/grpc/support/host_port.h
+  - include/grpc/support/log.h
   - include/grpc/support/port_platform.h
+  - include/grpc/support/slice.h
+  - include/grpc/support/slice_buffer.h
+  - include/grpc/support/string_util.h
+  - include/grpc/support/sync.h
+  - include/grpc/support/time.h
+  - include/grpc/support/useful.h
+  - src/core/ext/transport/chttp2/transport/incoming_metadata.h
+  - src/core/lib/channel/channel_stack.h
+  - src/core/lib/channel/context.h
+  - src/core/lib/debug/trace.h
+  - src/core/lib/iomgr/closure.h
+  - src/core/lib/iomgr/exec_ctx.h
+  - src/core/lib/iomgr/pollset.h
+  - src/core/lib/iomgr/pollset_set.h
+  - src/core/lib/support/string.h
+  - src/core/lib/surface/channel.h
+  - src/core/lib/surface/channel_stack_type.h
+  - src/core/lib/transport/byte_stream.h
+  - src/core/lib/transport/metadata.h
+  - src/core/lib/transport/metadata_batch.h
+  - src/core/lib/transport/transport.h
+  - src/core/lib/transport/transport_impl.h
   - third_party/objective_c/Cronet/cronet_c_for_grpc.h
   src:
   - src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
diff --git a/gRPC.podspec b/gRPC.podspec
index f57ba74519..c3c3a65128 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -287,7 +287,41 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/subchannel_call_holder.h',
                       'src/core/ext/client_config/subchannel_index.h',
                       'src/core/ext/client_config/uri_parser.h',
+                      'include/grpc/byte_buffer.h',
+                      'include/grpc/grpc.h',
+                      'include/grpc/impl/codegen/alloc.h',
+                      'include/grpc/impl/codegen/atm.h',
+                      'include/grpc/impl/codegen/atm_gcc_atomic.h',
+                      'include/grpc/impl/codegen/atm_gcc_sync.h',
+                      'include/grpc/impl/codegen/atm_win32.h',
+                      'include/grpc/impl/codegen/byte_buffer.h',
+                      'include/grpc/impl/codegen/compression_types.h',
+                      'include/grpc/impl/codegen/connectivity_state.h',
+                      'include/grpc/impl/codegen/grpc_types.h',
+                      'include/grpc/impl/codegen/log.h',
+                      'include/grpc/impl/codegen/port_platform.h',
+                      'include/grpc/impl/codegen/propagation_bits.h',
+                      'include/grpc/impl/codegen/slice.h',
+                      'include/grpc/impl/codegen/slice_buffer.h',
+                      'include/grpc/impl/codegen/status.h',
+                      'include/grpc/impl/codegen/sync.h',
+                      'include/grpc/impl/codegen/sync_generic.h',
+                      'include/grpc/impl/codegen/sync_posix.h',
+                      'include/grpc/impl/codegen/sync_win32.h',
+                      'include/grpc/impl/codegen/time.h',
+                      'include/grpc/status.h',
+                      'include/grpc/support/alloc.h',
+                      'include/grpc/support/atm.h',
+                      'include/grpc/support/host_port.h',
+                      'include/grpc/support/log.h',
                       'include/grpc/support/port_platform.h',
+                      'include/grpc/support/slice.h',
+                      'include/grpc/support/slice_buffer.h',
+                      'include/grpc/support/string_util.h',
+                      'include/grpc/support/sync.h',
+                      'include/grpc/support/time.h',
+                      'include/grpc/support/useful.h',
+                      'src/core/lib/support/string.h',
                       'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
@@ -635,7 +669,41 @@ Pod::Spec.new do |s|
                               'src/core/ext/client_config/subchannel_call_holder.h',
                               'src/core/ext/client_config/subchannel_index.h',
                               'src/core/ext/client_config/uri_parser.h',
+                              'include/grpc/byte_buffer.h',
+                              'include/grpc/grpc.h',
+                              'include/grpc/impl/codegen/alloc.h',
+                              'include/grpc/impl/codegen/atm.h',
+                              'include/grpc/impl/codegen/atm_gcc_atomic.h',
+                              'include/grpc/impl/codegen/atm_gcc_sync.h',
+                              'include/grpc/impl/codegen/atm_win32.h',
+                              'include/grpc/impl/codegen/byte_buffer.h',
+                              'include/grpc/impl/codegen/compression_types.h',
+                              'include/grpc/impl/codegen/connectivity_state.h',
+                              'include/grpc/impl/codegen/grpc_types.h',
+                              'include/grpc/impl/codegen/log.h',
+                              'include/grpc/impl/codegen/port_platform.h',
+                              'include/grpc/impl/codegen/propagation_bits.h',
+                              'include/grpc/impl/codegen/slice.h',
+                              'include/grpc/impl/codegen/slice_buffer.h',
+                              'include/grpc/impl/codegen/status.h',
+                              'include/grpc/impl/codegen/sync.h',
+                              'include/grpc/impl/codegen/sync_generic.h',
+                              'include/grpc/impl/codegen/sync_posix.h',
+                              'include/grpc/impl/codegen/sync_win32.h',
+                              'include/grpc/impl/codegen/time.h',
+                              'include/grpc/status.h',
+                              'include/grpc/support/alloc.h',
+                              'include/grpc/support/atm.h',
+                              'include/grpc/support/host_port.h',
+                              'include/grpc/support/log.h',
                               'include/grpc/support/port_platform.h',
+                              'include/grpc/support/slice.h',
+                              'include/grpc/support/slice_buffer.h',
+                              'include/grpc/support/string_util.h',
+                              'include/grpc/support/sync.h',
+                              'include/grpc/support/time.h',
+                              'include/grpc/support/useful.h',
+                              'src/core/lib/support/string.h',
                               'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index 488f4657cd..cde01942b7 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -296,7 +296,41 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
   s.files += %w( src/core/ext/client_config/subchannel_index.h )
   s.files += %w( src/core/ext/client_config/uri_parser.h )
+  s.files += %w( include/grpc/byte_buffer.h )
+  s.files += %w( include/grpc/grpc.h )
+  s.files += %w( include/grpc/impl/codegen/alloc.h )
+  s.files += %w( include/grpc/impl/codegen/atm.h )
+  s.files += %w( include/grpc/impl/codegen/atm_gcc_atomic.h )
+  s.files += %w( include/grpc/impl/codegen/atm_gcc_sync.h )
+  s.files += %w( include/grpc/impl/codegen/atm_win32.h )
+  s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
+  s.files += %w( include/grpc/impl/codegen/compression_types.h )
+  s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
+  s.files += %w( include/grpc/impl/codegen/grpc_types.h )
+  s.files += %w( include/grpc/impl/codegen/log.h )
+  s.files += %w( include/grpc/impl/codegen/port_platform.h )
+  s.files += %w( include/grpc/impl/codegen/propagation_bits.h )
+  s.files += %w( include/grpc/impl/codegen/slice.h )
+  s.files += %w( include/grpc/impl/codegen/slice_buffer.h )
+  s.files += %w( include/grpc/impl/codegen/status.h )
+  s.files += %w( include/grpc/impl/codegen/sync.h )
+  s.files += %w( include/grpc/impl/codegen/sync_generic.h )
+  s.files += %w( include/grpc/impl/codegen/sync_posix.h )
+  s.files += %w( include/grpc/impl/codegen/sync_win32.h )
+  s.files += %w( include/grpc/impl/codegen/time.h )
+  s.files += %w( include/grpc/status.h )
+  s.files += %w( include/grpc/support/alloc.h )
+  s.files += %w( include/grpc/support/atm.h )
+  s.files += %w( include/grpc/support/host_port.h )
+  s.files += %w( include/grpc/support/log.h )
   s.files += %w( include/grpc/support/port_platform.h )
+  s.files += %w( include/grpc/support/slice.h )
+  s.files += %w( include/grpc/support/slice_buffer.h )
+  s.files += %w( include/grpc/support/string_util.h )
+  s.files += %w( include/grpc/support/sync.h )
+  s.files += %w( include/grpc/support/time.h )
+  s.files += %w( include/grpc/support/useful.h )
+  s.files += %w( src/core/lib/support/string.h )
   s.files += %w( third_party/objective_c/Cronet/cronet_c_for_grpc.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h )
diff --git a/package.xml b/package.xml
index e8fd375eb6..012ce6ab2e 100644
--- a/package.xml
+++ b/package.xml
@@ -303,7 +303,41 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/byte_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/alloc.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_win32.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/log.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_generic.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/alloc.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/atm.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/host_port.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/log.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/support/port_platform.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/slice.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/slice_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/string_util.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/sync.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/time.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/useful.h" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/string.h" role="src" />
     <file baseinstalldir="/" name="third_party/objective_c/Cronet/cronet_c_for_grpc.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 16dcd9b79a..6bc5e78e62 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -913,7 +913,41 @@ src/core/ext/client_config/subchannel.h \
 src/core/ext/client_config/subchannel_call_holder.h \
 src/core/ext/client_config/subchannel_index.h \
 src/core/ext/client_config/uri_parser.h \
+include/grpc/byte_buffer.h \
+include/grpc/grpc.h \
+include/grpc/impl/codegen/alloc.h \
+include/grpc/impl/codegen/atm.h \
+include/grpc/impl/codegen/atm_gcc_atomic.h \
+include/grpc/impl/codegen/atm_gcc_sync.h \
+include/grpc/impl/codegen/atm_win32.h \
+include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/compression_types.h \
+include/grpc/impl/codegen/connectivity_state.h \
+include/grpc/impl/codegen/grpc_types.h \
+include/grpc/impl/codegen/log.h \
+include/grpc/impl/codegen/port_platform.h \
+include/grpc/impl/codegen/propagation_bits.h \
+include/grpc/impl/codegen/slice.h \
+include/grpc/impl/codegen/slice_buffer.h \
+include/grpc/impl/codegen/status.h \
+include/grpc/impl/codegen/sync.h \
+include/grpc/impl/codegen/sync_generic.h \
+include/grpc/impl/codegen/sync_posix.h \
+include/grpc/impl/codegen/sync_win32.h \
+include/grpc/impl/codegen/time.h \
+include/grpc/status.h \
+include/grpc/support/alloc.h \
+include/grpc/support/atm.h \
+include/grpc/support/host_port.h \
+include/grpc/support/log.h \
 include/grpc/support/port_platform.h \
+include/grpc/support/slice.h \
+include/grpc/support/slice_buffer.h \
+include/grpc/support/string_util.h \
+include/grpc/support/sync.h \
+include/grpc/support/time.h \
+include/grpc/support/useful.h \
+src/core/lib/support/string.h \
 third_party/objective_c/Cronet/cronet_c_for_grpc.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index e22318d238..426a9ba91e 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -6268,16 +6268,114 @@
   {
     "deps": [], 
     "headers": [
+      "include/grpc/byte_buffer.h", 
+      "include/grpc/grpc.h", 
+      "include/grpc/impl/codegen/alloc.h", 
+      "include/grpc/impl/codegen/atm.h", 
+      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
+      "include/grpc/impl/codegen/atm_gcc_sync.h", 
+      "include/grpc/impl/codegen/atm_win32.h", 
+      "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/compression_types.h", 
+      "include/grpc/impl/codegen/connectivity_state.h", 
+      "include/grpc/impl/codegen/grpc_types.h", 
+      "include/grpc/impl/codegen/log.h", 
+      "include/grpc/impl/codegen/port_platform.h", 
+      "include/grpc/impl/codegen/propagation_bits.h", 
+      "include/grpc/impl/codegen/slice.h", 
+      "include/grpc/impl/codegen/slice_buffer.h", 
+      "include/grpc/impl/codegen/status.h", 
+      "include/grpc/impl/codegen/sync.h", 
+      "include/grpc/impl/codegen/sync_generic.h", 
+      "include/grpc/impl/codegen/sync_posix.h", 
+      "include/grpc/impl/codegen/sync_win32.h", 
+      "include/grpc/impl/codegen/time.h", 
+      "include/grpc/status.h", 
+      "include/grpc/support/alloc.h", 
+      "include/grpc/support/atm.h", 
+      "include/grpc/support/host_port.h", 
+      "include/grpc/support/log.h", 
       "include/grpc/support/port_platform.h", 
+      "include/grpc/support/slice.h", 
+      "include/grpc/support/slice_buffer.h", 
+      "include/grpc/support/string_util.h", 
+      "include/grpc/support/sync.h", 
+      "include/grpc/support/time.h", 
+      "include/grpc/support/useful.h", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
+      "src/core/lib/channel/channel_stack.h", 
+      "src/core/lib/channel/context.h", 
+      "src/core/lib/debug/trace.h", 
+      "src/core/lib/iomgr/closure.h", 
+      "src/core/lib/iomgr/exec_ctx.h", 
+      "src/core/lib/iomgr/pollset.h", 
+      "src/core/lib/iomgr/pollset_set.h", 
+      "src/core/lib/support/string.h", 
+      "src/core/lib/surface/channel.h", 
+      "src/core/lib/surface/channel_stack_type.h", 
+      "src/core/lib/transport/byte_stream.h", 
+      "src/core/lib/transport/metadata.h", 
+      "src/core/lib/transport/metadata_batch.h", 
+      "src/core/lib/transport/transport.h", 
+      "src/core/lib/transport/transport_impl.h", 
       "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
     ], 
     "language": "c", 
     "name": "grpc_transport_cronet_client_secure", 
     "src": [
+      "include/grpc/byte_buffer.h", 
+      "include/grpc/grpc.h", 
+      "include/grpc/impl/codegen/alloc.h", 
+      "include/grpc/impl/codegen/atm.h", 
+      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
+      "include/grpc/impl/codegen/atm_gcc_sync.h", 
+      "include/grpc/impl/codegen/atm_win32.h", 
+      "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/compression_types.h", 
+      "include/grpc/impl/codegen/connectivity_state.h", 
+      "include/grpc/impl/codegen/grpc_types.h", 
+      "include/grpc/impl/codegen/log.h", 
+      "include/grpc/impl/codegen/port_platform.h", 
+      "include/grpc/impl/codegen/propagation_bits.h", 
+      "include/grpc/impl/codegen/slice.h", 
+      "include/grpc/impl/codegen/slice_buffer.h", 
+      "include/grpc/impl/codegen/status.h", 
+      "include/grpc/impl/codegen/sync.h", 
+      "include/grpc/impl/codegen/sync_generic.h", 
+      "include/grpc/impl/codegen/sync_posix.h", 
+      "include/grpc/impl/codegen/sync_win32.h", 
+      "include/grpc/impl/codegen/time.h", 
+      "include/grpc/status.h", 
+      "include/grpc/support/alloc.h", 
+      "include/grpc/support/atm.h", 
+      "include/grpc/support/host_port.h", 
+      "include/grpc/support/log.h", 
       "include/grpc/support/port_platform.h", 
+      "include/grpc/support/slice.h", 
+      "include/grpc/support/slice_buffer.h", 
+      "include/grpc/support/string_util.h", 
+      "include/grpc/support/sync.h", 
+      "include/grpc/support/time.h", 
+      "include/grpc/support/useful.h", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
       "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c", 
       "src/core/ext/transport/cronet/transport/cronet_api_dummy.c", 
-      "src/core/ext/transport/cronet/transport/cronet_transport.c"
+      "src/core/ext/transport/cronet/transport/cronet_transport.c", 
+      "src/core/lib/channel/channel_stack.h", 
+      "src/core/lib/channel/context.h", 
+      "src/core/lib/debug/trace.h", 
+      "src/core/lib/iomgr/closure.h", 
+      "src/core/lib/iomgr/exec_ctx.h", 
+      "src/core/lib/iomgr/pollset.h", 
+      "src/core/lib/iomgr/pollset_set.h", 
+      "src/core/lib/support/string.h", 
+      "src/core/lib/surface/channel.h", 
+      "src/core/lib/surface/channel_stack_type.h", 
+      "src/core/lib/transport/byte_stream.h", 
+      "src/core/lib/transport/metadata.h", 
+      "src/core/lib/transport/metadata_batch.h", 
+      "src/core/lib/transport/transport.h", 
+      "src/core/lib/transport/transport_impl.h"
     ], 
     "third_party": false, 
     "type": "filegroup"
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index cbf854875a..4f0157e63f 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -422,7 +422,41 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 02297b7746..43f36e3856 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -968,9 +968,111 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
       <Filter>src\core\ext\client_config</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h">
       <Filter>include\grpc\support</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h">
+      <Filter>src\core\lib\support</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h">
       <Filter>third_party\objective_c\Cronet</Filter>
     </ClInclude>
@@ -1145,6 +1247,9 @@
     <Filter Include="src\core\lib\security">
       <UniqueIdentifier>{c4661d64-349f-01c1-1ba8-0602f9047595}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\lib\support">
+      <UniqueIdentifier>{27f30339-d694-40f5-db07-4b89b9aeea73}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\lib\surface">
       <UniqueIdentifier>{a21971fb-304f-da08-b1b2-7bd8df8ac373}</UniqueIdentifier>
     </Filter>
-- 
GitLab


From 22b338e2109745a27f1f84de8490bc8148df1a79 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Wed, 4 May 2016 13:27:56 -0700
Subject: [PATCH 353/525] Apply clang-format diffs.

---
 .../chttp2/transport/chttp2_transport.c       | 14 +++--
 .../chttp2/transport/incoming_metadata.h      |  2 +-
 .../ext/transport/chttp2/transport/parsing.c  |  8 +--
 src/core/lib/transport/metadata.h             |  4 +-
 src/core/lib/transport/metadata_batch.c       |  4 +-
 test/core/bad_client/bad_client.c             |  7 +--
 test/core/bad_client/bad_client.h             |  8 +--
 test/core/bad_client/tests/large_metadata.c   | 57 +++++++++++--------
 test/core/end2end/fixtures/h2_ssl_proxy.c     |  4 +-
 test/core/end2end/fixtures/proxy.c            |  6 +-
 test/core/end2end/fixtures/proxy.h            |  6 +-
 test/core/end2end/tests/large_metadata.c      | 11 ++--
 12 files changed, 71 insertions(+), 60 deletions(-)

diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 44b2a7a59f..737a6ccbf1 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -948,15 +948,16 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
     stream_global->send_initial_metadata_finished =
         add_closure_barrier(on_complete);
     stream_global->send_initial_metadata = op->send_initial_metadata;
-    const size_t metadata_size = grpc_metadata_batch_size(
-        op->send_initial_metadata);
+    const size_t metadata_size =
+        grpc_metadata_batch_size(op->send_initial_metadata);
     const size_t metadata_peer_limit =
         transport_global->settings[GRPC_PEER_SETTINGS]
                                   [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
     if (metadata_size > metadata_peer_limit) {
       gpr_log(GPR_DEBUG,
               "to-be-sent initial metadata size exceeds peer limit "
-              "(%lu vs. %lu)", metadata_size, metadata_peer_limit);
+              "(%lu vs. %lu)",
+              metadata_size, metadata_peer_limit);
       cancel_from_api(exec_ctx, transport_global, stream_global,
                       GRPC_STATUS_RESOURCE_EXHAUSTED);
     } else {
@@ -1002,15 +1003,16 @@ static void perform_stream_op_locked(grpc_exec_ctx *exec_ctx,
     stream_global->send_trailing_metadata_finished =
         add_closure_barrier(on_complete);
     stream_global->send_trailing_metadata = op->send_trailing_metadata;
-    const size_t metadata_size = grpc_metadata_batch_size(
-        op->send_trailing_metadata);
+    const size_t metadata_size =
+        grpc_metadata_batch_size(op->send_trailing_metadata);
     const size_t metadata_peer_limit =
         transport_global->settings[GRPC_PEER_SETTINGS]
                                   [GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE];
     if (metadata_size > metadata_peer_limit) {
       gpr_log(GPR_DEBUG,
               "to-be-sent trailing metadata size exceeds peer limit "
-              "(%lu vs. %lu)", metadata_size, metadata_peer_limit);
+              "(%lu vs. %lu)",
+              metadata_size, metadata_peer_limit);
       cancel_from_api(exec_ctx, transport_global, stream_global,
                       GRPC_STATUS_RESOURCE_EXHAUSTED);
     } else {
diff --git a/src/core/ext/transport/chttp2/transport/incoming_metadata.h b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
index 7db5db8de0..df4343b93e 100644
--- a/src/core/ext/transport/chttp2/transport/incoming_metadata.h
+++ b/src/core/ext/transport/chttp2/transport/incoming_metadata.h
@@ -42,7 +42,7 @@ typedef struct {
   size_t capacity;
   gpr_timespec deadline;
   int published;
-  size_t size;  /* total size of metadata */
+  size_t size;  // total size of metadata
 } grpc_chttp2_incoming_metadata_buffer;
 
 /** assumes everything initially zeroed */
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index 9516956724..4bd374b7fa 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -639,8 +639,8 @@ static void on_initial_header(void *tp, grpc_mdelem *md) {
         gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), *cached_timeout));
     GRPC_MDELEM_UNREF(md);
   } else {
-    const size_t new_size = stream_parsing->metadata_buffer[0].size +
-                            GRPC_MDELEM_LENGTH(md);
+    const size_t new_size =
+        stream_parsing->metadata_buffer[0].size + GRPC_MDELEM_LENGTH(md);
     grpc_chttp2_transport_global *transport_global =
         &TRANSPORT_FROM_PARSING(transport_parsing)->global;
     const size_t metadata_size_limit =
@@ -685,8 +685,8 @@ static void on_trailing_header(void *tp, grpc_mdelem *md) {
     stream_parsing->seen_error = true;
   }
 
-  const size_t new_size = stream_parsing->metadata_buffer[1].size +
-                          GRPC_MDELEM_LENGTH(md);
+  const size_t new_size =
+      stream_parsing->metadata_buffer[1].size + GRPC_MDELEM_LENGTH(md);
   grpc_chttp2_transport_global *transport_global =
       &TRANSPORT_FROM_PARSING(transport_parsing)->global;
   const size_t metadata_size_limit =
diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index 4ecbbd1b1b..6d82f4d681 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -148,8 +148,8 @@ const char *grpc_mdstr_as_c_string(grpc_mdstr *s);
 #define GRPC_MDSTR_LENGTH(s) (GPR_SLICE_LENGTH(s->slice))
 
 /* We add 32 bytes of padding as per RFC-7540 section 6.5.2. */
-#define GRPC_MDELEM_LENGTH(e) (GRPC_MDSTR_LENGTH((e)->key) + \
-                               GRPC_MDSTR_LENGTH((e)->value) + 32)
+#define GRPC_MDELEM_LENGTH(e) \
+  (GRPC_MDSTR_LENGTH((e)->key) + GRPC_MDSTR_LENGTH((e)->value) + 32)
 
 int grpc_mdstr_is_legal_header(grpc_mdstr *s);
 int grpc_mdstr_is_legal_nonbin_header(grpc_mdstr *s);
diff --git a/src/core/lib/transport/metadata_batch.c b/src/core/lib/transport/metadata_batch.c
index 4e1cd8e2c1..c0afc715bc 100644
--- a/src/core/lib/transport/metadata_batch.c
+++ b/src/core/lib/transport/metadata_batch.c
@@ -195,8 +195,8 @@ int grpc_metadata_batch_is_empty(grpc_metadata_batch *batch) {
 
 size_t grpc_metadata_batch_size(grpc_metadata_batch *batch) {
   size_t size = 0;
-  for (grpc_linked_mdelem* elem = batch->list.head;
-       elem != NULL; elem = elem->next) {
+  for (grpc_linked_mdelem* elem = batch->list.head; elem != NULL;
+       elem = elem->next) {
     size += GRPC_MDELEM_LENGTH(elem->md);
   }
   return size;
diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.c
index aa9125dc7a..e5820688ef 100644
--- a/test/core/bad_client/bad_client.c
+++ b/test/core/bad_client/bad_client.c
@@ -90,8 +90,7 @@ static void read_done(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
 void grpc_run_bad_client_test(
     grpc_bad_client_server_side_validator server_validator,
     grpc_bad_client_client_stream_validator client_validator,
-    const char *client_payload,
-    size_t client_payload_length, uint32_t flags) {
+    const char *client_payload, size_t client_payload_length, uint32_t flags) {
   grpc_endpoint_pair sfd;
   thd_args a;
   gpr_thd_id id;
@@ -177,8 +176,8 @@ void grpc_run_bad_client_test(
       grpc_endpoint_read(&exec_ctx, sfd.client, &args.incoming,
                          &read_done_closure);
       grpc_exec_ctx_finish(&exec_ctx);
-      GPR_ASSERT(gpr_event_wait(&args.read_done,
-                                GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)));
+      GPR_ASSERT(
+          gpr_event_wait(&args.read_done, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5)));
       gpr_slice_buffer_destroy(&args.incoming);
     }
     // Shutdown.
diff --git a/test/core/bad_client/bad_client.h b/test/core/bad_client/bad_client.h
index b6e8a6dd5b..ecd6721a78 100644
--- a/test/core/bad_client/bad_client.h
+++ b/test/core/bad_client/bad_client.h
@@ -59,9 +59,9 @@ void grpc_run_bad_client_test(
     grpc_bad_client_client_stream_validator client_validator,
     const char *client_payload, size_t client_payload_length, uint32_t flags);
 
-#define GRPC_RUN_BAD_CLIENT_TEST(server_validator, client_validator, \
-                                 payload, flags) \
-  grpc_run_bad_client_test(server_validator, client_validator, \
-                           payload, sizeof(payload) - 1, flags)
+#define GRPC_RUN_BAD_CLIENT_TEST(server_validator, client_validator, payload, \
+                                 flags) \
+  grpc_run_bad_client_test(server_validator, client_validator, payload, \
+                           sizeof(payload) - 1, flags)
 
 #endif /* GRPC_TEST_CORE_BAD_CLIENT_BAD_CLIENT_H */
diff --git a/test/core/bad_client/tests/large_metadata.c b/test/core/bad_client/tests/large_metadata.c
index 95932205cf..b3521439f5 100644
--- a/test/core/bad_client/tests/large_metadata.c
+++ b/test/core/bad_client/tests/large_metadata.c
@@ -40,16 +40,19 @@
 #include "test/core/end2end/cq_verifier.h"
 
 #define PFX_TOO_MUCH_METADATA_FROM_CLIENT_STR                              \
-  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"                                       \
-  /* settings frame */                                                     \
-  "\x00\x00\x00\x04\x00\x00\x00\x00\x00"                                   \
-  /* headers: generated from large_metadata.headers in this directory */   \
-  "\x00""5{\x01\x05\x00\x00\x00\x01"                                       \
+  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"     /* settings frame */              \
+  "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* headers: generated from        \
+                                            large_metadata.headers in this \
+                                            directory */                   \
+  "\x00"                                                                   \
+  "5{\x01\x05\x00\x00\x00\x01"                                             \
   "\x10\x05:path\x08/foo/bar"                                              \
   "\x10\x07:scheme\x04http"                                                \
   "\x10\x07:method\x04POST"                                                \
   "\x10\x0a:authority\x09localhost"                                        \
-  "\x10\x0c""content-type\x10""application/grpc"                           \
+  "\x10\x0c"                                                               \
+  "content-type\x10"                                                       \
+  "application/grpc"                                                       \
   "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip"                  \
   "\x10\x02te\x08trailers"                                                 \
   "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"                 \
@@ -339,22 +342,27 @@
   "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
   "aaaaaaaa"
 
-#define PFX_TOO_MUCH_METADATA_FROM_SERVER_STR                              \
-  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"                                       \
-  /* settings frame: sets MAX_HEADER_LIST_SIZE to 16K */                   \
-  "\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x40\x00"           \
-  /* headers: generated from simple_request.headers in this directory */   \
-  "\x00\x00\xc9\x01\x04\x00\x00\x00\x01"                                   \
-  "\x10\x05:path\x08/foo/bar"                                              \
-  "\x10\x07:scheme\x04http"                                                \
-  "\x10\x07:method\x04POST"                                                \
-  "\x10\x0a:authority\x09localhost"                                        \
-  "\x10\x0c"                                                               \
-  "content-type\x10"                                                       \
-  "application/grpc"                                                       \
-  "\x10\x14grpc-accept-encoding\x15"                                       \
-  "deflate,identity,gzip"                                                  \
-  "\x10\x02te\x08trailers"                                                 \
+#define PFX_TOO_MUCH_METADATA_FROM_SERVER_STR                                              \
+  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" /* settings frame: sets                               \
+                                        MAX_HEADER_LIST_SIZE to 16K */                     \
+  "\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x40\x00" /* headers:               \
+                                                                    generated              \
+                                                                    from                   \
+                                                                    simple_request.headers \
+                                                                    in this                \
+                                                                    directory              \
+                                                                    */                     \
+  "\x00\x00\xc9\x01\x04\x00\x00\x00\x01"                                                   \
+  "\x10\x05:path\x08/foo/bar"                                                              \
+  "\x10\x07:scheme\x04http"                                                                \
+  "\x10\x07:method\x04POST"                                                                \
+  "\x10\x0a:authority\x09localhost"                                                        \
+  "\x10\x0c"                                                                               \
+  "content-type\x10"                                                                       \
+  "application/grpc"                                                                       \
+  "\x10\x14grpc-accept-encoding\x15"                                                       \
+  "deflate,identity,gzip"                                                                  \
+  "\x10\x02te\x08trailers"                                                                 \
   "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"
 
 static void *tag(intptr_t t) { return (void *)t; }
@@ -385,8 +393,9 @@ static void server_verifier(grpc_server *server, grpc_completion_queue *cq,
   cq_verifier_destroy(cqv);
 }
 
-static void server_verifier_sends_too_much_metadata(
-    grpc_server *server, grpc_completion_queue *cq, void *registered_method) {
+static void server_verifier_sends_too_much_metadata(grpc_server *server,
+                                                    grpc_completion_queue *cq,
+                                                    void *registered_method) {
   grpc_call_error error;
   grpc_call *s;
   grpc_call_details call_details;
diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.c b/test/core/end2end/fixtures/h2_ssl_proxy.c
index 0ec6ad437e..151a86cb8f 100644
--- a/test/core/end2end/fixtures/h2_ssl_proxy.c
+++ b/test/core/end2end/fixtures/h2_ssl_proxy.c
@@ -76,8 +76,8 @@ static grpc_channel *create_proxy_client(const char *target,
                                 {"foo.test.google.fr"}};
   grpc_channel_args *new_client_args =
       grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
-  channel = grpc_secure_channel_create(ssl_creds, target, new_client_args,
-                                       NULL);
+  channel =
+      grpc_secure_channel_create(ssl_creds, target, new_client_args, NULL);
   grpc_channel_credentials_release(ssl_creds);
   grpc_channel_args_destroy(new_client_args);
   return channel;
diff --git a/test/core/end2end/fixtures/proxy.c b/test/core/end2end/fixtures/proxy.c
index ff413ffd65..f6e01ec41c 100644
--- a/test/core/end2end/fixtures/proxy.c
+++ b/test/core/end2end/fixtures/proxy.c
@@ -89,9 +89,9 @@ typedef struct {
 static void thread_main(void *arg);
 static void request_call(grpc_end2end_proxy *proxy);
 
-grpc_end2end_proxy *grpc_end2end_proxy_create(
-    const grpc_end2end_proxy_def *def,
-    grpc_channel_args *client_args, grpc_channel_args *server_args) {
+grpc_end2end_proxy *grpc_end2end_proxy_create(const grpc_end2end_proxy_def *def,
+                                              grpc_channel_args *client_args,
+                                              grpc_channel_args *server_args) {
   gpr_thd_options opt = gpr_thd_options_default();
   int proxy_port = grpc_pick_unused_port_or_die();
   int server_port = grpc_pick_unused_port_or_die();
diff --git a/test/core/end2end/fixtures/proxy.h b/test/core/end2end/fixtures/proxy.h
index 89f95f09f9..75b75d1331 100644
--- a/test/core/end2end/fixtures/proxy.h
+++ b/test/core/end2end/fixtures/proxy.h
@@ -47,9 +47,9 @@ typedef struct grpc_end2end_proxy_def {
                                  grpc_channel_args *client_args);
 } grpc_end2end_proxy_def;
 
-grpc_end2end_proxy *grpc_end2end_proxy_create(
-    const grpc_end2end_proxy_def *def,
-    grpc_channel_args *client_args, grpc_channel_args *server_args);
+grpc_end2end_proxy *grpc_end2end_proxy_create(const grpc_end2end_proxy_def *def,
+                                              grpc_channel_args *client_args,
+                                              grpc_channel_args *server_args);
 void grpc_end2end_proxy_destroy(grpc_end2end_proxy *proxy);
 
 const char *grpc_end2end_proxy_get_client_target(grpc_end2end_proxy *proxy);
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c
index 6d3074a94b..dd29552b97 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.c
@@ -107,11 +107,12 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   gpr_timespec deadline = five_seconds_time();
   grpc_metadata meta;
   const size_t large_size = 64 * 1024;
-  grpc_arg arg = { GRPC_ARG_INTEGER, GRPC_ARG_MAX_METADATA_SIZE,
-                   { .integer=(int)large_size + 1024 } };
-  grpc_channel_args args = { 1, &arg };
-  grpc_end2end_test_fixture f = begin_test(
-      config, "test_request_with_large_metadata", &args, &args);
+  grpc_arg arg = {GRPC_ARG_INTEGER,
+                  GRPC_ARG_MAX_METADATA_SIZE,
+                  {.integer=(int)large_size + 1024}};
+  grpc_channel_args args = {1, &arg};
+  grpc_end2end_test_fixture f =
+      begin_test(config, "test_request_with_large_metadata", &args, &args);
   cq_verifier *cqv = cq_verifier_create(f.cq);
   grpc_op ops[6];
   grpc_op *op;
-- 
GitLab


From 305ffd4847617c7206b0b4ccec0fcd8977b2e095 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 4 May 2016 10:26:24 -0700
Subject: [PATCH 354/525] make SendStatusFromServer optionally send a message
 as well

---
 .../Internal/FakeNativeCall.cs                |  3 +-
 .../Grpc.Core/Internal/AsyncCallServer.cs     |  3 +-
 .../Grpc.Core/Internal/CallSafeHandle.cs      |  7 +++--
 src/csharp/Grpc.Core/Internal/INativeCall.cs  |  2 +-
 .../Grpc.Core/Internal/NativeMethods.cs       | 18 ++++++-----
 src/csharp/ext/grpc_csharp_ext.c              | 30 +++++++++++++------
 6 files changed, 41 insertions(+), 22 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
index 1bec258ca2..909112a47c 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/FakeNativeCall.cs
@@ -165,7 +165,8 @@ namespace Grpc.Core.Internal.Tests
             SendCompletionHandler = callback;
         }
 
-        public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata)
+        public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+            byte[] optionalPayload, WriteFlags writeFlags)
         {
             SendStatusFromServerHandler = callback;
         }
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index eafe2ccab8..c5d900b134 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -149,7 +149,8 @@ namespace Grpc.Core.Internal
 
                 using (var metadataArray = MetadataArraySafeHandle.Create(trailers))
                 {
-                    call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent);
+                    call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent,
+                        null, new WriteFlags());
                 }
                 halfcloseRequested = true;
                 initialMetadataSent = true;
diff --git a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs
index 500653ba5d..244b97d4a4 100644
--- a/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs
+++ b/src/csharp/Grpc.Core/Internal/CallSafeHandle.cs
@@ -135,13 +135,16 @@ namespace Grpc.Core.Internal
             }
         }
 
-        public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata)
+        public void StartSendStatusFromServer(SendCompletionHandler callback, Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+            byte[] optionalPayload, WriteFlags writeFlags)
         {
             using (completionQueue.NewScope())
             {
                 var ctx = BatchContextSafeHandle.Create();
+                var optionalPayloadLength = optionalPayload != null ? new UIntPtr((ulong)optionalPayload.Length) : UIntPtr.Zero;
                 completionRegistry.RegisterBatchCompletion(ctx, (success, context) => callback(success));
-                Native.grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata).CheckOk();
+                Native.grpcsharp_call_send_status_from_server(this, ctx, status.StatusCode, status.Detail, metadataArray, sendEmptyInitialMetadata,
+                    optionalPayload, optionalPayloadLength, writeFlags).CheckOk();
             }
         }
 
diff --git a/src/csharp/Grpc.Core/Internal/INativeCall.cs b/src/csharp/Grpc.Core/Internal/INativeCall.cs
index cbef599139..cd3719cb50 100644
--- a/src/csharp/Grpc.Core/Internal/INativeCall.cs
+++ b/src/csharp/Grpc.Core/Internal/INativeCall.cs
@@ -78,7 +78,7 @@ namespace Grpc.Core.Internal
 
         void StartSendCloseFromClient(SendCompletionHandler callback);
 
-        void StartSendStatusFromServer(SendCompletionHandler callback, Grpc.Core.Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata);
+        void StartSendStatusFromServer(SendCompletionHandler callback, Grpc.Core.Status status, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata, byte[] optionalPayload, Grpc.Core.WriteFlags writeFlags);
 
         void StartServerSide(ReceivedCloseOnServerHandler callback);
     }
diff --git a/src/csharp/Grpc.Core/Internal/NativeMethods.cs b/src/csharp/Grpc.Core/Internal/NativeMethods.cs
index 9ee0ba3bc0..c277c73ef0 100644
--- a/src/csharp/Grpc.Core/Internal/NativeMethods.cs
+++ b/src/csharp/Grpc.Core/Internal/NativeMethods.cs
@@ -421,20 +421,21 @@ namespace Grpc.Core.Internal
             public delegate GRPCCallError grpcsharp_call_cancel_delegate(CallSafeHandle call);
             public delegate GRPCCallError grpcsharp_call_cancel_with_status_delegate(CallSafeHandle call, StatusCode status, string description);
             public delegate GRPCCallError grpcsharp_call_start_unary_delegate(CallSafeHandle call,
-                BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
+                BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
             public delegate GRPCCallError grpcsharp_call_start_client_streaming_delegate(CallSafeHandle call,
                 BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
             public delegate GRPCCallError grpcsharp_call_start_server_streaming_delegate(CallSafeHandle call,
-                BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len,
+                BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen,
                 MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
             public delegate GRPCCallError grpcsharp_call_start_duplex_streaming_delegate(CallSafeHandle call,
                 BatchContextSafeHandle ctx, MetadataArraySafeHandle metadataArray);
             public delegate GRPCCallError grpcsharp_call_send_message_delegate(CallSafeHandle call,
-                BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
+                BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
             public delegate GRPCCallError grpcsharp_call_send_close_from_client_delegate(CallSafeHandle call,
                 BatchContextSafeHandle ctx);
             public delegate GRPCCallError grpcsharp_call_send_status_from_server_delegate(CallSafeHandle call,
-                BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata);
+                BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+                byte[] optionalSendBuffer, UIntPtr optionalSendBufferLen, WriteFlags writeFlags);
             public delegate GRPCCallError grpcsharp_call_recv_message_delegate(CallSafeHandle call,
                 BatchContextSafeHandle ctx);
             public delegate GRPCCallError grpcsharp_call_recv_initial_metadata_delegate(CallSafeHandle call,
@@ -593,7 +594,7 @@ namespace Grpc.Core.Internal
 
             [DllImport("grpc_csharp_ext.dll")]
             public static extern GRPCCallError grpcsharp_call_start_unary(CallSafeHandle call,
-                BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
+                BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
 
             [DllImport("grpc_csharp_ext.dll")]
             public static extern GRPCCallError grpcsharp_call_start_client_streaming(CallSafeHandle call,
@@ -601,7 +602,7 @@ namespace Grpc.Core.Internal
 
             [DllImport("grpc_csharp_ext.dll")]
             public static extern GRPCCallError grpcsharp_call_start_server_streaming(CallSafeHandle call,
-                BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len,
+                BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen,
                 MetadataArraySafeHandle metadataArray, WriteFlags writeFlags);
 
             [DllImport("grpc_csharp_ext.dll")]
@@ -610,7 +611,7 @@ namespace Grpc.Core.Internal
 
             [DllImport("grpc_csharp_ext.dll")]
             public static extern GRPCCallError grpcsharp_call_send_message(CallSafeHandle call,
-                BatchContextSafeHandle ctx, byte[] send_buffer, UIntPtr send_buffer_len, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
+                BatchContextSafeHandle ctx, byte[] sendBuffer, UIntPtr sendBufferLen, WriteFlags writeFlags, bool sendEmptyInitialMetadata);
 
             [DllImport("grpc_csharp_ext.dll")]
             public static extern GRPCCallError grpcsharp_call_send_close_from_client(CallSafeHandle call,
@@ -618,7 +619,8 @@ namespace Grpc.Core.Internal
 
             [DllImport("grpc_csharp_ext.dll")]
             public static extern GRPCCallError grpcsharp_call_send_status_from_server(CallSafeHandle call,
-                BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata);
+                BatchContextSafeHandle ctx, StatusCode statusCode, string statusMessage, MetadataArraySafeHandle metadataArray, bool sendEmptyInitialMetadata,
+                byte[] optionalSendBuffer, UIntPtr optionalSendBufferLen, WriteFlags writeFlags);
 
             [DllImport("grpc_csharp_ext.dll")]
             public static extern GRPCCallError grpcsharp_call_recv_message(CallSafeHandle call,
diff --git a/src/csharp/ext/grpc_csharp_ext.c b/src/csharp/ext/grpc_csharp_ext.c
index aeef8a79e9..5b8ff9b819 100644
--- a/src/csharp/ext/grpc_csharp_ext.c
+++ b/src/csharp/ext/grpc_csharp_ext.c
@@ -715,10 +715,11 @@ grpcsharp_call_send_close_from_client(grpc_call *call,
 GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_send_status_from_server(
     grpc_call *call, grpcsharp_batch_context *ctx, grpc_status_code status_code,
     const char *status_details, grpc_metadata_array *trailing_metadata,
-    int32_t send_empty_initial_metadata) {
+    int32_t send_empty_initial_metadata, const char* optional_send_buffer,
+    size_t optional_send_buffer_len, uint32_t write_flags) {
   /* TODO: don't use magic number */
-  grpc_op ops[2];
-  size_t nops = send_empty_initial_metadata ? 2 : 1;
+  grpc_op ops[3];
+  size_t nops = 1;
   ops[0].op = GRPC_OP_SEND_STATUS_FROM_SERVER;
   ops[0].data.send_status_from_server.status = status_code;
   ops[0].data.send_status_from_server.status_details =
@@ -731,12 +732,23 @@ GPR_EXPORT grpc_call_error GPR_CALLTYPE grpcsharp_call_send_status_from_server(
       ctx->send_status_from_server.trailing_metadata.metadata;
   ops[0].flags = 0;
   ops[0].reserved = NULL;
-  ops[1].op = GRPC_OP_SEND_INITIAL_METADATA;
-  ops[1].data.send_initial_metadata.count = 0;
-  ops[1].data.send_initial_metadata.metadata = NULL;
-  ops[1].flags = 0;
-  ops[1].reserved = NULL;
-
+  if (optional_send_buffer) {
+    ops[nops].op = GRPC_OP_SEND_MESSAGE;
+    ctx->send_message = string_to_byte_buffer(optional_send_buffer,
+                                              optional_send_buffer_len);
+    ops[nops].data.send_message = ctx->send_message;
+    ops[nops].flags = write_flags;
+    ops[nops].reserved = NULL;
+    nops ++;
+  }
+  if (send_empty_initial_metadata) {
+    ops[nops].op = GRPC_OP_SEND_INITIAL_METADATA;
+    ops[nops].data.send_initial_metadata.count = 0;
+    ops[nops].data.send_initial_metadata.metadata = NULL;
+    ops[nops].flags = 0;
+    ops[nops].reserved = NULL;
+    nops++;
+  }
   return grpc_call_start_batch(call, ops, nops, ctx, NULL);
 }
 
-- 
GitLab


From 14e8dee2dd1fc2db7c2dfbf092fc7d99a296062a Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 4 May 2016 12:59:23 -0700
Subject: [PATCH 355/525] use just one response batch for unary response
 serverside calls

---
 .../Internal/AsyncCallServerTest.cs           |  2 +-
 .../Grpc.Core/Internal/AsyncCallServer.cs     | 11 +++++--
 .../Grpc.Core/Internal/ServerCallHandler.cs   | 32 +++++++++----------
 3 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
index 058371521d..0e204761f6 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs
@@ -168,7 +168,7 @@ namespace Grpc.Core.Internal.Tests
             var responseStream = new ServerResponseStream<string, string>(asyncCallServer);
 
             var writeTask = responseStream.WriteAsync("request1");
-            var writeStatusTask = asyncCallServer.SendStatusFromServerAsync(Status.DefaultSuccess, new Metadata());
+            var writeStatusTask = asyncCallServer.SendStatusFromServerAsync(Status.DefaultSuccess, new Metadata(), null);
 
             fakeCall.SendCompletionHandler(true);
             fakeCall.SendStatusFromServerHandler(true);
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index c5d900b134..b1566b44a7 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -139,8 +139,11 @@ namespace Grpc.Core.Internal
         /// Sends call result status, indicating we are done with writes.
         /// Sending a status different from StatusCode.OK will also implicitly cancel the call.
         /// </summary>
-        public Task SendStatusFromServerAsync(Status status, Metadata trailers)
+        public Task SendStatusFromServerAsync(Status status, Metadata trailers, Tuple<TResponse, WriteFlags> optionalWrite)
         {
+            byte[] payload = optionalWrite != null ? UnsafeSerialize(optionalWrite.Item1) : null;
+            var writeFlags = optionalWrite != null ? optionalWrite.Item2 : default(WriteFlags);
+
             lock (myLock)
             {
                 GrpcPreconditions.CheckState(started);
@@ -150,11 +153,15 @@ namespace Grpc.Core.Internal
                 using (var metadataArray = MetadataArraySafeHandle.Create(trailers))
                 {
                     call.StartSendStatusFromServer(HandleSendStatusFromServerFinished, status, metadataArray, !initialMetadataSent,
-                        null, new WriteFlags());
+                        payload, writeFlags);
                 }
                 halfcloseRequested = true;
                 initialMetadataSent = true;
                 sendStatusFromServerTcs = new TaskCompletionSource<object>();
+                if (optionalWrite != null)
+                {
+                    streamingWritesCounter++;
+                }
                 return sendStatusFromServerTcs.Task;
             }
         }
diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
index 00d82d51e8..bbbefd0699 100644
--- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
@@ -75,14 +75,15 @@ namespace Grpc.Core.Internal
             var responseStream = new ServerResponseStream<TRequest, TResponse>(asyncCall);
 
             Status status;
+            Tuple<TResponse,WriteFlags> responseTuple = null;
             var context = HandlerUtils.NewContext(newRpc, asyncCall.Peer, responseStream, asyncCall.CancellationToken);
             try
             {
                 GrpcPreconditions.CheckArgument(await requestStream.MoveNext().ConfigureAwait(false));
                 var request = requestStream.Current;
-                var result = await handler(request, context).ConfigureAwait(false);
+                var response = await handler(request, context).ConfigureAwait(false);
                 status = context.Status;
-                await responseStream.WriteAsync(result).ConfigureAwait(false);
+                responseTuple = Tuple.Create(response, HandlerUtils.GetWriteFlags(context.WriteOptions));
             } 
             catch (Exception e)
             {
@@ -91,7 +92,7 @@ namespace Grpc.Core.Internal
             }
             try
             {
-                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, responseTuple).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -145,7 +146,7 @@ namespace Grpc.Core.Internal
 
             try
             {
-                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, null).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -183,19 +184,13 @@ namespace Grpc.Core.Internal
             var responseStream = new ServerResponseStream<TRequest, TResponse>(asyncCall);
 
             Status status;
+            Tuple<TResponse,WriteFlags> responseTuple = null;
             var context = HandlerUtils.NewContext(newRpc, asyncCall.Peer, responseStream, asyncCall.CancellationToken);
             try
             {
-                var result = await handler(requestStream, context).ConfigureAwait(false);
+                var response = await handler(requestStream, context).ConfigureAwait(false);
                 status = context.Status;
-                try
-                {
-                    await responseStream.WriteAsync(result).ConfigureAwait(false);
-                }
-                catch (OperationCanceledException)
-                {
-                    status = Status.DefaultCancelled;
-                }
+                responseTuple = Tuple.Create(response, HandlerUtils.GetWriteFlags(context.WriteOptions));
             }
             catch (Exception e)
             {
@@ -205,7 +200,7 @@ namespace Grpc.Core.Internal
 
             try
             {
-                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, responseTuple).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -256,7 +251,7 @@ namespace Grpc.Core.Internal
             }
             try
             {
-                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers).ConfigureAwait(false);
+                await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, null).ConfigureAwait(false);
             }
             catch (OperationCanceledException)
             {
@@ -278,7 +273,7 @@ namespace Grpc.Core.Internal
             
             asyncCall.Initialize(newRpc.Call);
             var finishedTask = asyncCall.ServerSideCallAsync();
-            await asyncCall.SendStatusFromServerAsync(new Status(StatusCode.Unimplemented, ""), Metadata.Empty).ConfigureAwait(false);
+            await asyncCall.SendStatusFromServerAsync(new Status(StatusCode.Unimplemented, ""), Metadata.Empty, null).ConfigureAwait(false);
             await finishedTask.ConfigureAwait(false);
         }
     }
@@ -297,6 +292,11 @@ namespace Grpc.Core.Internal
             return new Status(StatusCode.Unknown, "Exception was thrown by handler.");
         }
 
+        public static WriteFlags GetWriteFlags(WriteOptions writeOptions)
+        {
+            return writeOptions != null ? writeOptions.Flags : default(WriteFlags);
+        }
+
         public static ServerCallContext NewContext<TRequest, TResponse>(ServerRpcNew newRpc, string peer, ServerResponseStream<TRequest, TResponse> serverResponseStream, CancellationToken cancellationToken)
             where TRequest : class
             where TResponse : class
-- 
GitLab


From 2901ea55ed17b16107bda30091a8ca0b84f6a926 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 4 May 2016 13:42:04 -0700
Subject: [PATCH 356/525] improve serverside handlers

---
 .../Grpc.Core/Internal/ServerCallHandler.cs   | 40 +++++++++++++------
 1 file changed, 28 insertions(+), 12 deletions(-)

diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
index bbbefd0699..85b7a4b01e 100644
--- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
@@ -87,16 +87,20 @@ namespace Grpc.Core.Internal
             } 
             catch (Exception e)
             {
-                Logger.Error(e, "Exception occured in handler.");
+                if (!(e is RpcException))
+                {
+                    Logger.Warning(e, "Exception occured in handler.");
+                }
                 status = HandlerUtils.StatusFromException(e);
             }
             try
             {
                 await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, responseTuple).ConfigureAwait(false);
             }
-            catch (OperationCanceledException)
+            catch (Exception)
             {
-                // Call has been already cancelled.
+                asyncCall.Cancel();
+                throw;
             }
             await finishedTask.ConfigureAwait(false);
         }
@@ -140,7 +144,10 @@ namespace Grpc.Core.Internal
             }
             catch (Exception e)
             {
-                Logger.Error(e, "Exception occured in handler.");
+                if (!(e is RpcException))
+                {
+                    Logger.Warning(e, "Exception occured in handler.");
+                }
                 status = HandlerUtils.StatusFromException(e);
             }
 
@@ -148,9 +155,10 @@ namespace Grpc.Core.Internal
             {
                 await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, null).ConfigureAwait(false);
             }
-            catch (OperationCanceledException)
+            catch (Exception)
             {
-                // Call has been already cancelled.
+                asyncCall.Cancel();
+                throw;
             }
             await finishedTask.ConfigureAwait(false);
         }
@@ -194,7 +202,10 @@ namespace Grpc.Core.Internal
             }
             catch (Exception e)
             {
-                Logger.Error(e, "Exception occured in handler.");
+                if (!(e is RpcException))
+                {
+                    Logger.Warning(e, "Exception occured in handler.");
+                }
                 status = HandlerUtils.StatusFromException(e);
             }
 
@@ -202,9 +213,10 @@ namespace Grpc.Core.Internal
             {
                 await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, responseTuple).ConfigureAwait(false);
             }
-            catch (OperationCanceledException)
+            catch (Exception)
             {
-                // Call has been already cancelled.
+                asyncCall.Cancel();
+                throw;
             }
             await finishedTask.ConfigureAwait(false);
         }
@@ -246,16 +258,20 @@ namespace Grpc.Core.Internal
             }
             catch (Exception e)
             {
-                Logger.Error(e, "Exception occured in handler.");
+                if (!(e is RpcException))
+                {
+                    Logger.Warning(e, "Exception occured in handler.");
+                }
                 status = HandlerUtils.StatusFromException(e);
             }
             try
             {
                 await asyncCall.SendStatusFromServerAsync(status, context.ResponseTrailers, null).ConfigureAwait(false);
             }
-            catch (OperationCanceledException)
+            catch (Exception)
             {
-                // Call has been already cancelled.
+                asyncCall.Cancel();
+                throw;
             }
             await finishedTask.ConfigureAwait(false);
         }
-- 
GitLab


From d039a98a94cc2f1d8769a3a11eea73494cc287f4 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Tue, 5 Apr 2016 15:15:03 -0700
Subject: [PATCH 357/525] Add Python grpcio protoc package

---
 setup.py                                      |   1 +
 src/python/grpcio/grpc/__init__.py            |   3 +-
 tools/distrib/python/bazel_deps.sh            |  39 ++++++
 tools/distrib/python/grpcio_protoc/.gitignore |   7 ++
 .../python/grpcio_protoc/grpc/__init__.py     |  30 +++++
 .../grpcio_protoc/grpc/protoc/__init__.py     |  29 +++++
 .../protoc/grpc_python_protoc_compiler.py     |  38 ++++++
 .../grpc/protoc/grpc_python_protoc_plugin.py  |  38 ++++++
 .../python/grpcio_protoc/grpc/protoc/main.h   |  33 +++++
 .../grpcio_protoc/grpc/protoc/protoc.pyx      |  39 ++++++
 .../grpc/protoc/protoc_plugin.pyx             |  39 ++++++
 .../python/grpcio_protoc/protoc_deps.py       |  32 +++++
 .../python/grpcio_protoc/protoc_lib_deps.py   |  32 +++++
 tools/distrib/python/grpcio_protoc/setup.py   | 102 +++++++++++++++
 tools/distrib/python/grpcio_tools/MANIFEST.in |   5 +
 tools/distrib/python/mk_grpcio_protoc.py      | 118 ++++++++++++++++++
 tools/dockerfile/bazel/Dockerfile             |  53 ++++++++
 17 files changed, 637 insertions(+), 1 deletion(-)
 create mode 100755 tools/distrib/python/bazel_deps.sh
 create mode 100644 tools/distrib/python/grpcio_protoc/.gitignore
 create mode 100644 tools/distrib/python/grpcio_protoc/grpc/__init__.py
 create mode 100644 tools/distrib/python/grpcio_protoc/grpc/protoc/__init__.py
 create mode 100644 tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_compiler.py
 create mode 100644 tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_plugin.py
 create mode 100644 tools/distrib/python/grpcio_protoc/grpc/protoc/main.h
 create mode 100644 tools/distrib/python/grpcio_protoc/grpc/protoc/protoc.pyx
 create mode 100644 tools/distrib/python/grpcio_protoc/grpc/protoc/protoc_plugin.pyx
 create mode 100644 tools/distrib/python/grpcio_protoc/protoc_deps.py
 create mode 100644 tools/distrib/python/grpcio_protoc/protoc_lib_deps.py
 create mode 100644 tools/distrib/python/grpcio_protoc/setup.py
 create mode 100644 tools/distrib/python/grpcio_tools/MANIFEST.in
 create mode 100755 tools/distrib/python/mk_grpcio_protoc.py
 create mode 100644 tools/dockerfile/bazel/Dockerfile

diff --git a/setup.py b/setup.py
index cd0d3a1a51..af9eb68534 100644
--- a/setup.py
+++ b/setup.py
@@ -236,6 +236,7 @@ setup_arguments = {
     'ext_modules': CYTHON_EXTENSION_MODULES,
     'packages': list(PACKAGES),
     'package_dir': PACKAGE_DIRECTORIES,
+    'namespace_packages': ['grpc'],
     'package_data': PACKAGE_DATA,
     'install_requires': INSTALL_REQUIRES,
     'setup_requires': SETUP_REQUIRES,
diff --git a/src/python/grpcio/grpc/__init__.py b/src/python/grpcio/grpc/__init__.py
index 7086519106..b844a14c48 100644
--- a/src/python/grpcio/grpc/__init__.py
+++ b/src/python/grpcio/grpc/__init__.py
@@ -1,4 +1,4 @@
-# Copyright 2015, Google Inc.
+# Copyright 2015-2016, Google Inc.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -27,4 +27,5 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+__import__('pkg_resources').declare_namespace(__name__)
 
diff --git a/tools/distrib/python/bazel_deps.sh b/tools/distrib/python/bazel_deps.sh
new file mode 100755
index 0000000000..4619c00887
--- /dev/null
+++ b/tools/distrib/python/bazel_deps.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0)/../../../
+
+docker build -t bazel `realpath ./tools/dockerfile/bazel/`
+docker run -v "`realpath .`:/src/grpc/" \
+  -w /src/grpc/third_party/protobuf              \
+  bazel                                          \
+  bazel query 'deps('$1')'
+
diff --git a/tools/distrib/python/grpcio_protoc/.gitignore b/tools/distrib/python/grpcio_protoc/.gitignore
new file mode 100644
index 0000000000..979704d970
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/.gitignore
@@ -0,0 +1,7 @@
+build/
+protobuf/
+grpc_plugin/
+grpc_root/
+*.c
+*.cpp
+*.egg-info
diff --git a/tools/distrib/python/grpcio_protoc/grpc/__init__.py b/tools/distrib/python/grpcio_protoc/grpc/__init__.py
new file mode 100644
index 0000000000..70ac5edd48
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/grpc/__init__.py
@@ -0,0 +1,30 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+__import__('pkg_resources').declare_namespace(__name__)
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/__init__.py b/tools/distrib/python/grpcio_protoc/grpc/protoc/__init__.py
new file mode 100644
index 0000000000..d5ad73a74a
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/grpc/protoc/__init__.py
@@ -0,0 +1,29 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_compiler.py b/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_compiler.py
new file mode 100644
index 0000000000..5395f2ac10
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_compiler.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+
+from grpc.protoc import protoc
+
+
+if __name__ == '__main__':
+  protoc.run_main(sys.argv)
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_plugin.py b/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_plugin.py
new file mode 100644
index 0000000000..3b279e2976
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_plugin.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import sys
+
+from grpc.protoc import protoc_plugin
+
+
+if __name__ == '__main__':
+  protoc_plugin.run_main(sys.argv)
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/main.h b/tools/distrib/python/grpcio_protoc/grpc/protoc/main.h
new file mode 100644
index 0000000000..fc406a9260
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/grpc/protoc/main.h
@@ -0,0 +1,33 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// We declare `main` here since we want access to it from Cython as an extern
+// but *without* triggering a dllimport declspec when on Windows.
+int main(int argc, char *argv[]);
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc.pyx b/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc.pyx
new file mode 100644
index 0000000000..d987ee1cea
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc.pyx
@@ -0,0 +1,39 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from libc cimport stdlib
+
+cdef extern from "grpc/protoc/main.h":
+  int main(int argc, char *argv[])
+
+def run_main(list args not None):
+  cdef char **argv = <char **>stdlib.malloc(len(args)*sizeof(char *))
+  for i in range(len(args)):
+    argv[i] = args[i]
+  return main(len(args), argv)
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc_plugin.pyx b/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc_plugin.pyx
new file mode 100644
index 0000000000..d987ee1cea
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc_plugin.pyx
@@ -0,0 +1,39 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from libc cimport stdlib
+
+cdef extern from "grpc/protoc/main.h":
+  int main(int argc, char *argv[])
+
+def run_main(list args not None):
+  cdef char **argv = <char **>stdlib.malloc(len(args)*sizeof(char *))
+  for i in range(len(args)):
+    argv[i] = args[i]
+  return main(len(args), argv)
diff --git a/tools/distrib/python/grpcio_protoc/protoc_deps.py b/tools/distrib/python/grpcio_protoc/protoc_deps.py
new file mode 100644
index 0000000000..5be28a77d8
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/protoc_deps.py
@@ -0,0 +1,32 @@
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# AUTO-GENERATED BY mk_grpcio_protoc.py!
+CC_FILES=['google/protobuf/compiler/main.cc', 'google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/distrib/python/grpcio_protoc/protoc_lib_deps.py b/tools/distrib/python/grpcio_protoc/protoc_lib_deps.py
new file mode 100644
index 0000000000..00a8f31069
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/protoc_lib_deps.py
@@ -0,0 +1,32 @@
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# AUTO-GENERATED BY mk_grpcio_protoc.py!
+CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/distrib/python/grpcio_protoc/setup.py b/tools/distrib/python/grpcio_protoc/setup.py
new file mode 100644
index 0000000000..d462b6b213
--- /dev/null
+++ b/tools/distrib/python/grpcio_protoc/setup.py
@@ -0,0 +1,102 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from distutils import extension
+import os
+import os.path
+import sys
+
+import setuptools
+from setuptools.command import build_ext
+
+# TODO(atash) add flag to disable Cython use
+
+os.chdir(os.path.dirname(os.path.abspath(__file__)))
+sys.path.insert(0, os.path.abspath('.'))
+
+import protoc_deps
+import protoc_lib_deps
+
+def protoc_ext_module():
+  protoc_sources = [
+      os.path.join('third_party/protobuf/src', cc_file)
+      for cc_file in protoc_deps.CC_FILES]
+  protoc_ext = extension.Extension(
+    name='grpc.protoc.protoc',
+    sources=['grpc/protoc/protoc.pyx'] + protoc_sources,
+    include_dirs=['.', 'third_party/protobuf/src'],
+    language='c++',
+    define_macros=[('HAVE_PTHREAD', 1)],
+    extra_compile_args=['-lpthread', '-frtti'],
+  )
+  return protoc_ext
+
+def plugin_ext_module():
+  plugin_sources = [
+      'grpc_root/src/compiler/python_generator.cc',
+      'grpc_root/src/compiler/python_plugin.cc'] + [
+      os.path.join('third_party/protobuf/src', cc_file)
+      for cc_file in protoc_lib_deps.CC_FILES]
+  plugin_ext = extension.Extension(
+      name='grpc.protoc.protoc_plugin',
+      sources=['grpc/protoc/protoc_plugin.pyx'] + plugin_sources,
+      include_dirs=[
+          '.',
+          'grpc_root',
+          'grpc_root/include',
+          'third_party/protobuf/src',
+      ],
+      language='c++',
+      define_macros=[('HAVE_PTHREAD', 1)],
+      extra_compile_args=['-lpthread', '-std=c++11'],
+  )
+  return plugin_ext
+
+def maybe_cythonize(exts):
+  from Cython import Build
+  return Build.cythonize(exts)
+
+setuptools.setup(
+  name='grpcio_protoc',
+  version='0.14.0rc1',
+  license='',
+  ext_modules=maybe_cythonize([
+      protoc_ext_module(),
+      plugin_ext_module(),
+  ]),
+  scripts=[
+    'grpc/protoc/grpc_python_protoc_compiler.py',
+    'grpc/protoc/grpc_python_protoc_plugin.py',
+  ],
+  packages=setuptools.find_packages('.'),
+  namespace_packages=['grpc'],
+  install_requires=[
+    'protobuf>=3.0.0a3',
+  ],
+)
diff --git a/tools/distrib/python/grpcio_tools/MANIFEST.in b/tools/distrib/python/grpcio_tools/MANIFEST.in
new file mode 100644
index 0000000000..e6ab312f09
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/MANIFEST.in
@@ -0,0 +1,5 @@
+include protoc_deps.py
+include protoc_lib_deps.py
+graft grpc
+graft grpc_root
+graft third_party
diff --git a/tools/distrib/python/mk_grpcio_protoc.py b/tools/distrib/python/mk_grpcio_protoc.py
new file mode 100755
index 0000000000..c09a77982d
--- /dev/null
+++ b/tools/distrib/python/mk_grpcio_protoc.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import os.path
+import shutil
+import subprocess
+
+DEPS_FILE_CONTENT="""
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# AUTO-GENERATED BY mk_grpcio_protoc.py!
+CC_FILES={}
+"""
+
+# Bazel query result prefix for expected source files in protobuf.
+PROTOBUF_CC_PREFIX = '//:src/'
+
+os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)),
+                      '..', '..', '..'))
+
+GRPC_PYTHON_ROOT = os.path.abspath('tools/distrib/python/grpcio_protoc')
+
+GRPC_PROTOBUF = os.path.abspath('third_party/protobuf/src')
+GRPC_PROTOC_PLUGINS = os.path.abspath('src/compiler')
+GRPC_PYTHON_PROTOBUF = os.path.join(GRPC_PYTHON_ROOT,
+                                    'third_party/protobuf/src')
+GRPC_PYTHON_PROTOC_PLUGINS = os.path.join(GRPC_PYTHON_ROOT,
+                                          'grpc_root/src/compiler')
+GRPC_PYTHON_PROTOC_DEPS = os.path.join(GRPC_PYTHON_ROOT,
+                                       'protoc_deps.py')
+GRPC_PYTHON_PROTOC_LIB_DEPS = os.path.join(GRPC_PYTHON_ROOT,
+                                           'protoc_lib_deps.py')
+
+GRPC_INCLUDE = os.path.abspath('include')
+GRPC_PYTHON_INCLUDE = os.path.join(GRPC_PYTHON_ROOT, 'grpc_root/include')
+
+for tree in [GRPC_PYTHON_PROTOBUF,
+             GRPC_PYTHON_PROTOC_PLUGINS,
+             GRPC_PYTHON_INCLUDE]:
+  try:
+    shutil.rmtree(tree)
+  except Exception as _:
+    pass
+shutil.copytree(GRPC_PROTOBUF, GRPC_PYTHON_PROTOBUF)
+shutil.copytree(GRPC_PROTOC_PLUGINS, GRPC_PYTHON_PROTOC_PLUGINS)
+shutil.copytree(GRPC_INCLUDE, GRPC_PYTHON_INCLUDE)
+
+def write_deps(query, out_filename):
+  output = subprocess.check_output(['tools/distrib/python/bazel_deps.sh', query])
+  output = output.splitlines()
+  cc_files = [
+      name for name in output
+      if name.endswith('.cc') and name.startswith(PROTOBUF_CC_PREFIX)]
+  cc_files = [cc_file[len(PROTOBUF_CC_PREFIX):] for cc_file in cc_files]
+
+  deps_file_content = DEPS_FILE_CONTENT.format(cc_files)
+
+  with open(out_filename, 'w') as deps_file:
+    deps_file.write(deps_file_content)
+
+write_deps('//:protoc', GRPC_PYTHON_PROTOC_DEPS)
+write_deps('//:protoc_lib', GRPC_PYTHON_PROTOC_LIB_DEPS)
diff --git a/tools/dockerfile/bazel/Dockerfile b/tools/dockerfile/bazel/Dockerfile
new file mode 100644
index 0000000000..af31adb94d
--- /dev/null
+++ b/tools/dockerfile/bazel/Dockerfile
@@ -0,0 +1,53 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+FROM ubuntu:wily
+RUN apt-get update
+RUN apt-get -y install software-properties-common python-software-properties
+RUN add-apt-repository ppa:webupd8team/java
+RUN apt-get update
+RUN apt-get -y install \
+	vim            \
+	wget           \
+	openjdk-8-jdk  \
+	pkg-config     \
+	zip            \
+	g++            \
+	zlib1g-dev     \
+	unzip          \
+	git
+
+RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+RUN cd /bazel &&     \
+	./compile.sh
+
+RUN cp /bazel/output/bazel /bin/bazel
+
+# ensure the installation has been extracted
+RUN bazel
-- 
GitLab


From 58d24c259a637ccffdee09fac6bc0123f81e4fc0 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Fri, 29 Apr 2016 14:11:38 -0700
Subject: [PATCH 358/525] Add sanity test for grpcio protoc package

---
 .../test/sanity/Dockerfile.template           | 12 +++-
 tools/distrib/python/bazel_deps.sh            | 17 +++--
 tools/distrib/python/check_grpcio_tools.py    | 53 +++++++++++++++
 .../.gitignore                                |  0
 .../grpc/__init__.py                          |  0
 .../grpc/protoc/__init__.py                   |  0
 .../protoc/grpc_python_protoc_compiler.py     |  0
 .../grpc/protoc/grpc_python_protoc_plugin.py  |  0
 .../grpc/protoc/main.h                        |  0
 .../grpc/protoc/protoc.pyx                    |  0
 .../grpc/protoc/protoc_plugin.pyx             |  0
 .../protoc_deps.py                            |  2 +-
 .../protoc_lib_deps.py                        |  2 +-
 .../{grpcio_protoc => grpcio_tools}/setup.py  |  2 +-
 ..._grpcio_protoc.py => make_grpcio_tools.py} | 65 ++++++++++++-------
 tools/dockerfile/bazel/Dockerfile             |  5 +-
 tools/dockerfile/test/sanity/Dockerfile       |  9 +++
 tools/run_tests/sanity/sanity_tests.yaml      |  1 +
 18 files changed, 131 insertions(+), 37 deletions(-)
 create mode 100755 tools/distrib/python/check_grpcio_tools.py
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/.gitignore (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/grpc/__init__.py (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/grpc/protoc/__init__.py (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/grpc/protoc/grpc_python_protoc_compiler.py (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/grpc/protoc/grpc_python_protoc_plugin.py (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/grpc/protoc/main.h (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/grpc/protoc/protoc.pyx (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/grpc/protoc/protoc_plugin.pyx (100%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/protoc_deps.py (99%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/protoc_lib_deps.py (99%)
 rename tools/distrib/python/{grpcio_protoc => grpcio_tools}/setup.py (99%)
 rename tools/distrib/python/{mk_grpcio_protoc.py => make_grpcio_tools.py} (73%)

diff --git a/templates/tools/dockerfile/test/sanity/Dockerfile.template b/templates/tools/dockerfile/test/sanity/Dockerfile.template
index 8d6f52db54..8e2140e648 100644
--- a/templates/tools/dockerfile/test/sanity/Dockerfile.template
+++ b/templates/tools/dockerfile/test/sanity/Dockerfile.template
@@ -43,7 +43,17 @@
         python-virtualenv ${"\\"}
         python-lxml
   RUN pip install simplejson mako
-
+  
+  #======================================
+  # More sanity test dependencies (bazel)
+  RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" > \
+    /etc/apt/sources.list.d/backports.list
+  RUN apt-get update
+  RUN apt-get -t jessie-backports install -y openjdk-8-jdk
+  RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+  RUN cd /bazel && ./compile.sh
+  RUN ln -s /bazel/output/bazel /bin/
+  
   #===================
   # Docker "inception"
   # Note this is quite the ugly hack.
diff --git a/tools/distrib/python/bazel_deps.sh b/tools/distrib/python/bazel_deps.sh
index 4619c00887..de3ee07970 100755
--- a/tools/distrib/python/bazel_deps.sh
+++ b/tools/distrib/python/bazel_deps.sh
@@ -31,9 +31,16 @@
 
 cd $(dirname $0)/../../../
 
-docker build -t bazel `realpath ./tools/dockerfile/bazel/`
-docker run -v "`realpath .`:/src/grpc/" \
-  -w /src/grpc/third_party/protobuf              \
-  bazel                                          \
+# First check if bazel is installed on the machine. If it is, then we don't need
+# to invoke the docker bazel.
+if [ "bazel version" ]
+then
+  cd third_party/protobuf
   bazel query 'deps('$1')'
-
+else
+  docker build -t bazel `realpath ./tools/dockerfile/bazel/`
+  docker run -v "`realpath .`:/src/grpc/"          \
+    -w /src/grpc/third_party/protobuf              \
+    bazel                                          \
+    bazel query 'deps('$1')'
+fi
diff --git a/tools/distrib/python/check_grpcio_tools.py b/tools/distrib/python/check_grpcio_tools.py
new file mode 100755
index 0000000000..fec218fdab
--- /dev/null
+++ b/tools/distrib/python/check_grpcio_tools.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import cStringIO
+
+import make_grpcio_tools as make
+
+OUT_OF_DATE_MESSAGE = """file {} is out of date
+
+Have you called tools/distrib/python/make_grpcio_tools.py since upgrading protobuf?"""
+
+check_protoc_deps_file = cStringIO.StringIO()
+check_protoc_lib_deps_file = cStringIO.StringIO()
+make.write_deps(make.BAZEL_DEPS_PROTOC_QUERY, check_protoc_deps_file)
+make.write_deps(make.BAZEL_DEPS_PROTOC_LIB_QUERY, check_protoc_lib_deps_file)
+
+with open(make.GRPC_PYTHON_PROTOC_DEPS, 'r') as protoc_deps_file:
+  if protoc_deps_file.read() != check_protoc_deps_file.getvalue():
+    print(OUT_OF_DATE_MESSAGE.format(make.GRPC_PYTHON_PROTOC_DEPS))
+    raise SystemExit(1)
+
+with open(make.GRPC_PYTHON_PROTOC_LIB_DEPS, 'r') as protoc_lib_deps_file:
+  if protoc_lib_deps_file.read() != check_protoc_lib_deps_file.getvalue():
+    print(OUT_OF_DATE_MESSAGE.format(make.GRPC_PYTHON_PROTOC_LIB_DEPS))
+    raise SystemExit(1)
diff --git a/tools/distrib/python/grpcio_protoc/.gitignore b/tools/distrib/python/grpcio_tools/.gitignore
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/.gitignore
rename to tools/distrib/python/grpcio_tools/.gitignore
diff --git a/tools/distrib/python/grpcio_protoc/grpc/__init__.py b/tools/distrib/python/grpcio_tools/grpc/__init__.py
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/grpc/__init__.py
rename to tools/distrib/python/grpcio_tools/grpc/__init__.py
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/__init__.py b/tools/distrib/python/grpcio_tools/grpc/protoc/__init__.py
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/grpc/protoc/__init__.py
rename to tools/distrib/python/grpcio_tools/grpc/protoc/__init__.py
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_compiler.py b/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_compiler.py
rename to tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_plugin.py b/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/grpc/protoc/grpc_python_protoc_plugin.py
rename to tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/main.h b/tools/distrib/python/grpcio_tools/grpc/protoc/main.h
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/grpc/protoc/main.h
rename to tools/distrib/python/grpcio_tools/grpc/protoc/main.h
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc.pyx b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc.pyx
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/grpc/protoc/protoc.pyx
rename to tools/distrib/python/grpcio_tools/grpc/protoc/protoc.pyx
diff --git a/tools/distrib/python/grpcio_protoc/grpc/protoc/protoc_plugin.pyx b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx
similarity index 100%
rename from tools/distrib/python/grpcio_protoc/grpc/protoc/protoc_plugin.pyx
rename to tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx
diff --git a/tools/distrib/python/grpcio_protoc/protoc_deps.py b/tools/distrib/python/grpcio_tools/protoc_deps.py
similarity index 99%
rename from tools/distrib/python/grpcio_protoc/protoc_deps.py
rename to tools/distrib/python/grpcio_tools/protoc_deps.py
index 5be28a77d8..2ce5838c47 100644
--- a/tools/distrib/python/grpcio_protoc/protoc_deps.py
+++ b/tools/distrib/python/grpcio_tools/protoc_deps.py
@@ -28,5 +28,5 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# AUTO-GENERATED BY mk_grpcio_protoc.py!
+# AUTO-GENERATED BY mk_grpcio_tools.py!
 CC_FILES=['google/protobuf/compiler/main.cc', 'google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/distrib/python/grpcio_protoc/protoc_lib_deps.py b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
similarity index 99%
rename from tools/distrib/python/grpcio_protoc/protoc_lib_deps.py
rename to tools/distrib/python/grpcio_tools/protoc_lib_deps.py
index 00a8f31069..d4fe0eeaa2 100644
--- a/tools/distrib/python/grpcio_protoc/protoc_lib_deps.py
+++ b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
@@ -28,5 +28,5 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# AUTO-GENERATED BY mk_grpcio_protoc.py!
+# AUTO-GENERATED BY mk_grpcio_tools.py!
 CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/distrib/python/grpcio_protoc/setup.py b/tools/distrib/python/grpcio_tools/setup.py
similarity index 99%
rename from tools/distrib/python/grpcio_protoc/setup.py
rename to tools/distrib/python/grpcio_tools/setup.py
index d462b6b213..3fa61320c8 100644
--- a/tools/distrib/python/grpcio_protoc/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -83,7 +83,7 @@ def maybe_cythonize(exts):
   return Build.cythonize(exts)
 
 setuptools.setup(
-  name='grpcio_protoc',
+  name='grpcio_tools',
   version='0.14.0rc1',
   license='',
   ext_modules=maybe_cythonize([
diff --git a/tools/distrib/python/mk_grpcio_protoc.py b/tools/distrib/python/make_grpcio_tools.py
similarity index 73%
rename from tools/distrib/python/mk_grpcio_protoc.py
rename to tools/distrib/python/make_grpcio_tools.py
index c09a77982d..178dd6a85d 100755
--- a/tools/distrib/python/mk_grpcio_protoc.py
+++ b/tools/distrib/python/make_grpcio_tools.py
@@ -64,20 +64,21 @@ DEPS_FILE_CONTENT="""
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# AUTO-GENERATED BY mk_grpcio_protoc.py!
+# AUTO-GENERATED BY mk_grpcio_tools.py!
 CC_FILES={}
 """
 
 # Bazel query result prefix for expected source files in protobuf.
 PROTOBUF_CC_PREFIX = '//:src/'
 
-os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)),
-                      '..', '..', '..'))
+GRPC_ROOT = os.path.abspath(
+    os.path.join(os.path.dirname(os.path.abspath(__file__)),
+                 '..', '..', '..'))
 
-GRPC_PYTHON_ROOT = os.path.abspath('tools/distrib/python/grpcio_protoc')
+GRPC_PYTHON_ROOT = os.path.join(GRPC_ROOT, 'tools/distrib/python/grpcio_tools')
 
-GRPC_PROTOBUF = os.path.abspath('third_party/protobuf/src')
-GRPC_PROTOC_PLUGINS = os.path.abspath('src/compiler')
+GRPC_PROTOBUF = os.path.join(GRPC_ROOT, 'third_party/protobuf/src')
+GRPC_PROTOC_PLUGINS = os.path.join(GRPC_ROOT, 'src/compiler')
 GRPC_PYTHON_PROTOBUF = os.path.join(GRPC_PYTHON_ROOT,
                                     'third_party/protobuf/src')
 GRPC_PYTHON_PROTOC_PLUGINS = os.path.join(GRPC_PYTHON_ROOT,
@@ -87,32 +88,46 @@ GRPC_PYTHON_PROTOC_DEPS = os.path.join(GRPC_PYTHON_ROOT,
 GRPC_PYTHON_PROTOC_LIB_DEPS = os.path.join(GRPC_PYTHON_ROOT,
                                            'protoc_lib_deps.py')
 
-GRPC_INCLUDE = os.path.abspath('include')
+GRPC_INCLUDE = os.path.join(GRPC_ROOT, 'include')
 GRPC_PYTHON_INCLUDE = os.path.join(GRPC_PYTHON_ROOT, 'grpc_root/include')
 
-for tree in [GRPC_PYTHON_PROTOBUF,
-             GRPC_PYTHON_PROTOC_PLUGINS,
-             GRPC_PYTHON_INCLUDE]:
-  try:
-    shutil.rmtree(tree)
-  except Exception as _:
-    pass
-shutil.copytree(GRPC_PROTOBUF, GRPC_PYTHON_PROTOBUF)
-shutil.copytree(GRPC_PROTOC_PLUGINS, GRPC_PYTHON_PROTOC_PLUGINS)
-shutil.copytree(GRPC_INCLUDE, GRPC_PYTHON_INCLUDE)
-
-def write_deps(query, out_filename):
-  output = subprocess.check_output(['tools/distrib/python/bazel_deps.sh', query])
+BAZEL_DEPS = os.path.join(GRPC_ROOT, 'tools/distrib/python/bazel_deps.sh')
+BAZEL_DEPS_PROTOC_QUERY = '//:protoc'
+BAZEL_DEPS_PROTOC_LIB_QUERY = '//:protoc_lib'
+
+
+def write_deps(query, out_file):
+  """Write the result of the bazel query `query` against protobuf to
+     `out_file`."""
+  output = subprocess.check_output([BAZEL_DEPS, query])
   output = output.splitlines()
   cc_files = [
       name for name in output
       if name.endswith('.cc') and name.startswith(PROTOBUF_CC_PREFIX)]
   cc_files = [cc_file[len(PROTOBUF_CC_PREFIX):] for cc_file in cc_files]
-
   deps_file_content = DEPS_FILE_CONTENT.format(cc_files)
+  out_file.write(deps_file_content)
+
+
+def main():
+  os.chdir(GRPC_ROOT)
+
+  for tree in [GRPC_PYTHON_PROTOBUF,
+               GRPC_PYTHON_PROTOC_PLUGINS,
+               GRPC_PYTHON_INCLUDE]:
+    try:
+      shutil.rmtree(tree)
+    except Exception as _:
+      pass
+  shutil.copytree(GRPC_PROTOBUF, GRPC_PYTHON_PROTOBUF)
+  shutil.copytree(GRPC_PROTOC_PLUGINS, GRPC_PYTHON_PROTOC_PLUGINS)
+  shutil.copytree(GRPC_INCLUDE, GRPC_PYTHON_INCLUDE)
+
+  with open(GRPC_PYTHON_PROTOC_DEPS, 'w') as deps_file:
+    write_deps(BAZEL_DEPS_PROTOC_QUERY, deps_file)
+  with open(GRPC_PYTHON_PROTOC_LIB_DEPS, 'w') as deps_file:
+    write_deps(BAZEL_DEPS_PROTOC_LIB_QUERY, deps_file)
 
-  with open(out_filename, 'w') as deps_file:
-    deps_file.write(deps_file_content)
+if __name__ == '__main__':
+  main()
 
-write_deps('//:protoc', GRPC_PYTHON_PROTOC_DEPS)
-write_deps('//:protoc_lib', GRPC_PYTHON_PROTOC_LIB_DEPS)
diff --git a/tools/dockerfile/bazel/Dockerfile b/tools/dockerfile/bazel/Dockerfile
index af31adb94d..2a80a4d4d5 100644
--- a/tools/dockerfile/bazel/Dockerfile
+++ b/tools/dockerfile/bazel/Dockerfile
@@ -44,10 +44,9 @@ RUN apt-get -y install \
 	git
 
 RUN git clone https://github.com/bazelbuild/bazel.git /bazel
-RUN cd /bazel &&     \
-	./compile.sh
+RUN cd /bazel && ./compile.sh
 
-RUN cp /bazel/output/bazel /bin/bazel
+RUN ln -s /bazel/output/bazel /bin/
 
 # ensure the installation has been extracted
 RUN bazel
diff --git a/tools/dockerfile/test/sanity/Dockerfile b/tools/dockerfile/test/sanity/Dockerfile
index 3146a922b7..43b2a0c3d9 100644
--- a/tools/dockerfile/test/sanity/Dockerfile
+++ b/tools/dockerfile/test/sanity/Dockerfile
@@ -75,6 +75,15 @@ RUN apt-get update && apt-get install -y \
       python-lxml
 RUN pip install simplejson mako
 
+#======================================
+# More sanity test dependencies (bazel)
+RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" >   /etc/apt/sources.list.d/backports.list
+RUN apt-get update
+RUN apt-get -t jessie-backports install -y openjdk-8-jdk
+RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+RUN cd /bazel && ./compile.sh
+RUN ln -s /bazel/output/bazel /bin/
+
 #===================
 # Docker "inception"
 # Note this is quite the ugly hack.
diff --git a/tools/run_tests/sanity/sanity_tests.yaml b/tools/run_tests/sanity/sanity_tests.yaml
index efc21e6591..c5945c602f 100644
--- a/tools/run_tests/sanity/sanity_tests.yaml
+++ b/tools/run_tests/sanity/sanity_tests.yaml
@@ -10,3 +10,4 @@
 - script: tools/distrib/check_trailing_newlines.sh
 - script: tools/distrib/check_nanopb_output.sh
 - script: tools/distrib/check_include_guards.py
+- script: tools/distrib/python/check_grpcio_tools.py
-- 
GitLab


From af3158350ecaa86ff727af39d16a4a4599e9de3d Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Fri, 29 Apr 2016 15:40:29 -0700
Subject: [PATCH 359/525] Integrate Python protoc Linux artifact builders

---
 tools/dockerfile/grpc_artifact_linux_x64/Dockerfile | 9 +++++++++
 tools/dockerfile/grpc_artifact_linux_x86/Dockerfile | 9 +++++++++
 tools/run_tests/build_artifact_python.sh            | 9 ++++++++-
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
index d048b725c8..5be2d37061 100644
--- a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
@@ -37,6 +37,7 @@ RUN apt-get update && apt-get install -y \
   autotools-dev \
   build-essential \
   bzip2 \
+  clang \
   curl \
   gcc \
   gcc-multilib \
@@ -66,6 +67,14 @@ RUN /bin/bash -l -c "nvm install 4 && npm install -g node-pre-gyp"
 ##################
 # Python dependencies
 
+# Install bazel
+RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" >   /etc/apt/sources.list.d/backports.list
+RUN apt-get update
+RUN apt-get -t jessie-backports install -y openjdk-8-jdk
+RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+RUN cd /bazel && ./compile.sh
+RUN ln -s /bazel/output/bazel /bin/
+
 RUN apt-get update && apt-get install -y \
     python-all-dev \
     python3-all-dev \
diff --git a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
index 46bc9f8f52..bacd899ced 100644
--- a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
@@ -37,6 +37,7 @@ RUN apt-get update && apt-get install -y \
   autotools-dev \
   build-essential \
   bzip2 \
+  clang \
   curl \
   gcc \
   gcc-multilib \
@@ -66,6 +67,14 @@ RUN /bin/bash -l -c "nvm install 4 && npm install -g node-pre-gyp"
 ##################
 # Python dependencies
 
+# Install bazel
+RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" >   /etc/apt/sources.list.d/backports.list
+RUN apt-get update
+RUN apt-get -t jessie-backports install -y openjdk-8-jdk
+RUN git clone https://github.com/bazelbuild/bazel.git /bazel
+RUN cd /bazel && ./compile.sh
+RUN ln -s /bazel/output/bazel /bin/
+
 RUN apt-get update && apt-get install -y \
     python-all-dev \
     python3-all-dev \
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 1f23f9fade..454f472759 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -62,6 +62,13 @@ ${SETARCH_CMD} python setup.py  \
 ${SETARCH_CMD} python setup.py  \
     bdist_wheel
 
-mkdir -p artifacts
+# Build gRPC tools package
+python tools/distrib/python/make_grpcio_tools.py
+# Build with clang since there's a bug in GCC 4.x where some constant
+# expressions are treated as non-constant in the presence of the fwrapv flag
+# (fixed in at most GCC 5.3).
+CC=clang python tools/distrib/python/grpcio_tools/setup.py bdist_wheel
 
+mkdir -p artifacts
 cp -r dist/* artifacts
+cp -r tools/distrib/python/grpcio_tools/dist/* artifacts
-- 
GitLab


From 0e25c8d71a4ac49d284dcfa926bc04dcac577ba9 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Fri, 29 Apr 2016 16:54:17 -0700
Subject: [PATCH 360/525] Tightly integrate the Python plugin with its protoc

This grossly simplifies the protoc invocation to:
python -m grpc.protoc.compiler --python_out=... --grpc_python_out=...
[...] --plugin=protoc-gen-python-grpc=grpc_python_protoc_plugin... [...]
---
 tools/distrib/python/check_grpcio_tools.py    |  7 ----
 ..._python_protoc_compiler.py => compiler.py} |  4 +-
 .../grpc/protoc/grpc_python_protoc_plugin.py  | 38 ------------------
 .../python/grpcio_tools/grpc/protoc/main.cc   | 25 ++++++++++++
 .../{protoc.pyx => protoc_compiler.pyx}       |  0
 .../grpc/protoc/protoc_plugin.pyx             | 39 -------------------
 .../python/grpcio_tools/protoc_deps.py        | 32 ---------------
 .../python/grpcio_tools/protoc_lib_deps.py    |  2 +-
 tools/distrib/python/grpcio_tools/setup.py    | 30 +++-----------
 tools/distrib/python/make_grpcio_tools.py     |  7 +---
 10 files changed, 34 insertions(+), 150 deletions(-)
 rename tools/distrib/python/grpcio_tools/grpc/protoc/{grpc_python_protoc_compiler.py => compiler.py} (95%)
 delete mode 100644 tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py
 create mode 100644 tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
 rename tools/distrib/python/grpcio_tools/grpc/protoc/{protoc.pyx => protoc_compiler.pyx} (100%)
 delete mode 100644 tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx
 delete mode 100644 tools/distrib/python/grpcio_tools/protoc_deps.py

diff --git a/tools/distrib/python/check_grpcio_tools.py b/tools/distrib/python/check_grpcio_tools.py
index fec218fdab..f9f869e990 100755
--- a/tools/distrib/python/check_grpcio_tools.py
+++ b/tools/distrib/python/check_grpcio_tools.py
@@ -37,16 +37,9 @@ OUT_OF_DATE_MESSAGE = """file {} is out of date
 
 Have you called tools/distrib/python/make_grpcio_tools.py since upgrading protobuf?"""
 
-check_protoc_deps_file = cStringIO.StringIO()
 check_protoc_lib_deps_file = cStringIO.StringIO()
-make.write_deps(make.BAZEL_DEPS_PROTOC_QUERY, check_protoc_deps_file)
 make.write_deps(make.BAZEL_DEPS_PROTOC_LIB_QUERY, check_protoc_lib_deps_file)
 
-with open(make.GRPC_PYTHON_PROTOC_DEPS, 'r') as protoc_deps_file:
-  if protoc_deps_file.read() != check_protoc_deps_file.getvalue():
-    print(OUT_OF_DATE_MESSAGE.format(make.GRPC_PYTHON_PROTOC_DEPS))
-    raise SystemExit(1)
-
 with open(make.GRPC_PYTHON_PROTOC_LIB_DEPS, 'r') as protoc_lib_deps_file:
   if protoc_lib_deps_file.read() != check_protoc_lib_deps_file.getvalue():
     print(OUT_OF_DATE_MESSAGE.format(make.GRPC_PYTHON_PROTOC_LIB_DEPS))
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py b/tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py
similarity index 95%
rename from tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py
rename to tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py
index 5395f2ac10..caafc544b2 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py
@@ -31,8 +31,8 @@
 
 import sys
 
-from grpc.protoc import protoc
+from grpc.protoc import protoc_compiler
 
 
 if __name__ == '__main__':
-  protoc.run_main(sys.argv)
+  protoc_compiler.run_main(sys.argv)
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py b/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py
deleted file mode 100644
index 3b279e2976..0000000000
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2016, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import sys
-
-from grpc.protoc import protoc_plugin
-
-
-if __name__ == '__main__':
-  protoc_plugin.run_main(sys.argv)
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
new file mode 100644
index 0000000000..2a0bc6d2d1
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
@@ -0,0 +1,25 @@
+#include <google/protobuf/compiler/command_line_interface.h>
+#include <google/protobuf/compiler/python/python_generator.h>
+
+#include "src/compiler/python_generator.h"
+
+#include "grpc/protoc/main.h"
+
+int main(int argc, char* argv[]) {
+  google::protobuf::compiler::CommandLineInterface cli;
+  cli.AllowPlugins("protoc-");
+
+  // Proto2 Python
+  google::protobuf::compiler::python::Generator py_generator;
+  cli.RegisterGenerator("--python_out", &py_generator,
+                        "Generate Python source file.");
+
+  // gRPC Python
+  grpc_python_generator::GeneratorConfiguration grpc_py_config;
+  grpc_py_config.beta_package_root = "grpc.beta";
+  grpc_python_generator::PythonGrpcGenerator grpc_py_generator(grpc_py_config);
+  cli.RegisterGenerator("--grpc_python_out", &grpc_py_generator,
+                        "Generate Python source file.");
+
+  return cli.Run(argc, argv);
+}
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc.pyx b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
similarity index 100%
rename from tools/distrib/python/grpcio_tools/grpc/protoc/protoc.pyx
rename to tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx
deleted file mode 100644
index d987ee1cea..0000000000
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2016, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from libc cimport stdlib
-
-cdef extern from "grpc/protoc/main.h":
-  int main(int argc, char *argv[])
-
-def run_main(list args not None):
-  cdef char **argv = <char **>stdlib.malloc(len(args)*sizeof(char *))
-  for i in range(len(args)):
-    argv[i] = args[i]
-  return main(len(args), argv)
diff --git a/tools/distrib/python/grpcio_tools/protoc_deps.py b/tools/distrib/python/grpcio_tools/protoc_deps.py
deleted file mode 100644
index 2ce5838c47..0000000000
--- a/tools/distrib/python/grpcio_tools/protoc_deps.py
+++ /dev/null
@@ -1,32 +0,0 @@
-
-# Copyright 2016, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# AUTO-GENERATED BY mk_grpcio_tools.py!
-CC_FILES=['google/protobuf/compiler/main.cc', 'google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
index d4fe0eeaa2..9f31172170 100644
--- a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
+++ b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
@@ -28,5 +28,5 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# AUTO-GENERATED BY mk_grpcio_tools.py!
+# AUTO-GENERATED BY make_grpcio_tools.py!
 CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index 3fa61320c8..59093aa516 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -40,32 +40,17 @@ from setuptools.command import build_ext
 os.chdir(os.path.dirname(os.path.abspath(__file__)))
 sys.path.insert(0, os.path.abspath('.'))
 
-import protoc_deps
 import protoc_lib_deps
 
 def protoc_ext_module():
-  protoc_sources = [
-      os.path.join('third_party/protobuf/src', cc_file)
-      for cc_file in protoc_deps.CC_FILES]
-  protoc_ext = extension.Extension(
-    name='grpc.protoc.protoc',
-    sources=['grpc/protoc/protoc.pyx'] + protoc_sources,
-    include_dirs=['.', 'third_party/protobuf/src'],
-    language='c++',
-    define_macros=[('HAVE_PTHREAD', 1)],
-    extra_compile_args=['-lpthread', '-frtti'],
-  )
-  return protoc_ext
-
-def plugin_ext_module():
   plugin_sources = [
-      'grpc_root/src/compiler/python_generator.cc',
-      'grpc_root/src/compiler/python_plugin.cc'] + [
+      'grpc/protoc/main.cc',
+      'grpc_root/src/compiler/python_generator.cc'] + [
       os.path.join('third_party/protobuf/src', cc_file)
       for cc_file in protoc_lib_deps.CC_FILES]
   plugin_ext = extension.Extension(
-      name='grpc.protoc.protoc_plugin',
-      sources=['grpc/protoc/protoc_plugin.pyx'] + plugin_sources,
+      name='grpc.protoc.protoc_compiler',
+      sources=['grpc/protoc/protoc_compiler.pyx'] + plugin_sources,
       include_dirs=[
           '.',
           'grpc_root',
@@ -74,7 +59,7 @@ def plugin_ext_module():
       ],
       language='c++',
       define_macros=[('HAVE_PTHREAD', 1)],
-      extra_compile_args=['-lpthread', '-std=c++11'],
+      extra_compile_args=['-lpthread', '-frtti', '-std=c++11'],
   )
   return plugin_ext
 
@@ -88,12 +73,7 @@ setuptools.setup(
   license='',
   ext_modules=maybe_cythonize([
       protoc_ext_module(),
-      plugin_ext_module(),
   ]),
-  scripts=[
-    'grpc/protoc/grpc_python_protoc_compiler.py',
-    'grpc/protoc/grpc_python_protoc_plugin.py',
-  ],
   packages=setuptools.find_packages('.'),
   namespace_packages=['grpc'],
   install_requires=[
diff --git a/tools/distrib/python/make_grpcio_tools.py b/tools/distrib/python/make_grpcio_tools.py
index 178dd6a85d..27e7d5f0a4 100755
--- a/tools/distrib/python/make_grpcio_tools.py
+++ b/tools/distrib/python/make_grpcio_tools.py
@@ -64,7 +64,7 @@ DEPS_FILE_CONTENT="""
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-# AUTO-GENERATED BY mk_grpcio_tools.py!
+# AUTO-GENERATED BY make_grpcio_tools.py!
 CC_FILES={}
 """
 
@@ -83,8 +83,6 @@ GRPC_PYTHON_PROTOBUF = os.path.join(GRPC_PYTHON_ROOT,
                                     'third_party/protobuf/src')
 GRPC_PYTHON_PROTOC_PLUGINS = os.path.join(GRPC_PYTHON_ROOT,
                                           'grpc_root/src/compiler')
-GRPC_PYTHON_PROTOC_DEPS = os.path.join(GRPC_PYTHON_ROOT,
-                                       'protoc_deps.py')
 GRPC_PYTHON_PROTOC_LIB_DEPS = os.path.join(GRPC_PYTHON_ROOT,
                                            'protoc_lib_deps.py')
 
@@ -92,7 +90,6 @@ GRPC_INCLUDE = os.path.join(GRPC_ROOT, 'include')
 GRPC_PYTHON_INCLUDE = os.path.join(GRPC_PYTHON_ROOT, 'grpc_root/include')
 
 BAZEL_DEPS = os.path.join(GRPC_ROOT, 'tools/distrib/python/bazel_deps.sh')
-BAZEL_DEPS_PROTOC_QUERY = '//:protoc'
 BAZEL_DEPS_PROTOC_LIB_QUERY = '//:protoc_lib'
 
 
@@ -123,8 +120,6 @@ def main():
   shutil.copytree(GRPC_PROTOC_PLUGINS, GRPC_PYTHON_PROTOC_PLUGINS)
   shutil.copytree(GRPC_INCLUDE, GRPC_PYTHON_INCLUDE)
 
-  with open(GRPC_PYTHON_PROTOC_DEPS, 'w') as deps_file:
-    write_deps(BAZEL_DEPS_PROTOC_QUERY, deps_file)
   with open(GRPC_PYTHON_PROTOC_LIB_DEPS, 'w') as deps_file:
     write_deps(BAZEL_DEPS_PROTOC_LIB_QUERY, deps_file)
 
-- 
GitLab


From 176ac65faf22fae7cf3d1874a97fc16636ef1be3 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Tue, 3 May 2016 11:55:40 -0700
Subject: [PATCH 361/525] Don't truncate deps file on failure to find bazel

---
 tools/distrib/python/check_grpcio_tools.py |  5 ++---
 tools/distrib/python/make_grpcio_tools.py  | 18 +++++++++++++++---
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/tools/distrib/python/check_grpcio_tools.py b/tools/distrib/python/check_grpcio_tools.py
index f9f869e990..baf2ff4eff 100755
--- a/tools/distrib/python/check_grpcio_tools.py
+++ b/tools/distrib/python/check_grpcio_tools.py
@@ -37,10 +37,9 @@ OUT_OF_DATE_MESSAGE = """file {} is out of date
 
 Have you called tools/distrib/python/make_grpcio_tools.py since upgrading protobuf?"""
 
-check_protoc_lib_deps_file = cStringIO.StringIO()
-make.write_deps(make.BAZEL_DEPS_PROTOC_LIB_QUERY, check_protoc_lib_deps_file)
+check_protoc_lib_deps_content = make.get_deps(make.BAZEL_DEPS_PROTOC_LIB_QUERY)
 
 with open(make.GRPC_PYTHON_PROTOC_LIB_DEPS, 'r') as protoc_lib_deps_file:
-  if protoc_lib_deps_file.read() != check_protoc_lib_deps_file.getvalue():
+  if protoc_lib_deps_file.read() != check_protoc_lib_deps_content:
     print(OUT_OF_DATE_MESSAGE.format(make.GRPC_PYTHON_PROTOC_LIB_DEPS))
     raise SystemExit(1)
diff --git a/tools/distrib/python/make_grpcio_tools.py b/tools/distrib/python/make_grpcio_tools.py
index 27e7d5f0a4..50fbdbb14c 100755
--- a/tools/distrib/python/make_grpcio_tools.py
+++ b/tools/distrib/python/make_grpcio_tools.py
@@ -33,6 +33,8 @@ import os
 import os.path
 import shutil
 import subprocess
+import sys
+import traceback
 
 DEPS_FILE_CONTENT="""
 # Copyright 2016, Google Inc.
@@ -93,7 +95,7 @@ BAZEL_DEPS = os.path.join(GRPC_ROOT, 'tools/distrib/python/bazel_deps.sh')
 BAZEL_DEPS_PROTOC_LIB_QUERY = '//:protoc_lib'
 
 
-def write_deps(query, out_file):
+def get_deps(query):
   """Write the result of the bazel query `query` against protobuf to
      `out_file`."""
   output = subprocess.check_output([BAZEL_DEPS, query])
@@ -103,7 +105,7 @@ def write_deps(query, out_file):
       if name.endswith('.cc') and name.startswith(PROTOBUF_CC_PREFIX)]
   cc_files = [cc_file[len(PROTOBUF_CC_PREFIX):] for cc_file in cc_files]
   deps_file_content = DEPS_FILE_CONTENT.format(cc_files)
-  out_file.write(deps_file_content)
+  return deps_file_content
 
 
 def main():
@@ -120,8 +122,18 @@ def main():
   shutil.copytree(GRPC_PROTOC_PLUGINS, GRPC_PYTHON_PROTOC_PLUGINS)
   shutil.copytree(GRPC_INCLUDE, GRPC_PYTHON_INCLUDE)
 
+  try:
+    protoc_lib_deps_content = get_deps(BAZEL_DEPS_PROTOC_LIB_QUERY)
+  except Exception as error:
+    # We allow this script to succeed even if we couldn't get the dependencies,
+    # as then we can assume that even without a successful bazel run the
+    # dependencies currently in source control are 'good enough'.
+    sys.stderr.write("Got non-fatal error:\n")
+    traceback.print_exc(file=sys.stderr)
+    return
+  # If we successfully got the dependencies, truncate and rewrite the deps file.
   with open(GRPC_PYTHON_PROTOC_LIB_DEPS, 'w') as deps_file:
-    write_deps(BAZEL_DEPS_PROTOC_LIB_QUERY, deps_file)
+    deps_file.write(protoc_lib_deps_content)
 
 if __name__ == '__main__':
   main()
-- 
GitLab


From 955887928f1ac6d9b39599d14b6b7a522db026d9 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Tue, 3 May 2016 12:05:13 -0700
Subject: [PATCH 362/525] Keep grpcio_tools version in sync with rest of
 project

---
 .../grpcio_tools/grpc_version.py.template     | 34 +++++++++++++++++++
 .../python/grpcio_tools/grpc_version.py       | 32 +++++++++++++++++
 tools/distrib/python/grpcio_tools/setup.py    |  3 +-
 3 files changed, 68 insertions(+), 1 deletion(-)
 create mode 100644 templates/tools/distrib/python/grpcio_tools/grpc_version.py.template
 create mode 100644 tools/distrib/python/grpcio_tools/grpc_version.py

diff --git a/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template b/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template
new file mode 100644
index 0000000000..200905d4f3
--- /dev/null
+++ b/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template
@@ -0,0 +1,34 @@
+%YAML 1.2
+--- |
+  # Copyright 2015, Google Inc.
+  # All rights reserved.
+  #
+  # Redistribution and use in source and binary forms, with or without
+  # modification, are permitted provided that the following conditions are
+  # met:
+  #
+  #     * Redistributions of source code must retain the above copyright
+  # notice, this list of conditions and the following disclaimer.
+  #     * Redistributions in binary form must reproduce the above
+  # copyright notice, this list of conditions and the following disclaimer
+  # in the documentation and/or other materials provided with the
+  # distribution.
+  #     * Neither the name of Google Inc. nor the names of its
+  # contributors may be used to endorse or promote products derived from
+  # this software without specific prior written permission.
+  #
+  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+  # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
+
+  VERSION='${settings.python_version.pep440()}'
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
new file mode 100644
index 0000000000..b8ae8e20b8
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -0,0 +1,32 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
+
+VERSION='0.14.0.dev0'
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index 59093aa516..8530398b6d 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -41,6 +41,7 @@ os.chdir(os.path.dirname(os.path.abspath(__file__)))
 sys.path.insert(0, os.path.abspath('.'))
 
 import protoc_lib_deps
+import grpc_version
 
 def protoc_ext_module():
   plugin_sources = [
@@ -69,7 +70,7 @@ def maybe_cythonize(exts):
 
 setuptools.setup(
   name='grpcio_tools',
-  version='0.14.0rc1',
+  version=grpc_version.VERSION,
   license='',
   ext_modules=maybe_cythonize([
       protoc_ext_module(),
-- 
GitLab


From 616b2793fd20eb28c2be53831f967332659987d0 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Tue, 3 May 2016 12:33:02 -0700
Subject: [PATCH 363/525] Fix docker build

---
 tools/dockerfile/grpc_artifact_linux_x64/Dockerfile | 12 +++---------
 tools/dockerfile/grpc_artifact_linux_x86/Dockerfile | 12 +++---------
 2 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
index 5be2d37061..4ae4ebdb06 100644
--- a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
@@ -31,8 +31,10 @@
 
 FROM debian:jessie
 
+RUN apt-get update && apt-get install debian-keyring && apt-key update
+
 # Install Git and basic packages.
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-key update && apt-get install -y \
   autoconf \
   autotools-dev \
   build-essential \
@@ -67,14 +69,6 @@ RUN /bin/bash -l -c "nvm install 4 && npm install -g node-pre-gyp"
 ##################
 # Python dependencies
 
-# Install bazel
-RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" >   /etc/apt/sources.list.d/backports.list
-RUN apt-get update
-RUN apt-get -t jessie-backports install -y openjdk-8-jdk
-RUN git clone https://github.com/bazelbuild/bazel.git /bazel
-RUN cd /bazel && ./compile.sh
-RUN ln -s /bazel/output/bazel /bin/
-
 RUN apt-get update && apt-get install -y \
     python-all-dev \
     python3-all-dev \
diff --git a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
index bacd899ced..9c2fd52eee 100644
--- a/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x86/Dockerfile
@@ -31,8 +31,10 @@
 
 FROM 32bit/debian:jessie
 
+RUN apt-get update && apt-get install debian-keyring && apt-key update
+
 # Install Git and basic packages.
-RUN apt-get update && apt-get install -y \
+RUN apt-get update && apt-key update && apt-get install -y \
   autoconf \
   autotools-dev \
   build-essential \
@@ -67,14 +69,6 @@ RUN /bin/bash -l -c "nvm install 4 && npm install -g node-pre-gyp"
 ##################
 # Python dependencies
 
-# Install bazel
-RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" >   /etc/apt/sources.list.d/backports.list
-RUN apt-get update
-RUN apt-get -t jessie-backports install -y openjdk-8-jdk
-RUN git clone https://github.com/bazelbuild/bazel.git /bazel
-RUN cd /bazel && ./compile.sh
-RUN ln -s /bazel/output/bazel /bin/
-
 RUN apt-get update && apt-get install -y \
     python-all-dev \
     python3-all-dev \
-- 
GitLab


From 010eb48d2169e13ab8afeae32c29ede7b84a0e4d Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Tue, 3 May 2016 15:59:40 -0700
Subject: [PATCH 364/525] Use manylinux

---
 setup.py                                      |  3 +-
 .../python/grpcio_tools/grpc/protoc/main.cc   |  2 +-
 .../python/grpcio_tools/grpc/protoc/main.h    |  6 +-
 .../grpc/protoc/protoc_compiler.pyx           |  4 +-
 tools/distrib/python/grpcio_tools/setup.py    |  3 +-
 .../Dockerfile                                | 43 +++++++++++++++
 .../Dockerfile                                | 43 +++++++++++++++
 tools/run_tests/artifact_targets.py           | 55 +++++++++++++++++--
 tools/run_tests/build_artifact_python.sh      | 49 +++++++++--------
 9 files changed, 173 insertions(+), 35 deletions(-)
 create mode 100644 tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
 create mode 100644 tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile

diff --git a/setup.py b/setup.py
index af9eb68534..5cd26124f6 100644
--- a/setup.py
+++ b/setup.py
@@ -236,7 +236,8 @@ setup_arguments = {
     'ext_modules': CYTHON_EXTENSION_MODULES,
     'packages': list(PACKAGES),
     'package_dir': PACKAGE_DIRECTORIES,
-    'namespace_packages': ['grpc'],
+    # TODO(atash): Figure out why auditwheel doesn't like namespace packages.
+    #'namespace_packages': ['grpc'],
     'package_data': PACKAGE_DATA,
     'install_requires': INSTALL_REQUIRES,
     'setup_requires': SETUP_REQUIRES,
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
index 2a0bc6d2d1..4487a6851a 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
@@ -5,7 +5,7 @@
 
 #include "grpc/protoc/main.h"
 
-int main(int argc, char* argv[]) {
+int protoc_main(int argc, char* argv[]) {
   google::protobuf::compiler::CommandLineInterface cli;
   cli.AllowPlugins("protoc-");
 
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/main.h b/tools/distrib/python/grpcio_tools/grpc/protoc/main.h
index fc406a9260..ea2860ff02 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/main.h
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/main.h
@@ -28,6 +28,6 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-// We declare `main` here since we want access to it from Cython as an extern
-// but *without* triggering a dllimport declspec when on Windows.
-int main(int argc, char *argv[]);
+// We declare `protoc_main` here since we want access to it from Cython as an
+// extern but *without* triggering a dllimport declspec when on Windows.
+int protoc_main(int argc, char *argv[]);
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
index d987ee1cea..af15f3db30 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
@@ -30,10 +30,10 @@
 from libc cimport stdlib
 
 cdef extern from "grpc/protoc/main.h":
-  int main(int argc, char *argv[])
+  int protoc_main(int argc, char *argv[])
 
 def run_main(list args not None):
   cdef char **argv = <char **>stdlib.malloc(len(args)*sizeof(char *))
   for i in range(len(args)):
     argv[i] = args[i]
-  return main(len(args), argv)
+  return protoc_main(len(args), argv)
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index 8530398b6d..0281c01796 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -76,7 +76,8 @@ setuptools.setup(
       protoc_ext_module(),
   ]),
   packages=setuptools.find_packages('.'),
-  namespace_packages=['grpc'],
+  # TODO(atash): Figure out why auditwheel doesn't like namespace packages.
+  #namespace_packages=['grpc'],
   install_requires=[
     'protobuf>=3.0.0a3',
   ],
diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
new file mode 100644
index 0000000000..3e31a2b623
--- /dev/null
+++ b/tools/dockerfile/grpc_artifact_python_manylinux_x64/Dockerfile
@@ -0,0 +1,43 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Docker file for building gRPC manylinux Python artifacts.
+
+FROM quay.io/pypa/manylinux1_x86_64
+
+# Update the package manager
+RUN yum update -y
+
+###################################
+# Install Python build requirements
+RUN /opt/python/cp27-cp27m/bin/pip install cython
+RUN /opt/python/cp27-cp27mu/bin/pip install cython
+RUN /opt/python/cp34-cp34m/bin/pip install cython
+RUN /opt/python/cp35-cp35m/bin/pip install cython
+
diff --git a/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile b/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile
new file mode 100644
index 0000000000..5fe62c28b7
--- /dev/null
+++ b/tools/dockerfile/grpc_artifact_python_manylinux_x86/Dockerfile
@@ -0,0 +1,43 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Docker file for building gRPC manylinux Python artifacts.
+
+FROM quay.io/pypa/manylinux1_i686
+
+# Update the package manager
+RUN yum update -y
+
+###################################
+# Install Python build requirements
+RUN /opt/python/cp27-cp27m/bin/pip install cython
+RUN /opt/python/cp27-cp27mu/bin/pip install cython
+RUN /opt/python/cp34-cp34m/bin/pip install cython
+RUN /opt/python/cp35-cp35m/bin/pip install cython
+
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index 3e08c1d62b..ec44e3746c 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -84,12 +84,16 @@ python_version_arch_map = {
 class PythonArtifact:
   """Builds Python artifacts."""
 
-  def __init__(self, platform, arch):
-    self.name = 'python_%s_%s' % (platform, arch)
+  def __init__(self, platform, arch, manylinux_build=None):
+    if manylinux_build:
+      self.name = 'python_%s_%s_%s' % (platform, arch, manylinux_build)
+    else:
+      self.name = 'python_%s_%s' % (platform, arch)
     self.platform = platform
     self.arch = arch
     self.labels = ['artifact', 'python', platform, arch]
     self.python_version = python_version_arch_map[arch]
+    self.manylinux_build = manylinux_build
 
   def pre_build_jobspecs(self):
       return []
@@ -99,8 +103,47 @@ class PythonArtifact:
     if self.platform == 'linux':
       if self.arch == 'x86':
         environ['SETARCH_CMD'] = 'linux32'
+      # Inside the manylinux container, the python installations are located in
+      # special places...
+      environ['PYTHON'] = '/opt/python/{}/bin/python'.format(self.manylinux_build)
+      environ['PIP'] = '/opt/python/{}/bin/pip'.format(self.manylinux_build)
+      # Our docker image has all the prerequisites pip-installed already.
+      environ['SKIP_PIP_INSTALL'] = '1'
+      # Platform autodetection for the manylinux1 image breaks so we set the
+      # defines ourselves.
+      # TODO(atash) get better platform-detection support in core so we don't
+      # need to do this manually...
+      environ['CFLAGS'] = " ".join([
+        '-DGPR_NO_AUTODETECT_PLATFORM',
+        '-DGPR_PLATFORM_STRING=\\"manylinux\\"',
+        '-DGPR_POSIX_CRASH_HANDLER=1',
+        '-DGPR_CPU_LINUX=1',
+        '-DGPR_GCC_ATOMIC=1',
+        '-DGPR_GCC_TLS=1',
+        '-DGPR_LINUX=1',
+        '-DGPR_LINUX_LOG=1',
+        #'-DGPR_LINUX_MULTIPOLL_WITH_EPOLL=1',
+        '-DGPR_POSIX_SOCKET=1',
+        '-DGPR_POSIX_WAKEUP_FD=1',
+        '-DGPR_POSIX_SOCKETADDR=1',
+        #'-DGPR_LINUX_EVENTFD=1',
+        #'-DGPR_LINUX_SOCKETUTILS=1',
+        '-DGPR_HAVE_UNIX_SOCKET=1',
+        '-DGPR_HAVE_IP_PKTINFO=1',
+        '-DGPR_HAVE_IPV6_RECVPKTINFO=1',
+        '-DGPR_LINUX_ENV=1',
+        '-DGPR_POSIX_FILE=1',
+        '-DGPR_POSIX_TMPFILE=1',
+        '-DGPR_POSIX_STRING=1',
+        '-DGPR_POSIX_SUBPROCESS=1',
+        '-DGPR_POSIX_SYNC=1',
+        '-DGPR_POSIX_TIME=1',
+        '-DGPR_GETPID_IN_UNISTD_H=1',
+        '-DGPR_HAVE_MSG_NOSIGNAL=1',
+        '-DGPR_ARCH_{arch}=1'.format(arch=('32' if self.arch == 'x86' else '64')),
+      ])
       return create_docker_jobspec(self.name,
-          'tools/dockerfile/grpc_artifact_linux_%s' % self.arch,
+          'tools/dockerfile/grpc_artifact_python_manylinux_%s' % self.arch,
           'tools/run_tests/build_artifact_python.sh',
           environ=environ)
     elif self.platform == 'windows':
@@ -307,8 +350,10 @@ def targets():
            for Cls in (CSharpExtArtifact, NodeExtArtifact, ProtocArtifact)
            for platform in ('linux', 'macos', 'windows')
            for arch in ('x86', 'x64')] +
-          [PythonArtifact('linux', 'x86'),
-           PythonArtifact('linux', 'x64'),
+          [PythonArtifact('linux', 'x86', 'cp27-cp27m'),
+           PythonArtifact('linux', 'x86', 'cp27-cp27mu'),
+           PythonArtifact('linux', 'x64', 'cp27-cp27m'),
+           PythonArtifact('linux', 'x64', 'cp27-cp27mu'),
            PythonArtifact('macos', 'x64'),
            PythonArtifact('windows', 'x86'),
            PythonArtifact('windows', 'x64'),
diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 454f472759..920d255aed 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -32,43 +32,48 @@ set -ex
 
 cd $(dirname $0)/../..
 
+export GRPC_PYTHON_USE_CUSTOM_BDIST=0
+export GRPC_PYTHON_BUILD_WITH_CYTHON=1
+export PYTHON=${PYTHON:-python}
+export PIP=${PIP:-pip}
+export AUDITWHEEL=${AUDITWHEEL:-auditwheel}
+
+
 if [ "$SKIP_PIP_INSTALL" == "" ]
 then
-  pip install --upgrade six
+  ${PIP} install --upgrade six
   # There's a bug in newer versions of setuptools (see
   # https://bitbucket.org/pypa/setuptools/issues/503/pkg_resources_vendorpackagingrequirementsi)
-  pip install --upgrade 'setuptools==18'
-  pip install -rrequirements.txt
+  ${PIP} pip install --upgrade 'setuptools==18'
+  ${PIP} install -rrequirements.txt
 fi
 
-export GRPC_PYTHON_USE_CUSTOM_BDIST=0
-export GRPC_PYTHON_BUILD_WITH_CYTHON=1
-
 # Build the source distribution first because MANIFEST.in cannot override
 # exclusion of built shared objects among package resources (for some
 # inexplicable reason).
-${SETARCH_CMD} python setup.py  \
+${SETARCH_CMD} ${PYTHON} setup.py  \
     sdist
 
-# The bdist_wheel_grpc_custom command is finicky about command output ordering
-# and thus ought to be run in a shell command separate of others. Further, it
-# trashes the actual bdist_wheel output, so it should be run first so that
-# bdist_wheel may be run unmolested.
-${SETARCH_CMD} python setup.py  \
-    build_tagged_ext
-
 # Wheel has a bug where directories don't get excluded.
 # https://bitbucket.org/pypa/wheel/issues/99/cannot-exclude-directory
-${SETARCH_CMD} python setup.py  \
+${SETARCH_CMD} ${PYTHON} setup.py  \
     bdist_wheel
 
 # Build gRPC tools package
-python tools/distrib/python/make_grpcio_tools.py
-# Build with clang since there's a bug in GCC 4.x where some constant
-# expressions are treated as non-constant in the presence of the fwrapv flag
-# (fixed in at most GCC 5.3).
-CC=clang python tools/distrib/python/grpcio_tools/setup.py bdist_wheel
+${PYTHON} tools/distrib/python/make_grpcio_tools.py
+CFLAGS="$CFLAGS -fno-wrapv" ${SETARCH_CMD} \
+  ${PYTHON} tools/distrib/python/grpcio_tools/setup.py bdist_wheel
 
 mkdir -p artifacts
-cp -r dist/* artifacts
-cp -r tools/distrib/python/grpcio_tools/dist/* artifacts
+if command -v ${AUDITWHEEL}
+then
+  for wheel in dist/*.whl; do
+    ${AUDITWHEEL} repair $wheel -w artifacts/
+  done
+  for wheel in tools/distrib/python/grpcio_tools/dist/*.whl; do
+    ${AUDITWHEEL} repair $wheel -w artifacts/
+  done
+else
+  cp -r dist/* artifacts
+  cp -r tools/distrib/python/grpcio_tools/dist/* artifacts
+fi
-- 
GitLab


From e9407c2e74a3ca3819d78a8ffa4d20fb51a00a59 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Wed, 4 May 2016 06:26:15 -0700
Subject: [PATCH 365/525] Test binary Python distributions

---
 test/distrib/python/run_distrib_test.sh | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index 79893af8e5..73e471dd26 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -33,8 +33,7 @@ set -ex
 cd $(dirname $0)
 
 # Pick up the source dist archive whatever its version is
-SDIST_ARCHIVE=$EXTERNAL_GIT_ROOT/input_artifacts/grpcio-*.tar.gz
-BDIST_DIR="file://$EXTERNAL_GIT_ROOT/input_artifacts"
+BDIST_ARCHIVES=$EXTERNAL_GIT_ROOT/input_artifacts/grpcio-*.whl
 
 if [ ! -f ${SDIST_ARCHIVE} ]
 then
@@ -48,11 +47,13 @@ PYTHON=python2
 which $PYTHON || PYTHON=python
 
 # TODO(jtattermusch): this shouldn't be required
-$PIP install --upgrade six
+$PIP install --upgrade six pip
 
-GRPC_PYTHON_BINARIES_REPOSITORY="${BDIST_DIR}" \
-    $PIP install \
-    ${SDIST_ARCHIVE}
+# At least one of the bdist packages has to succeed (whichever one matches the
+# test machine, anyway).
+for bdist in ${BDIST_ARCHIVES}; do
+  ($PIP install $bdist) || true
+done
 
 $PYTHON distribtest.py
 
-- 
GitLab


From 88baf86d710a2234f6f83a04d46fbe162a4ef0d4 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Wed, 4 May 2016 06:33:15 -0700
Subject: [PATCH 366/525] Copy all generated Python distribs

---
 tools/run_tests/build_artifact_python.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 920d255aed..35c3a48afa 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -73,7 +73,7 @@ then
   for wheel in tools/distrib/python/grpcio_tools/dist/*.whl; do
     ${AUDITWHEEL} repair $wheel -w artifacts/
   done
-else
-  cp -r dist/* artifacts
-  cp -r tools/distrib/python/grpcio_tools/dist/* artifacts
 fi
+
+cp -r dist/* artifacts
+cp -r tools/distrib/python/grpcio_tools/dist/* artifacts
-- 
GitLab


From f837cc8f6304e1cd2a018d449fb4826e560cb282 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Wed, 4 May 2016 11:59:22 -0700
Subject: [PATCH 367/525] Fix missing symbols

---
 tools/run_tests/artifact_targets.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index ec44e3746c..72f4f8dd96 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -127,7 +127,9 @@ class PythonArtifact:
         '-DGPR_POSIX_WAKEUP_FD=1',
         '-DGPR_POSIX_SOCKETADDR=1',
         #'-DGPR_LINUX_EVENTFD=1',
+        '-DGPR_POSIX_NO_SPECIAL_WAKEUP_FD=1',
         #'-DGPR_LINUX_SOCKETUTILS=1',
+        '-DGPR_POSIX_SOCKETUTILS=1',
         '-DGPR_HAVE_UNIX_SOCKET=1',
         '-DGPR_HAVE_IP_PKTINFO=1',
         '-DGPR_HAVE_IPV6_RECVPKTINFO=1',
-- 
GitLab


From 916c960e593affc049ade727e86f78febeeb2420 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Wed, 4 May 2016 12:48:39 -0700
Subject: [PATCH 368/525] Fix Python distrib test

---
 test/distrib/python/run_distrib_test.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index 73e471dd26..e20767a885 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -41,18 +41,18 @@ then
   exit 1
 fi
 
-PIP=pip2
-which $PIP || PIP=pip
 PYTHON=python2
+PIP=pip2
 which $PYTHON || PYTHON=python
+which $PIP || PIP=pip
 
 # TODO(jtattermusch): this shouldn't be required
-$PIP install --upgrade six pip
+${PIP} install --upgrade six pip
 
 # At least one of the bdist packages has to succeed (whichever one matches the
 # test machine, anyway).
 for bdist in ${BDIST_ARCHIVES}; do
-  ($PIP install $bdist) || true
+  ($PYTHON -m pip install $bdist) || true
 done
 
 $PYTHON distribtest.py
-- 
GitLab


From f9b89b181d243f8b3eaddeb000f751d71c257ad5 Mon Sep 17 00:00:00 2001
From: Michael Yeh <miyeh@cisco.com>
Date: Wed, 4 May 2016 16:36:20 -0700
Subject: [PATCH 369/525] Updated to more closely mimic
 greeter_async_client.cc.  Fixed typos in comments.

---
 .../cpp/helloworld/greeter_async_client.cc    |  8 ++--
 .../cpp/helloworld/greeter_async_client2.cc   | 37 +++++++++++--------
 2 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/examples/cpp/helloworld/greeter_async_client.cc b/examples/cpp/helloworld/greeter_async_client.cc
index 35014267fe..c1f5eb55f0 100644
--- a/examples/cpp/helloworld/greeter_async_client.cc
+++ b/examples/cpp/helloworld/greeter_async_client.cc
@@ -53,7 +53,7 @@ class GreeterClient {
   explicit GreeterClient(std::shared_ptr<Channel> channel)
       : stub_(Greeter::NewStub(channel)) {}
 
-  // Assambles the client's payload, sends it and presents the response back
+  // Assembles the client's payload, sends it and presents the response back
   // from the server.
   std::string SayHello(const std::string& user) {
     // Data we are sending to the server.
@@ -74,9 +74,9 @@ class GreeterClient {
     // Storage for the status of the RPC upon completion.
     Status status;
 
-    // stub_->AsyncSayHello() perform the RPC call, returning an instance we
-    // store in "rpc". Because we are using the asynchronous API, we need the
-    // hold on to the "rpc" instance in order to get updates on the ongoig RPC.
+    // stub_->AsyncSayHello() performs the RPC call, returning an instance we
+    // store in "rpc". Because we are using the asynchronous API, we need to
+    // hold on to the "rpc" instance in order to get updates on the ongoing RPC.
     std::unique_ptr<ClientAsyncResponseReader<HelloReply> > rpc(
         stub_->AsyncSayHello(&context, request, &cq));
 
diff --git a/examples/cpp/helloworld/greeter_async_client2.cc b/examples/cpp/helloworld/greeter_async_client2.cc
index cdbdd1f306..0902376074 100644
--- a/examples/cpp/helloworld/greeter_async_client2.cc
+++ b/examples/cpp/helloworld/greeter_async_client2.cc
@@ -54,42 +54,49 @@ class GreeterClient {
     explicit GreeterClient(std::shared_ptr<Channel> channel)
             : stub_(Greeter::NewStub(channel)) {}
 
-    // Assambles the client's payload, sends it and presents the response back
-    // from the server.
+    // Assembles the client's payload and sends it to the server.
     void SayHello(const std::string& user) {
         // Data we are sending to the server.
         HelloRequest request;
         request.set_name(user);
 
+        // Call object to store rpc data
         AsyncClientCall* call = new AsyncClientCall;
 
-        // stub_->AsyncSayHello() perform the RPC call, returning an instance we
-        // store in "rpc". Because we are using the asynchronous API, we need the
-        // hold on to the "rpc" instance in order to get updates on the ongoing RPC.
+        // stub_->AsyncSayHello() performs the RPC call, returning an instance to
+        // store in "call". Because we are using the asynchronous API, we need to
+        // hold on to the "call" instance in order to get updates on the ongoing RPC.
         call->response_reader = stub_->AsyncSayHello(&call->context, request, &cq_);
 
 
         // Request that, upon completion of the RPC, "reply" be updated with the
         // server's response; "status" with the indication of whether the operation
-        // was successful. Tag the request with the memory address of call object.
+        // was successful. Tag the request with the memory address of the call object.
         call->response_reader->Finish(&call->reply, &call->status, (void*)call);
 
     }
 
-    // Loop while listening for completed responses
-    void AsyncCompleteRpc()
-    {
+    // Loop while listening for completed responses.
+    // Prints out the response from the server.
+    void AsyncCompleteRpc() {
         void* got_tag;
         bool ok = false;
 
         // Block until the next result is available in the completion queue "cq".
-        while (cq_.Next(&got_tag, &ok))
-        {
+        while (cq_.Next(&got_tag, &ok)) {
+            // The tag in this example is the memory location of the call object
             AsyncClientCall* call = static_cast<AsyncClientCall*>(got_tag);
-            if (ok)
+
+            // Verify that the request was completed successfully. Note that "ok"
+            // corresponds solely to the request for updates introduced by Finish().
+            GPR_ASSERT(ok);
+
+            if (call->status.ok())
                 std::cout << "Greeter received: " << call->reply.message() << std::endl;
             else
                 std::cout << "RPC failed" << std::endl;
+
+            // Once we're complete, deallocate the call object.
             delete call;
         }
     }
@@ -97,8 +104,7 @@ class GreeterClient {
   private:
 
     // struct for keeping state and data information
-    struct AsyncClientCall
-    {
+    struct AsyncClientCall {
         // Container for the data we expect from the server.
         HelloReply reply;
 
@@ -135,8 +141,7 @@ int main(int argc, char** argv) {
     // Spawn reader thread that loops indefinitely
     std::thread thread_ = std::thread(&GreeterClient::AsyncCompleteRpc, &greeter);
 
-    for (int i = 0; i < 100; i++)
-    {
+    for (int i = 0; i < 100; i++) {
         std::string user("world " + std::to_string(i));
         greeter.SayHello(user);  // The actual RPC call!
     }
-- 
GitLab


From 751fbb06f6d2040d49d6c3d89192eb08a1c6cff4 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Wed, 4 May 2016 16:12:56 -0700
Subject: [PATCH 370/525] Build grpcio tools on Windows

---
 tools/run_tests/artifact_targets.py       |  3 ++-
 tools/run_tests/build_artifact_python.bat | 13 +++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index 72f4f8dd96..477bd46888 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -151,7 +151,8 @@ class PythonArtifact:
     elif self.platform == 'windows':
       return create_jobspec(self.name,
                             ['tools\\run_tests\\build_artifact_python.bat',
-                             self.python_version
+                             self.python_version,
+                             '32' if self.arch == 'x86' else '64'
                             ],
                             shell=True)
     else:
diff --git a/tools/run_tests/build_artifact_python.bat b/tools/run_tests/build_artifact_python.bat
index 023d394549..636ae0d393 100644
--- a/tools/run_tests/build_artifact_python.bat
+++ b/tools/run_tests/build_artifact_python.bat
@@ -52,8 +52,21 @@ set GRPC_PYTHON_BUILD_WITH_CYTHON=1
 
 python setup.py bdist_wheel
 
+@rem Build gRPC Python tools
+set PATH=C:\msys64\mingw%2\bin;%PATH%
+set CC=C:\msys64\mingw%2\bin\g++.exe
+set CFLAGS=-fno-wrapv
+python tools\distrib\python\make_grpcio_tools.py
+if %2 == 32 (
+  python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32
+) else (
+  python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64
+)
+python tools\distrib\python\grpcio_tools\setup.py bdist_wheel
+
 mkdir artifacts
 xcopy /Y /I /S dist\* artifacts\ || goto :error
+xcopy /Y /I /S tools\distrib\python\grpcio_tools\dist\* artifacts\ || goto :error
 
 goto :EOF
 
-- 
GitLab


From 4df964780fe57b8cc121cf382d25ab7cf72c4c17 Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Wed, 4 May 2016 17:39:28 -0700
Subject: [PATCH 371/525] Reworked python health checking and added tests

---
 .../grpcio/tests/health_check/__init__.py     |  28 ++++
 .../health_check/_health_servicer_test.py     |  75 ++++++++++
 src/python/grpcio/tests/tests.json            |   5 +-
 src/python/grpcio_health_checking/.gitignore  |   5 +
 .../grpc/health/v1/health.proto               |  49 -------
 .../grpc/health/v1/health.py                  | 129 ------------------
 .../__init__.py                               |   0
 .../health/__init__.py                        |   0
 .../health/v1/__init__.py                     |   0
 .../grpc_health_checking/health/v1/health.py  |  66 +++++++++
 .../{commands.py => health_commands.py}       |  30 ++++
 src/python/grpcio_health_checking/setup.py    |  12 +-
 tools/run_tests/build_python.sh               |   4 +
 tools/run_tests/run_tests.py                  |  21 ++-
 14 files changed, 227 insertions(+), 197 deletions(-)
 create mode 100644 src/python/grpcio/tests/health_check/__init__.py
 create mode 100644 src/python/grpcio/tests/health_check/_health_servicer_test.py
 create mode 100644 src/python/grpcio_health_checking/.gitignore
 delete mode 100644 src/python/grpcio_health_checking/grpc/health/v1/health.proto
 delete mode 100644 src/python/grpcio_health_checking/grpc/health/v1/health.py
 rename src/python/grpcio_health_checking/{grpc => grpc_health_checking}/__init__.py (100%)
 rename src/python/grpcio_health_checking/{grpc => grpc_health_checking}/health/__init__.py (100%)
 rename src/python/grpcio_health_checking/{grpc => grpc_health_checking}/health/v1/__init__.py (100%)
 create mode 100644 src/python/grpcio_health_checking/grpc_health_checking/health/v1/health.py
 rename src/python/grpcio_health_checking/{commands.py => health_commands.py} (80%)

diff --git a/src/python/grpcio/tests/health_check/__init__.py b/src/python/grpcio/tests/health_check/__init__.py
new file mode 100644
index 0000000000..100a624dc9
--- /dev/null
+++ b/src/python/grpcio/tests/health_check/__init__.py
@@ -0,0 +1,28 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/python/grpcio/tests/health_check/_health_servicer_test.py b/src/python/grpcio/tests/health_check/_health_servicer_test.py
new file mode 100644
index 0000000000..625cb7fc59
--- /dev/null
+++ b/src/python/grpcio/tests/health_check/_health_servicer_test.py
@@ -0,0 +1,75 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Tests of grpc_health_checking.health.v1.health."""
+
+import unittest
+
+from grpc_health_checking.health.v1 import health
+from grpc_health_checking.health.v1 import health_pb2
+
+
+class HealthServicerTest(unittest.TestCase):
+
+  def setUp(self):
+    self.servicer = health.HealthServicer()
+    self.servicer.set('', health_pb2.HealthCheckResponse.SERVING)
+    self.servicer.set('grpc.test.TestServiceServing',
+                      health_pb2.HealthCheckResponse.SERVING)
+    self.servicer.set('grpc.test.TestServiceUnknown',
+                      health_pb2.HealthCheckResponse.UNKNOWN)
+    self.servicer.set('grpc.test.TestServiceNotServing',
+                      health_pb2.HealthCheckResponse.NOT_SERVING)
+
+  def test_empty_service(self):
+    request = health_pb2.HealthCheckRequest()
+    resp = self.servicer.Check(request, None)
+    self.assertEqual(resp.status, health_pb2.HealthCheckResponse.SERVING)
+
+  def test_serving_service(self):
+    request = health_pb2.HealthCheckRequest(
+        service='grpc.test.TestServiceServing')
+    resp = self.servicer.Check(request, None)
+    self.assertEqual(resp.status, health_pb2.HealthCheckResponse.SERVING)
+
+  def test_unknown_serivce(self):
+    request = health_pb2.HealthCheckRequest(
+        service='grpc.test.TestServiceUnknown')
+    resp = self.servicer.Check(request, None)
+    self.assertEqual(resp.status, health_pb2.HealthCheckResponse.UNKNOWN)
+
+  def test_not_serving_service(self):
+    request = health_pb2.HealthCheckRequest(
+        service='grpc.test.TestServiceNotServing')
+    resp = self.servicer.Check(request, None)
+    self.assertEqual(resp.status, health_pb2.HealthCheckResponse.NOT_SERVING)
+
+
+if __name__ == '__main__':
+  unittest.main(verbosity=2)
diff --git a/src/python/grpcio/tests/tests.json b/src/python/grpcio/tests/tests.json
index 84870aaa5c..691062f25a 100644
--- a/src/python/grpcio/tests/tests.json
+++ b/src/python/grpcio/tests/tests.json
@@ -28,7 +28,8 @@
   "_face_interface_test.GenericInvokerBlockingInvocationInlineServiceTest", 
   "_face_interface_test.GenericInvokerFutureInvocationAsynchronousEventServiceTest", 
   "_face_interface_test.MultiCallableInvokerBlockingInvocationInlineServiceTest", 
-  "_face_interface_test.MultiCallableInvokerFutureInvocationAsynchronousEventServiceTest", 
+  "_face_interface_test.MultiCallableInvokerFutureInvocationAsynchronousEventServiceTest",
+  "_health_servicer_test.HealthServicerTest",
   "_implementations_test.ChannelCredentialsTest", 
   "_insecure_interop_test.InsecureInteropTest", 
   "_intermediary_low_test.CancellationTest", 
@@ -50,4 +51,4 @@
   "cygrpc_test.InsecureServerInsecureClient", 
   "cygrpc_test.SecureServerSecureClient", 
   "cygrpc_test.TypeSmokeTest"
-]
\ No newline at end of file
+]
diff --git a/src/python/grpcio_health_checking/.gitignore b/src/python/grpcio_health_checking/.gitignore
new file mode 100644
index 0000000000..85af466886
--- /dev/null
+++ b/src/python/grpcio_health_checking/.gitignore
@@ -0,0 +1,5 @@
+*.proto
+*_pb2.py
+build/
+grpcio_health_checking.egg-info/
+dist/
diff --git a/src/python/grpcio_health_checking/grpc/health/v1/health.proto b/src/python/grpcio_health_checking/grpc/health/v1/health.proto
deleted file mode 100644
index b0bac54be9..0000000000
--- a/src/python/grpcio_health_checking/grpc/health/v1/health.proto
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-syntax = "proto3";
-
-package grpc.health.v1;
-
-message HealthCheckRequest {
-  string service = 1;
-}
-
-message HealthCheckResponse {
-  enum ServingStatus {
-    UNKNOWN = 0;
-    SERVING = 1;
-    NOT_SERVING = 2;
-  }
-  ServingStatus status = 1;
-}
-
-service Health {
-  rpc Check(HealthCheckRequest) returns (HealthCheckResponse);
-}
diff --git a/src/python/grpcio_health_checking/grpc/health/v1/health.py b/src/python/grpcio_health_checking/grpc/health/v1/health.py
deleted file mode 100644
index 4b5af15aa6..0000000000
--- a/src/python/grpcio_health_checking/grpc/health/v1/health.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""Reference implementation for health checking in gRPC Python."""
-
-import abc
-import enum
-import threading
-
-from grpc.health.v1 import health_pb2
-
-
-@enum.unique
-class HealthStatus(enum.Enum):
-  """Statuses for a service mirroring the reference health.proto's values."""
-  UNKNOWN = health_pb2.HealthCheckResponse.UNKNOWN
-  SERVING = health_pb2.HealthCheckResponse.SERVING
-  NOT_SERVING = health_pb2.HealthCheckResponse.NOT_SERVING
-
-
-class _HealthServicer(health_pb2.EarlyAdopterHealthServicer):
-  """Servicer handling RPCs for service statuses."""
-
-  def __init__(self):
-    self._server_status_lock = threading.Lock()
-    self._server_status = {}
-
-  def Check(self, request, context):
-    with self._server_status_lock:
-      if request.service not in self._server_status:
-        # TODO(atash): once the Python API has a way of setting the server
-        # status, bring us into conformance with the health check spec by
-        # returning the NOT_FOUND status here.
-        raise NotImplementedError()
-      else:
-        return health_pb2.HealthCheckResponse(
-            status=self._server_status[request.service].value)
-
-  def set(service, status):
-    if not isinstance(status, HealthStatus):
-      raise TypeError('expected grpc.health.v1.health.HealthStatus '
-                      'for argument `status` but got {}'.format(status))
-    with self._server_status_lock:
-      self._server_status[service] = status
-
-
-class HealthServer(health_pb2.EarlyAdopterHealthServer):
-  """Interface for the reference gRPC Python health server."""
-  __metaclass__ = abc.ABCMeta
-
-  @abc.abstractmethod
-  def start(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def stop(self):
-    raise NotImplementedError()
-
-  @abc.abstractmethod
-  def set(self, service, status):
-    """Set the status of the given service.
-
-    Args:
-      service (str): service name of the service to set the reported status of
-      status (HealthStatus): status to set for the specified service
-    """
-    raise NotImplementedError()
-
-
-class _HealthServerImplementation(HealthServer):
-  """Implementation for the reference gRPC Python health server."""
-
-  def __init__(self, server, servicer):
-    self._server = server
-    self._servicer = servicer
-
-  def start(self):
-    self._server.start()
-
-  def stop(self):
-    self._server.stop()
-
-  def set(self, service, status):
-    self._servicer.set(service, status)
-
-
-def create_Health_server(port, private_key=None, certificate_chain=None):
-  """Get a HealthServer instance.
-
-  Args:
-    port (int): port number passed through to health_pb2 server creation
-      routine.
-    private_key (str): to-be-created server's desired private key
-    certificate_chain (str): to-be-created server's desired certificate chain
-
-  Returns:
-    An instance of HealthServer (conforming thus to
-    EarlyAdopterHealthServer and providing a method to set server status)."""
-  servicer = _HealthServicer()
-  server = health_pb2.early_adopter_create_Health_server(
-      servicer, port=port, private_key=private_key,
-      certificate_chain=certificate_chain)
-  return _HealthServerImplementation(server, servicer)
diff --git a/src/python/grpcio_health_checking/grpc/__init__.py b/src/python/grpcio_health_checking/grpc_health_checking/__init__.py
similarity index 100%
rename from src/python/grpcio_health_checking/grpc/__init__.py
rename to src/python/grpcio_health_checking/grpc_health_checking/__init__.py
diff --git a/src/python/grpcio_health_checking/grpc/health/__init__.py b/src/python/grpcio_health_checking/grpc_health_checking/health/__init__.py
similarity index 100%
rename from src/python/grpcio_health_checking/grpc/health/__init__.py
rename to src/python/grpcio_health_checking/grpc_health_checking/health/__init__.py
diff --git a/src/python/grpcio_health_checking/grpc/health/v1/__init__.py b/src/python/grpcio_health_checking/grpc_health_checking/health/v1/__init__.py
similarity index 100%
rename from src/python/grpcio_health_checking/grpc/health/v1/__init__.py
rename to src/python/grpcio_health_checking/grpc_health_checking/health/v1/__init__.py
diff --git a/src/python/grpcio_health_checking/grpc_health_checking/health/v1/health.py b/src/python/grpcio_health_checking/grpc_health_checking/health/v1/health.py
new file mode 100644
index 0000000000..7068ba9605
--- /dev/null
+++ b/src/python/grpcio_health_checking/grpc_health_checking/health/v1/health.py
@@ -0,0 +1,66 @@
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+"""Reference implementation for health checking in gRPC Python."""
+
+import threading
+
+from grpc_health_checking.health.v1 import health_pb2
+
+
+class HealthServicer(health_pb2.BetaHealthServicer):
+  """Servicer handling RPCs for service statuses."""
+
+  def __init__(self):
+    self._server_status_lock = threading.Lock()
+    self._server_status = {}
+
+  def Check(self, request, context):
+    with self._server_status_lock:
+      if request.service not in self._server_status:
+        # TODO(atash): once the Python API has a way of setting the server
+        # status, bring us into conformance with the health check spec by
+        # returning the NOT_FOUND status here.
+        raise NotImplementedError()
+      else:
+        return health_pb2.HealthCheckResponse(
+            status=self._server_status[request.service])
+
+  def set(self, service, status):
+    """Sets the status of a service.
+
+    Args:
+        service: string, the name of the service.
+            NOTE, '' must be set.
+        status: HealthCheckResponse.status enum value indicating
+            the status of the service
+    """
+    with self._server_status_lock:
+      self._server_status[service] = status
+
diff --git a/src/python/grpcio_health_checking/commands.py b/src/python/grpcio_health_checking/health_commands.py
similarity index 80%
rename from src/python/grpcio_health_checking/commands.py
rename to src/python/grpcio_health_checking/health_commands.py
index 3f4ea6e22f..b01e0bd0e8 100644
--- a/src/python/grpcio_health_checking/commands.py
+++ b/src/python/grpcio_health_checking/health_commands.py
@@ -33,11 +33,16 @@ import distutils
 import glob
 import os
 import os.path
+import shutil
 import subprocess
 import sys
 
 import setuptools
 from setuptools.command import build_py
+from setuptools.command import sdist
+
+ROOT_DIR = os.path.abspath(os.path.dirname(os.path.abspath(__file__)))
+HEALTH_PROTO = os.path.join(ROOT_DIR, '../../proto/grpc/health/v1/health.proto')
 
 
 class BuildProtoModules(setuptools.Command):
@@ -76,9 +81,34 @@ class BuildProtoModules(setuptools.Command):
       raise Exception('{}\nOutput:\n{}'.format(e.message, e.output))
 
 
+class CopyProtoModules(setuptools.Command):
+  """Command to copy proto modules from grpc/src/proto."""
+
+  def initialize_options(self):
+    pass
+
+  def finalize_options(self):
+    pass
+
+  def run(self):
+    if os.path.isfile(HEALTH_PROTO):
+      shutil.copyfile(
+          HEALTH_PROTO,
+          os.path.join(ROOT_DIR, 'grpc_health_checking/health/v1/health.proto'))
+
+
 class BuildPy(build_py.build_py):
   """Custom project build command."""
 
   def run(self):
+    self.run_command('copy_proto_modules')
     self.run_command('build_proto_modules')
     build_py.build_py.run(self)
+
+
+class SDist(sdist.sdist):
+  """Custom project build command."""
+
+  def run(self):
+    self.run_command('copy_proto_modules')
+    sdist.sdist.run(self)
diff --git a/src/python/grpcio_health_checking/setup.py b/src/python/grpcio_health_checking/setup.py
index 35253ba312..5aa4bb8845 100644
--- a/src/python/grpcio_health_checking/setup.py
+++ b/src/python/grpcio_health_checking/setup.py
@@ -40,7 +40,7 @@ import setuptools
 os.chdir(os.path.dirname(os.path.abspath(__file__)))
 
 # Break import-style to ensure we can actually find our commands module.
-import commands
+import health_commands
 
 _PACKAGES = (
     setuptools.find_packages('.')
@@ -51,19 +51,21 @@ _PACKAGE_DIRECTORIES = {
 }
 
 _INSTALL_REQUIRES = (
-    'grpcio>=0.11.0b0',
+    'grpcio>=grpcio-0.14.0.dev0',
 )
 
 _SETUP_REQUIRES = _INSTALL_REQUIRES
 
 _COMMAND_CLASS = {
-    'build_proto_modules': commands.BuildProtoModules,
-    'build_py': commands.BuildPy,
+    'copy_proto_modules': health_commands.CopyProtoModules,
+    'build_proto_modules': health_commands.BuildProtoModules,
+    'build_py': health_commands.BuildPy,
+    'sdist': health_commands.SDist,
 }
 
 setuptools.setup(
     name='grpcio_health_checking',
-    version='0.11.0b0',
+    version='0.14.0b1',
     packages=list(_PACKAGES),
     package_dir=_PACKAGE_DIRECTORIES,
     install_requires=_INSTALL_REQUIRES,
diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index 594c20b14c..4cc6881ef5 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -55,3 +55,7 @@ $ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build
 $ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build_py
 $ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py build_ext --inplace
 $ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/setup.py gather --test
+
+# Build the health checker
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/src/python/grpcio_health_checking/setup.py build
+$ROOT/.tox/${TOX_PYTHON_ENV}/bin/python $ROOT/src/python/grpcio_health_checking/setup.py build_py
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 37291f4d3f..9c6d91ba7e 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -272,17 +272,12 @@ class NodeLanguage(object):
 
   def __init__(self):
     self.platform = platform_string()
+    self.node_version = '0.12'
 
   def configure(self, config, args):
     self.config = config
     self.args = args
-    _check_compiler(self.args.compiler, ['default', 'node0.12',
-                                         'node4', 'node5'])
-    if self.args.compiler == 'default':
-      self.node_version = '4'
-    else:
-      # Take off the word "node"
-      self.node_version = self.args.compiler[4:]
+    _check_compiler(self.args.compiler, ['default'])
 
   def test_specs(self):
     if self.platform == 'windows':
@@ -371,7 +366,10 @@ class PythonLanguage(object):
     with open('src/python/grpcio/tests/tests.json') as tests_json_file:
       tests_json = json.load(tests_json_file)
     environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
-    environment['PYTHONPATH'] = os.path.abspath('src/python/gens')
+    environment['PYTHONPATH'] = '{}:{}'.format(
+        os.path.abspath('src/python/gens'), 
+        os.path.abspath('src/python/grpcio_health_checking'))
+    
     if self.config.build_config != 'gcov':
       return [self.config.job_spec(
           ['tools/run_tests/run_python.sh', self._tox_env],
@@ -807,8 +805,7 @@ argp.add_argument('--compiler',
                            'gcc4.4', 'gcc4.9', 'gcc5.3',
                            'clang3.4', 'clang3.6',
                            'vs2010', 'vs2013', 'vs2015',
-                           'python2.7', 'python3.4',
-                           'node0.12', 'node4', 'node5'],
+                           'python2.7', 'python3.4'],
                   default='default',
                   help='Selects compiler to use. Allowed values depend on the platform and language.')
 argp.add_argument('--build_only',
@@ -912,13 +909,13 @@ if args.use_docker:
   env = os.environ.copy()
   env['RUN_TESTS_COMMAND'] = run_tests_cmd
   env['DOCKERFILE_DIR'] = dockerfile_dir
-  env['DOCKER_RUN_SCRIPT'] = 'tools/run_tests/dockerize/docker_run_tests.sh'
+  env['DOCKER_RUN_SCRIPT'] = 'tools/jenkins/docker_run_tests.sh'
   if args.xml_report:
     env['XML_REPORT'] = args.xml_report
   if not args.travis:
     env['TTY_FLAG'] = '-t'  # enables Ctrl-C when not on Jenkins.
 
-  subprocess.check_call(['tools/run_tests/dockerize/build_docker_and_run_tests.sh'],
+  subprocess.check_call(['tools/jenkins/build_docker_and_run_tests.sh'],
                         shell=True,
                         env=env)
   sys.exit(0)
-- 
GitLab


From 4e1ebfa17689e045b725e64bd75db044eb2abea6 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 4 May 2016 17:43:07 -0700
Subject: [PATCH 372/525] Updated template file

---
 templates/src/node/tools/package.json.template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/templates/src/node/tools/package.json.template b/templates/src/node/tools/package.json.template
index 4f673c48d1..69ad71a3b8 100644
--- a/templates/src/node/tools/package.json.template
+++ b/templates/src/node/tools/package.json.template
@@ -18,8 +18,8 @@
       }
     ],
     "bin": {
-      "grpc-tools-protoc": "./bin/protoc.js",
-      "grpc-tools-plugin": "./bin/protoc_plugin.js"
+      "grpc_tools_node_protoc": "./bin/protoc.js",
+      "grpc_tools_node_protoc_plugin": "./bin/protoc_plugin.js"
     },
     "scripts": {
       "install": "./node_modules/.bin/node-pre-gyp install"
-- 
GitLab


From 2c56e1cc2c7cf6d645c14ce333fb99f08734b5df Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Wed, 4 May 2016 17:46:27 -0700
Subject: [PATCH 373/525] run_tests.py updated

---
 tools/run_tests/run_tests.py | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 9c6d91ba7e..37291f4d3f 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -272,12 +272,17 @@ class NodeLanguage(object):
 
   def __init__(self):
     self.platform = platform_string()
-    self.node_version = '0.12'
 
   def configure(self, config, args):
     self.config = config
     self.args = args
-    _check_compiler(self.args.compiler, ['default'])
+    _check_compiler(self.args.compiler, ['default', 'node0.12',
+                                         'node4', 'node5'])
+    if self.args.compiler == 'default':
+      self.node_version = '4'
+    else:
+      # Take off the word "node"
+      self.node_version = self.args.compiler[4:]
 
   def test_specs(self):
     if self.platform == 'windows':
@@ -366,10 +371,7 @@ class PythonLanguage(object):
     with open('src/python/grpcio/tests/tests.json') as tests_json_file:
       tests_json = json.load(tests_json_file)
     environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
-    environment['PYTHONPATH'] = '{}:{}'.format(
-        os.path.abspath('src/python/gens'), 
-        os.path.abspath('src/python/grpcio_health_checking'))
-    
+    environment['PYTHONPATH'] = os.path.abspath('src/python/gens')
     if self.config.build_config != 'gcov':
       return [self.config.job_spec(
           ['tools/run_tests/run_python.sh', self._tox_env],
@@ -805,7 +807,8 @@ argp.add_argument('--compiler',
                            'gcc4.4', 'gcc4.9', 'gcc5.3',
                            'clang3.4', 'clang3.6',
                            'vs2010', 'vs2013', 'vs2015',
-                           'python2.7', 'python3.4'],
+                           'python2.7', 'python3.4',
+                           'node0.12', 'node4', 'node5'],
                   default='default',
                   help='Selects compiler to use. Allowed values depend on the platform and language.')
 argp.add_argument('--build_only',
@@ -909,13 +912,13 @@ if args.use_docker:
   env = os.environ.copy()
   env['RUN_TESTS_COMMAND'] = run_tests_cmd
   env['DOCKERFILE_DIR'] = dockerfile_dir
-  env['DOCKER_RUN_SCRIPT'] = 'tools/jenkins/docker_run_tests.sh'
+  env['DOCKER_RUN_SCRIPT'] = 'tools/run_tests/dockerize/docker_run_tests.sh'
   if args.xml_report:
     env['XML_REPORT'] = args.xml_report
   if not args.travis:
     env['TTY_FLAG'] = '-t'  # enables Ctrl-C when not on Jenkins.
 
-  subprocess.check_call(['tools/jenkins/build_docker_and_run_tests.sh'],
+  subprocess.check_call(['tools/run_tests/dockerize/build_docker_and_run_tests.sh'],
                         shell=True,
                         env=env)
   sys.exit(0)
-- 
GitLab


From e79b08b5ec06bf7ee1af19258f3e98386668899f Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Wed, 4 May 2016 18:09:20 -0700
Subject: [PATCH 374/525] RouteGuide example now works with moving between
 tabs. Fixes issue 6404.

---
 .../objective-c/route_guide/ViewControllers.m | 89 +++++++++++++------
 1 file changed, 62 insertions(+), 27 deletions(-)

diff --git a/examples/objective-c/route_guide/ViewControllers.m b/examples/objective-c/route_guide/ViewControllers.m
index 0b1a1cf482..e32978240b 100644
--- a/examples/objective-c/route_guide/ViewControllers.m
+++ b/examples/objective-c/route_guide/ViewControllers.m
@@ -80,19 +80,14 @@ static NSString * const kHostAddress = @"localhost:50051";
  * Run the getFeature demo. Calls getFeature with a point known to have a feature and a point known
  * not to have a feature.
  */
-@interface GetFeatureViewController : UIViewController
+@interface GetFeatureViewController : UIViewController {
+  RTGRouteGuide *service;
+}
 @end
 
 @implementation GetFeatureViewController
 
-- (void)viewDidLoad {
-  [super viewDidLoad];
-
-  // This only needs to be done once per host, before creating service objects for that host.
-  [GRPCCall useInsecureConnectionsForHost:kHostAddress];
-
-  RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
+- (void)execRequest {
   void (^handler)(RTGFeature *response, NSError *error) = ^(RTGFeature *response, NSError *error) {
     if (response.name.length) {
       NSLog(@"Found feature called %@ at %@.", response.name, response.location);
@@ -111,6 +106,19 @@ static NSString * const kHostAddress = @"localhost:50051";
   [service getFeatureWithRequest:[RTGPoint message] handler:handler];
 }
 
+- (void)viewDidLoad {
+  [super viewDidLoad];
+
+  // This only needs to be done once per host, before creating service objects for that host.
+  [GRPCCall useInsecureConnectionsForHost:kHostAddress];
+
+  service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+  [self execRequest];
+}
+
 @end
 
 
@@ -120,16 +128,15 @@ static NSString * const kHostAddress = @"localhost:50051";
  * Run the listFeatures demo. Calls listFeatures with a rectangle containing all of the features in
  * the pre-generated database. Prints each response as it comes in.
  */
-@interface ListFeaturesViewController : UIViewController
+@interface ListFeaturesViewController : UIViewController {
+  RTGRouteGuide *service;
+}
+
 @end
 
 @implementation ListFeaturesViewController
 
-- (void)viewDidLoad {
-  [super viewDidLoad];
-
-  RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
+- (void)execRequest {
   RTGRectangle *rectangle = [RTGRectangle message];
   rectangle.lo.latitude = 405E6;
   rectangle.lo.longitude = -750E6;
@@ -147,6 +154,16 @@ static NSString * const kHostAddress = @"localhost:50051";
   }];
 }
 
+- (void)viewDidLoad {
+  [super viewDidLoad];
+
+  service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+  [self execRequest];
+}
+
 @end
 
 
@@ -157,14 +174,15 @@ static NSString * const kHostAddress = @"localhost:50051";
  * database with a variable delay in between. Prints the statistics when they are sent from the
  * server.
  */
-@interface RecordRouteViewController : UIViewController
+@interface RecordRouteViewController : UIViewController {
+  RTGRouteGuide *service;
+}
+
 @end
 
 @implementation RecordRouteViewController
 
-- (void)viewDidLoad {
-  [super viewDidLoad];
-
+- (void)execRequest {
   NSString *dataBasePath = [NSBundle.mainBundle pathForResource:@"route_guide_db"
                                                          ofType:@"json"];
   NSData *dataBaseContent = [NSData dataWithContentsOfFile:dataBasePath];
@@ -178,8 +196,6 @@ static NSString * const kHostAddress = @"localhost:50051";
     return location;
   }];
 
-  RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
   [service recordRouteWithRequestsWriter:locations
                                  handler:^(RTGRouteSummary *response, NSError *error) {
     if (response) {
@@ -193,6 +209,16 @@ static NSString * const kHostAddress = @"localhost:50051";
   }];
 }
 
+- (void)viewDidLoad {
+  [super viewDidLoad];
+
+  service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+  [self execRequest];
+}
+
 @end
 
 
@@ -202,14 +228,15 @@ static NSString * const kHostAddress = @"localhost:50051";
  * Run the routeChat demo. Send some chat messages, and print any chat messages that are sent from
  * the server.
  */
-@interface RouteChatViewController : UIViewController
+@interface RouteChatViewController : UIViewController {
+  RTGRouteGuide *service;
+}
+
 @end
 
 @implementation RouteChatViewController
 
-- (void)viewDidLoad {
-  [super viewDidLoad];
-
+- (void)execRequest {
   NSArray *notes = @[[RTGRouteNote noteWithMessage:@"First message" latitude:0 longitude:0],
                      [RTGRouteNote noteWithMessage:@"Second message" latitude:0 longitude:1],
                      [RTGRouteNote noteWithMessage:@"Third message" latitude:1 longitude:0],
@@ -219,8 +246,6 @@ static NSString * const kHostAddress = @"localhost:50051";
     return note;
   }];
 
-  RTGRouteGuide *service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
-
   [service routeChatWithRequestsWriter:notesWriter
                           eventHandler:^(BOOL done, RTGRouteNote *note, NSError *error) {
     if (note) {
@@ -234,4 +259,14 @@ static NSString * const kHostAddress = @"localhost:50051";
   }];
 }
 
+- (void)viewDidLoad {
+  [super viewDidLoad];
+
+  service = [[RTGRouteGuide alloc] initWithHost:kHostAddress];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+  [self execRequest];
+}
+
 @end
-- 
GitLab


From 4982638f78012dd31e474ed2e364633fcba65efb Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Wed, 4 May 2016 18:37:29 -0700
Subject: [PATCH 375/525] Remove grpcio as build dependency

---
 src/python/grpcio_health_checking/MANIFEST.in | 4 ++--
 src/python/grpcio_health_checking/setup.py    | 5 +----
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/python/grpcio_health_checking/MANIFEST.in b/src/python/grpcio_health_checking/MANIFEST.in
index 498b55f20a..e8b4113adb 100644
--- a/src/python/grpcio_health_checking/MANIFEST.in
+++ b/src/python/grpcio_health_checking/MANIFEST.in
@@ -1,2 +1,2 @@
-graft grpc
-include commands.py
+graft grpc_health_checking
+include health_commands.py
diff --git a/src/python/grpcio_health_checking/setup.py b/src/python/grpcio_health_checking/setup.py
index 5aa4bb8845..2818c5b81d 100644
--- a/src/python/grpcio_health_checking/setup.py
+++ b/src/python/grpcio_health_checking/setup.py
@@ -51,11 +51,9 @@ _PACKAGE_DIRECTORIES = {
 }
 
 _INSTALL_REQUIRES = (
-    'grpcio>=grpcio-0.14.0.dev0',
+    'grpcio>=0.13.1',
 )
 
-_SETUP_REQUIRES = _INSTALL_REQUIRES
-
 _COMMAND_CLASS = {
     'copy_proto_modules': health_commands.CopyProtoModules,
     'build_proto_modules': health_commands.BuildProtoModules,
@@ -69,6 +67,5 @@ setuptools.setup(
     packages=list(_PACKAGES),
     package_dir=_PACKAGE_DIRECTORIES,
     install_requires=_INSTALL_REQUIRES,
-    setup_requires=_SETUP_REQUIRES,
     cmdclass=_COMMAND_CLASS
 )
-- 
GitLab


From c47e43df8045e8813f0a2ba617705b660244f0f9 Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Wed, 4 May 2016 18:46:16 -0700
Subject: [PATCH 376/525] Added to PYTHONPATH

---
 tools/run_tests/run_tests.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 37291f4d3f..91c7100958 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -371,7 +371,9 @@ class PythonLanguage(object):
     with open('src/python/grpcio/tests/tests.json') as tests_json_file:
       tests_json = json.load(tests_json_file)
     environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
-    environment['PYTHONPATH'] = os.path.abspath('src/python/gens')
+    environment['PYTHONPATH'] = '{}:{}'.format(
+      os.path.abspath('src/python/gens'), 
+      os.path.abspath('src/python/grpcio_health_checking'))
     if self.config.build_config != 'gcov':
       return [self.config.job_spec(
           ['tools/run_tests/run_python.sh', self._tox_env],
-- 
GitLab


From d8b07cb3a1168bce8073e39ab64d877c2c7d185e Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Thu, 5 May 2016 03:55:55 +0200
Subject: [PATCH 377/525] Let's not compile grpc under Windows - it's taken
 care of already.

---
 src/ruby/ext/grpc/extconf.rb | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 07f7bb93b8..6d65db8306 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -78,9 +78,11 @@ output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
 grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
 ENV['BUILDDIR'] = output_dir
 
-puts 'Building internal gRPC into ' + grpc_lib_dir
-system("make -j -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config}")
-exit 1 unless $? == 0
+unless windows
+  puts 'Building internal gRPC into ' + grpc_lib_dir
+  system("make -j -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config}")
+  exit 1 unless $? == 0
+end
 
 $CFLAGS << ' -I' + File.join(grpc_root, 'include')
 $LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgrpc.a') unless windows
-- 
GitLab


From 88f56e5ce386b0292ded2f08aba2bc92a09369b1 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Thu, 5 May 2016 04:04:50 +0200
Subject: [PATCH 378/525] 'exception_info' is a bad word for Windows...

---
 src/ruby/ext/grpc/rb_call_credentials.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/ruby/ext/grpc/rb_call_credentials.c b/src/ruby/ext/grpc/rb_call_credentials.c
index 38bf1f7710..615bf9415d 100644
--- a/src/ruby/ext/grpc/rb_call_credentials.c
+++ b/src/ruby/ext/grpc/rb_call_credentials.c
@@ -35,7 +35,6 @@
 #include "rb_grpc_imports.generated.h"
 #include "rb_call_credentials.h"
 
-#include <ruby/ruby.h>
 #include <ruby/thread.h>
 
 #include <grpc/grpc.h>
@@ -86,11 +85,11 @@ static VALUE grpc_rb_call_credentials_callback_rescue(VALUE args,
       rb_funcall(exception_object, rb_intern("backtrace"), 0),
       rb_intern("join"),
       1, rb_str_new2("\n\tfrom "));
-  VALUE exception_info = rb_funcall(exception_object, rb_intern("to_s"), 0);
+  VALUE rb_exception_info = rb_funcall(exception_object, rb_intern("to_s"), 0);
   const char *exception_classname = rb_obj_classname(exception_object);
   (void)args;
   gpr_log(GPR_INFO, "Call credentials callback failed: %s: %s\n%s",
-          exception_classname, StringValueCStr(exception_info),
+          exception_classname, StringValueCStr(rb_exception_info),
           StringValueCStr(backtrace));
   rb_hash_aset(result, rb_str_new2("metadata"), Qnil);
   /* Currently only gives the exception class name. It should be possible get
-- 
GitLab


From 9fcdc8765fe301d6828dd70ad83e45e59db39176 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Thu, 5 May 2016 06:15:34 +0200
Subject: [PATCH 379/525] Cleaning up includes.

---
 src/ruby/ext/grpc/rb_byte_buffer.c         | 3 +--
 src/ruby/ext/grpc/rb_call.c                | 3 +--
 src/ruby/ext/grpc/rb_call_credentials.c    | 1 +
 src/ruby/ext/grpc/rb_channel.c             | 3 +--
 src/ruby/ext/grpc/rb_channel_args.c        | 3 +--
 src/ruby/ext/grpc/rb_channel_credentials.c | 5 ++---
 src/ruby/ext/grpc/rb_completion_queue.c    | 2 +-
 src/ruby/ext/grpc/rb_event_thread.c        | 2 +-
 src/ruby/ext/grpc/rb_grpc.c                | 2 +-
 src/ruby/ext/grpc/rb_server.c              | 3 +--
 src/ruby/ext/grpc/rb_server_credentials.c  | 3 +--
 11 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/src/ruby/ext/grpc/rb_byte_buffer.c b/src/ruby/ext/grpc/rb_byte_buffer.c
index cba910d832..1172691116 100644
--- a/src/ruby/ext/grpc/rb_byte_buffer.c
+++ b/src/ruby/ext/grpc/rb_byte_buffer.c
@@ -32,11 +32,10 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_byte_buffer.h"
 
-#include <ruby/ruby.h>
-
 #include <grpc/grpc.h>
 #include <grpc/byte_buffer_reader.h>
 #include <grpc/support/slice.h>
diff --git a/src/ruby/ext/grpc/rb_call.c b/src/ruby/ext/grpc/rb_call.c
index 48c49a21e9..1b06273af9 100644
--- a/src/ruby/ext/grpc/rb_call.c
+++ b/src/ruby/ext/grpc/rb_call.c
@@ -32,11 +32,10 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_call.h"
 
-#include <ruby/ruby.h>
-
 #include <grpc/grpc.h>
 #include <grpc/support/alloc.h>
 
diff --git a/src/ruby/ext/grpc/rb_call_credentials.c b/src/ruby/ext/grpc/rb_call_credentials.c
index 615bf9415d..79ca5b32ce 100644
--- a/src/ruby/ext/grpc/rb_call_credentials.c
+++ b/src/ruby/ext/grpc/rb_call_credentials.c
@@ -32,6 +32,7 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_call_credentials.h"
 
diff --git a/src/ruby/ext/grpc/rb_channel.c b/src/ruby/ext/grpc/rb_channel.c
index 984afad107..013321ffc8 100644
--- a/src/ruby/ext/grpc/rb_channel.c
+++ b/src/ruby/ext/grpc/rb_channel.c
@@ -32,11 +32,10 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_channel.h"
 
-#include <ruby/ruby.h>
-
 #include <grpc/grpc.h>
 #include <grpc/grpc_security.h>
 #include <grpc/support/alloc.h>
diff --git a/src/ruby/ext/grpc/rb_channel_args.c b/src/ruby/ext/grpc/rb_channel_args.c
index 2ffb8f41da..87c0e0a705 100644
--- a/src/ruby/ext/grpc/rb_channel_args.c
+++ b/src/ruby/ext/grpc/rb_channel_args.c
@@ -32,11 +32,10 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_channel_args.h"
 
-#include <ruby/ruby.h>
-
 #include <grpc/grpc.h>
 
 #include "rb_grpc.h"
diff --git a/src/ruby/ext/grpc/rb_channel_credentials.c b/src/ruby/ext/grpc/rb_channel_credentials.c
index 09bd3093a9..cbb23885aa 100644
--- a/src/ruby/ext/grpc/rb_channel_credentials.c
+++ b/src/ruby/ext/grpc/rb_channel_credentials.c
@@ -31,14 +31,13 @@
  *
  */
 
+#include <ruby/ruby.h>
+
 #include <string.h>
 
-#include <ruby/ruby.h>
 #include "rb_grpc_imports.generated.h"
 #include "rb_channel_credentials.h"
 
-#include <ruby/ruby.h>
-
 #include <grpc/grpc.h>
 #include <grpc/grpc_security.h>
 #include <grpc/support/alloc.h>
diff --git a/src/ruby/ext/grpc/rb_completion_queue.c b/src/ruby/ext/grpc/rb_completion_queue.c
index 2a2eee190c..4bb615f8be 100644
--- a/src/ruby/ext/grpc/rb_completion_queue.c
+++ b/src/ruby/ext/grpc/rb_completion_queue.c
@@ -32,10 +32,10 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_completion_queue.h"
 
-#include <ruby/ruby.h>
 #include <ruby/thread.h>
 
 #include <grpc/grpc.h>
diff --git a/src/ruby/ext/grpc/rb_event_thread.c b/src/ruby/ext/grpc/rb_event_thread.c
index 2649a1087f..9e85bbcfbf 100644
--- a/src/ruby/ext/grpc/rb_event_thread.c
+++ b/src/ruby/ext/grpc/rb_event_thread.c
@@ -32,12 +32,12 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_event_thread.h"
 
 #include <stdbool.h>
 
-#include <ruby/ruby.h>
 #include <ruby/thread.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/sync.h>
diff --git a/src/ruby/ext/grpc/rb_grpc.c b/src/ruby/ext/grpc/rb_grpc.c
index acb47b0055..06a07ac646 100644
--- a/src/ruby/ext/grpc/rb_grpc.c
+++ b/src/ruby/ext/grpc/rb_grpc.c
@@ -32,11 +32,11 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_grpc.h"
 
 #include <math.h>
-#include <ruby/ruby.h>
 #include <ruby/vm.h>
 #include <sys/time.h>
 
diff --git a/src/ruby/ext/grpc/rb_server.c b/src/ruby/ext/grpc/rb_server.c
index 96e60c6776..2b3acaaf59 100644
--- a/src/ruby/ext/grpc/rb_server.c
+++ b/src/ruby/ext/grpc/rb_server.c
@@ -32,11 +32,10 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_server.h"
 
-#include <ruby/ruby.h>
-
 #include <grpc/grpc.h>
 #include <grpc/grpc_security.h>
 #include "rb_call.h"
diff --git a/src/ruby/ext/grpc/rb_server_credentials.c b/src/ruby/ext/grpc/rb_server_credentials.c
index b2d7280a30..3b0fb6c910 100644
--- a/src/ruby/ext/grpc/rb_server_credentials.c
+++ b/src/ruby/ext/grpc/rb_server_credentials.c
@@ -32,11 +32,10 @@
  */
 
 #include <ruby/ruby.h>
+
 #include "rb_grpc_imports.generated.h"
 #include "rb_server_credentials.h"
 
-#include <ruby/ruby.h>
-
 #include <grpc/grpc.h>
 #include <grpc/grpc_security.h>
 
-- 
GitLab


From 74b41c0513c3c5fe8863342dd1097f6bf186896e Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 5 May 2016 07:38:03 -0700
Subject: [PATCH 380/525] fix C# distrib test after getting rid of
 grpc.native.csharp package

---
 test/distrib/csharp/DistribTest/DistribTest.csproj | 6 +++---
 test/distrib/csharp/DistribTest/packages.config    | 3 +--
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/test/distrib/csharp/DistribTest/DistribTest.csproj b/test/distrib/csharp/DistribTest/DistribTest.csproj
index 7605495f0f..1acb34d1b2 100644
--- a/test/distrib/csharp/DistribTest/DistribTest.csproj
+++ b/test/distrib/csharp/DistribTest/DistribTest.csproj
@@ -113,12 +113,12 @@
     <None Include="packages.config" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets" Condition="Exists('..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets')" />
+  <Import Project="..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
     </PropertyGroup>
-    <Error Condition="!Exists('..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\grpc.native.csharp.__GRPC_NUGET_VERSION__\build\portable-net45+netcore45+wpa81+wp8\grpc.native.csharp.targets'))" />
+    <Error Condition="!Exists('..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.__GRPC_NUGET_VERSION__\build\net45\Grpc.Core.targets'))" />
     <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
   </Target>
   <Import Project="..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
@@ -129,4 +129,4 @@
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
diff --git a/test/distrib/csharp/DistribTest/packages.config b/test/distrib/csharp/DistribTest/packages.config
index aca09f600c..69630193d0 100644
--- a/test/distrib/csharp/DistribTest/packages.config
+++ b/test/distrib/csharp/DistribTest/packages.config
@@ -6,11 +6,10 @@
   <package id="Grpc" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
   <package id="Grpc.Auth" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
   <package id="Grpc.Core" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
-  <package id="grpc.native.csharp" version="__GRPC_NUGET_VERSION__" targetFramework="net45" />
   <package id="Ix-Async" version="1.2.3" targetFramework="net45" />
   <package id="Microsoft.Bcl" version="1.1.10" targetFramework="net45" />
   <package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
   <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net45" />
   <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net45" />
   <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
-</packages>
\ No newline at end of file
+</packages>
-- 
GitLab


From 4ead664c33bc4c613fc7c33f73e7bcf08cc37428 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 5 May 2016 08:01:40 -0700
Subject: [PATCH 381/525] small addendum for python distribtests

---
 test/distrib/python/run_distrib_test.sh | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index e20767a885..6196e540c8 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -34,6 +34,7 @@ cd $(dirname $0)
 
 # Pick up the source dist archive whatever its version is
 BDIST_ARCHIVES=$EXTERNAL_GIT_ROOT/input_artifacts/grpcio-*.whl
+TOOLS_BDIST_ARCHIVES=$EXTERNAL_GIT_ROOT/input_artifacts/grpcio_tools-*.whl
 
 if [ ! -f ${SDIST_ARCHIVE} ]
 then
@@ -51,9 +52,12 @@ ${PIP} install --upgrade six pip
 
 # At least one of the bdist packages has to succeed (whichever one matches the
 # test machine, anyway).
-for bdist in ${BDIST_ARCHIVES}; do
+for bdist in ${BDIST_ARCHIVES} ${TOOLS_BDIST_ARCHIVES}; do
   ($PYTHON -m pip install $bdist) || true
 done
 
-$PYTHON distribtest.py
+# TODO(jtattermusch): add a .proto file to the distribtest, generate python
+# code from it and then use the generated code from distribtest.py
+$PYTHON -m grpc.protoc.compiler
 
+$PYTHON distribtest.py
-- 
GitLab


From 395bca9a61d7430fbd7f1d2da1888dbee39e234e Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Thu, 5 May 2016 10:25:34 -0700
Subject: [PATCH 382/525] Improved description of examples bifurcation

---
 examples/node/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/node/README.md b/examples/node/README.md
index 14d779416a..59fb4a17f5 100644
--- a/examples/node/README.md
+++ b/examples/node/README.md
@@ -22,7 +22,7 @@ INSTALL
 TRY IT!
 -------
 
-There are two variants of these examples: one with code dynamically generated at runtime using Protobuf.js and one with code statically generated using `protoc`. The examples behave identically, and either server can be used with either client.
+There are two ways to generate the code needed to work with protocol buffers in Node.js - one approach uses [Protobuf.js](https://github.com/dcodeIO/ProtoBuf.js/) to dynamically generate the code at runtime, the other uses code statically generated using the protocol buffer compiler `protoc`. The examples behave identically, and either server can be used with either client.
 
  - Run the server
 
-- 
GitLab


From 85a5ffa1a9000778f0c7eb0942c38c78938f55f3 Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Thu, 5 May 2016 10:30:10 -0700
Subject: [PATCH 383/525] Manifest changes

---
 src/python/grpcio_health_checking/MANIFEST.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/python/grpcio_health_checking/MANIFEST.in b/src/python/grpcio_health_checking/MANIFEST.in
index e8b4113adb..40c6ac8497 100644
--- a/src/python/grpcio_health_checking/MANIFEST.in
+++ b/src/python/grpcio_health_checking/MANIFEST.in
@@ -1,2 +1 @@
-graft grpc_health_checking
-include health_commands.py
+global-exclude *.pyc
-- 
GitLab


From f4fef8891163c22e024891c72856f08f3c47b335 Mon Sep 17 00:00:00 2001
From: Nicolas 'Pixel' Noble <nicolas@nobis-crew.org>
Date: Thu, 5 May 2016 10:48:25 -0700
Subject: [PATCH 384/525] Pinning the llvm repository on 3.8.

---
 tools/dockerfile/grpc_clang_format/Dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/dockerfile/grpc_clang_format/Dockerfile b/tools/dockerfile/grpc_clang_format/Dockerfile
index 41239e9c23..ab58017a02 100644
--- a/tools/dockerfile/grpc_clang_format/Dockerfile
+++ b/tools/dockerfile/grpc_clang_format/Dockerfile
@@ -30,8 +30,8 @@
 FROM ubuntu:wily
 RUN apt-get update
 RUN apt-get -y install wget
-RUN echo deb http://llvm.org/apt/wily/ llvm-toolchain-wily main >> /etc/apt/sources.list
-RUN echo deb-src http://llvm.org/apt/wily/ llvm-toolchain-wily main >> /etc/apt/sources.list
+RUN echo deb http://llvm.org/apt/wily/ llvm-toolchain-wily-3.8 main >> /etc/apt/sources.list
+RUN echo deb-src http://llvm.org/apt/wily/ llvm-toolchain-wily-3.8 main >> /etc/apt/sources.list
 RUN wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key| apt-key add -
 RUN apt-get update
 RUN apt-get -y install clang-format-3.8
-- 
GitLab


From 175dbbc6d7d47dc7f5c109e5b2c6b9ad99d1b2b7 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Thu, 5 May 2016 11:29:07 -0700
Subject: [PATCH 385/525] Use stream rpc to ensure all related requests go to a
 single server

---
 .../grpc/reflection/v1alpha/reflection.proto  | 141 ++++++++++--------
 1 file changed, 77 insertions(+), 64 deletions(-)

diff --git a/src/proto/grpc/reflection/v1alpha/reflection.proto b/src/proto/grpc/reflection/v1alpha/reflection.proto
index 4b13bd1e51..6e6a0b0864 100644
--- a/src/proto/grpc/reflection/v1alpha/reflection.proto
+++ b/src/proto/grpc/reflection/v1alpha/reflection.proto
@@ -34,85 +34,98 @@ syntax = "proto3";
 package grpc.reflection.v1alpha;
 
 service ServerReflection {
-  // List the full names of registered services.
-  rpc ListService(EmptyRequest) returns (ListServiceResponse) {
-  }
-
-  // Find a proto file by file name.
-  rpc GetFileByName(FileNameRequest) returns (FileDescriptorProtoResponse) {
-  }
-
-  // Find the proto file that declares the given fully-qualified symbol name.
-  rpc GetFileContainingSymbol(SymbolRequest)
-      returns (FileDescriptorProtoResponse) {
-  }
-
-  // Find the proto file which defines an extension extending the given message
-  // type with the given field number.
-  rpc GetFileContainingExtension(ExtensionRequest)
-      returns (FileDescriptorProtoResponse) {
-  }
-
-  // Finds the tag numbers used by all known extensions of extendee_type, and
-  // appends them to ExtensionNumberResponse in an undefined order.
-  // This method is best-effort: it's not guaranteed that the reflection service
-  // will implement this method, and it's not guaranteed that this method will
-  // provide all extensions. Returns StatusCode::UNIMPLEMENTED if it's not
-  // implemented.
-  rpc GetAllExtensionNumbers(TypeRequest) returns (ExtensionNumberResponse) {
-  }
-}
-
-// An empty message sent by the client when calling ListService method.
-message EmptyRequest {
-}
-
-// The filename sent by the client when calling GetFileByName method.
-message FileNameRequest {
-  // Name of the proto file.
-  string filename = 1;
+  // The reflection service is structured as a bidirectional stream, ensuring
+  // all related requests go to a single server.
+  rpc DescriptorDatabaseInfo(stream DescriptorDatabaseRequest)
+      returns (stream DescriptorDatabaseResponse);
 }
 
-// The symbol name sent by the client when calling GetFileContainingSymbol
-// method.
-message SymbolRequest {
-  // Fully-qualified symbol name (e.g. <package>.<service>[.<method>] or
-  // <package>.<type>).
-  string symbol = 1;
+// The message sent by the client when calling DescriptorDatabaseInfo method.
+message DescriptorDatabaseRequest {
+  string host = 1;
+  // To use reflection service, the client should set one of the following
+  // fields in message_request. The server distinguishes requests by their
+  // defined field and then handles them using corresponding methods.
+  oneof message_request {
+    // Find a proto file by the file name.
+    string file_by_filename = 3;
+
+    // Find the proto file that declares the given fully-qualified symbol name.
+    // This field should be a fully-qualified symbol name
+    // (e.g. <package>.<service>[.<method>] or <package>.<type>).
+    string file_containing_symbol = 4;
+
+    // Find the proto file which defines an extension extending the given
+    // message type with the given field number.
+    ExtensionRequest file_containing_extension = 5;
+
+    // Finds the tag numbers used by all known extensions of extendee_type, and
+    // appends them to ExtensionNumberResponse in an undefined order.
+    // Its corresponding method is best-effort: it's not guaranteed that the
+    // reflection service will implement this method, and it's not guaranteed
+    // that this method will provide all extensions. Returns
+    // StatusCode::UNIMPLEMENTED if it's not implemented.
+    // This field should be a fully-qualified type name. The format is
+    // <package>.<type>
+    string all_extension_numbers_of_type = 6;
+
+    // List the full names of registered services. The content will not be
+    // checked.
+    string list_services = 7;
+  }
 }
 
-// The type name and extension number sent by the client when calling
-// GetFileContainingExtension method.
+// The type name and extension number sent by the client when requesting
+// file_containing_extension.
 message ExtensionRequest {
   // Fully-qualified type name. The format should be <package>.<type>
   string containing_type = 1;
   int32 extension_number = 2;
 }
 
-// The type name sent by the client when calling GetAllExtensionNumbers method.
-message TypeRequest {
-  // Fully-qualified type name. The format should be <package>.<type>
-  string type = 1;
+// The message sent by the server to answer DescriptorDatabaseInfo method.
+message DescriptorDatabaseResponse {
+  string valid_host = 1;
+  DescriptorDatabaseRequest original_request = 2;
+  // The server set one of the following fields accroding to the message_request
+  // in the request.
+  oneof message_response {
+    // A serialized FileDescriptorProto message. We avoid taking a dependency on
+    // descriptor.proto, which uses proto2 only features, by making them opaque
+    // bytes instead. This message is used to answer file_by_filename,
+    // file_containing_symbol, file_containing_extension requests.
+    bytes file_descriptor_proto = 4;
+
+    // This message is used to answer all_extension_numbers_of_type requst.
+    ExtensionNumberResponse all_extension_numbers_response = 5;
+
+    // This message is used to answer list_services request.
+    ListServiceResponse list_services_response = 6;
+
+    // This message is used when an error occurs.
+    ErrorResponse error_response = 7;
+  }
+}
+
+// A list of extension numbers sent by the server answering
+// all_extension_numbers_of_type request.
+message ExtensionNumberResponse {
+  // Full name of the base type, including the package name. The format
+  // is <package>.<type>
+  string base_type_name = 1;
+  repeated int32 extension_number = 2;
 }
 
-// A list of service names sent by the server answering ListService method.
+// A list of service names sent by the server answering list_services request.
 message ListServiceResponse {
   // Full names of registered services, including package names. The format
   // is <package>.<service>
-  repeated string services = 1;
-}
-
-// A serialized FileDescriptorProto sent by the server answering
-// GetFileByName, GetFileContainingSymbol, GetFileContainingExtension methods.
-message FileDescriptorProtoResponse {
-  // Serialized FileDescriptorProto message. Some languages have limited support
-  // for working with descriptors. The can only obtain an opaque binary blob
-  // that contains serialized FileDescriptorProto message.
-  bytes file_descriptor_proto = 1;
+  repeated string service = 1;
 }
 
-// A list of extension numbers sent by the server answering
-// GetAllExtensionNumbers method.
-message ExtensionNumberResponse {
-  repeated int32 extension_number = 1;
+// The error code and error message sent by the server when an error occurs.
+message ErrorResponse {
+  // This field uses the error codes defined in grpc::StatusCode.
+  int32 error_code = 1;
+  string error_message = 2;
 }
-- 
GitLab


From 5deda3db97828454da88cb2e1d463c9e0dff7263 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 5 May 2016 12:34:19 -0700
Subject: [PATCH 386/525] Temporary fix for plugin initialization problem

---
 src/core/ext/client_config/resolver_registry.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/core/ext/client_config/resolver_registry.c b/src/core/ext/client_config/resolver_registry.c
index 07f29bcb27..e7a4abd568 100644
--- a/src/core/ext/client_config/resolver_registry.c
+++ b/src/core/ext/client_config/resolver_registry.c
@@ -47,7 +47,6 @@ static int g_number_of_resolvers = 0;
 static char *g_default_resolver_prefix;
 
 void grpc_resolver_registry_init(const char *default_resolver_prefix) {
-  g_number_of_resolvers = 0;
   g_default_resolver_prefix = gpr_strdup(default_resolver_prefix);
 }
 
@@ -57,6 +56,13 @@ void grpc_resolver_registry_shutdown(void) {
     grpc_resolver_factory_unref(g_all_of_the_resolvers[i]);
   }
   gpr_free(g_default_resolver_prefix);
+  // FIXME(ctiller): this should live in grpc_resolver_registry_init,
+  // however that would have the client_config plugin call this AFTER we start
+  // registering resolvers from third party plugins, and so they'd never show
+  // up.
+  // We likely need some kind of dependency system for plugins.... what form
+  // that takes is TBD.
+  g_number_of_resolvers = 0;
 }
 
 void grpc_register_resolver_type(grpc_resolver_factory *factory) {
-- 
GitLab


From f2f707ca5503249e637542d7b3015c3fef2e3023 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Thu, 5 May 2016 13:04:20 -0700
Subject: [PATCH 387/525] More clang-format fixes.

---
 src/core/lib/transport/metadata_batch.c  | 2 +-
 test/core/bad_client/bad_client.h        | 4 ++--
 test/core/end2end/tests/large_metadata.c | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/core/lib/transport/metadata_batch.c b/src/core/lib/transport/metadata_batch.c
index c0afc715bc..e4398abeb7 100644
--- a/src/core/lib/transport/metadata_batch.c
+++ b/src/core/lib/transport/metadata_batch.c
@@ -195,7 +195,7 @@ int grpc_metadata_batch_is_empty(grpc_metadata_batch *batch) {
 
 size_t grpc_metadata_batch_size(grpc_metadata_batch *batch) {
   size_t size = 0;
-  for (grpc_linked_mdelem* elem = batch->list.head; elem != NULL;
+  for (grpc_linked_mdelem *elem = batch->list.head; elem != NULL;
        elem = elem->next) {
     size += GRPC_MDELEM_LENGTH(elem->md);
   }
diff --git a/test/core/bad_client/bad_client.h b/test/core/bad_client/bad_client.h
index ecd6721a78..c8b2a4122f 100644
--- a/test/core/bad_client/bad_client.h
+++ b/test/core/bad_client/bad_client.h
@@ -60,8 +60,8 @@ void grpc_run_bad_client_test(
     const char *client_payload, size_t client_payload_length, uint32_t flags);
 
 #define GRPC_RUN_BAD_CLIENT_TEST(server_validator, client_validator, payload, \
-                                 flags) \
-  grpc_run_bad_client_test(server_validator, client_validator, payload, \
+                                 flags)                                       \
+  grpc_run_bad_client_test(server_validator, client_validator, payload,       \
                            sizeof(payload) - 1, flags)
 
 #endif /* GRPC_TEST_CORE_BAD_CLIENT_BAD_CLIENT_H */
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c
index dd29552b97..ae1f68a2b4 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.c
@@ -109,7 +109,7 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
   const size_t large_size = 64 * 1024;
   grpc_arg arg = {GRPC_ARG_INTEGER,
                   GRPC_ARG_MAX_METADATA_SIZE,
-                  {.integer=(int)large_size + 1024}};
+                  {.integer = (int)large_size + 1024}};
   grpc_channel_args args = {1, &arg};
   grpc_end2end_test_fixture f =
       begin_test(config, "test_request_with_large_metadata", &args, &args);
-- 
GitLab


From 7809f2b78a5abf3ecb2ade16f3be907388c559e8 Mon Sep 17 00:00:00 2001
From: Nathaniel Manista <nathaniel@google.com>
Date: Thu, 5 May 2016 20:38:42 +0000
Subject: [PATCH 388/525] Raise parallelism in grpc._cython._channel_test

The underlying bug in Core that this test was written to isolate was
fixed weeks ago.
---
 src/python/grpcio/tests/unit/_cython/_channel_test.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/python/grpcio/tests/unit/_cython/_channel_test.py b/src/python/grpcio/tests/unit/_cython/_channel_test.py
index b414f8e6f6..931cd9083e 100644
--- a/src/python/grpcio/tests/unit/_cython/_channel_test.py
+++ b/src/python/grpcio/tests/unit/_cython/_channel_test.py
@@ -33,8 +33,7 @@ import unittest
 
 from grpc._cython import cygrpc
 
-# TODO(nathaniel): This should be at least one hundred. Why not one thousand?
-_PARALLELISM = 4
+from tests.unit.framework.common import test_constants
 
 
 def _channel_and_completion_queue():
@@ -61,7 +60,7 @@ def _create_loop_destroy():
 def _in_parallel(behavior, arguments):
   threads = tuple(
       threading.Thread(target=behavior, args=arguments)
-      for _ in range(_PARALLELISM))
+      for _ in range(test_constants.PARALLELISM))
   for thread in threads:
     thread.start()
   for thread in threads:
-- 
GitLab


From ad0f7922540c7d1edabd3fbd03a8b98131953fc2 Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Wed, 4 May 2016 19:49:31 -0700
Subject: [PATCH 389/525] Interop client that is resilient to server restarts

---
 .../client_config/subchannel_call_holder.c    |   1 +
 test/cpp/interop/client.cc                    |  13 +-
 test/cpp/interop/interop_client.cc            | 336 ++++++++++++++----
 test/cpp/interop/interop_client.h             |  62 ++--
 test/cpp/interop/stress_interop_client.cc     |   5 +-
 test/cpp/interop/stress_interop_client.h      |   3 +-
 test/cpp/interop/stress_test.cc               |  12 +-
 7 files changed, 330 insertions(+), 102 deletions(-)

diff --git a/src/core/ext/client_config/subchannel_call_holder.c b/src/core/ext/client_config/subchannel_call_holder.c
index 9918fbdcb4..91fa917661 100644
--- a/src/core/ext/client_config/subchannel_call_holder.c
+++ b/src/core/ext/client_config/subchannel_call_holder.c
@@ -174,6 +174,7 @@ static void subchannel_ready(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
              GRPC_SUBCHANNEL_CALL_HOLDER_PICKING_SUBCHANNEL);
   holder->creation_phase = GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING;
   if (holder->connected_subchannel == NULL) {
+    gpr_atm_no_barrier_store(&holder->subchannel_call, 1);
     fail_locked(exec_ctx, holder);
   } else if (1 == gpr_atm_acq_load(&holder->subchannel_call)) {
     /* already cancelled before subchannel became ready */
diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc
index 9af6a88044..7727824979 100644
--- a/test/cpp/interop/client.cc
+++ b/test/cpp/interop/client.cc
@@ -81,6 +81,14 @@ DEFINE_string(default_service_account, "",
 DEFINE_string(service_account_key_file, "",
               "Path to service account json key file.");
 DEFINE_string(oauth_scope, "", "Scope for OAuth tokens.");
+DEFINE_bool(do_not_abort_on_transient_failures, false,
+            "If set to 'true', abort() is not called in case of transient "
+            "failures (i.e failures that are temporary and will likely go away "
+            "on retrying; like a temporary connection failure) and an error "
+            "message is printed instead. Note that this flag just controls "
+            "whether abort() is called or not. It does not control whether the "
+            "test is retried in case of transient failures (and currently the "
+            "interop tests are not retried even if this flag is set to true)");
 
 using grpc::testing::CreateChannelForTestCase;
 using grpc::testing::GetServiceAccountJsonKey;
@@ -89,8 +97,9 @@ int main(int argc, char** argv) {
   grpc::testing::InitTest(&argc, &argv, true);
   gpr_log(GPR_INFO, "Testing these cases: %s", FLAGS_test_case.c_str());
   int ret = 0;
-  grpc::testing::InteropClient client(
-      CreateChannelForTestCase(FLAGS_test_case));
+  grpc::testing::InteropClient client(CreateChannelForTestCase(FLAGS_test_case),
+                                      true,
+                                      FLAGS_do_not_abort_on_transient_failures);
   if (FLAGS_test_case == "empty_unary") {
     client.DoEmpty();
   } else if (FLAGS_test_case == "large_unary") {
diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc
index 22293d211f..e5853b40f8 100644
--- a/test/cpp/interop/interop_client.cc
+++ b/test/cpp/interop/interop_client.cc
@@ -134,23 +134,43 @@ void InteropClient::Reset(std::shared_ptr<Channel> channel) {
   serviceStub_.Reset(channel);
 }
 
-InteropClient::InteropClient(std::shared_ptr<Channel> channel)
-    : serviceStub_(channel, true) {}
-
 InteropClient::InteropClient(std::shared_ptr<Channel> channel,
-                             bool new_stub_every_test_case)
-    : serviceStub_(channel, new_stub_every_test_case) {}
+                             bool new_stub_every_test_case,
+                             bool do_not_abort_on_transient_failures)
+    : serviceStub_(channel, new_stub_every_test_case),
+      do_not_abort_on_transient_failures_(do_not_abort_on_transient_failures) {}
 
-void InteropClient::AssertOkOrPrintErrorStatus(const Status& s) {
+bool InteropClient::AssertStatusOk(const Status& s) {
   if (s.ok()) {
-    return;
+    return true;
   }
-  gpr_log(GPR_ERROR, "Error status code: %d, message: %s", s.error_code(),
-          s.error_message().c_str());
-  GPR_ASSERT(0);
+
+  // Note: At this point, s.error_code is definitely not StatusCode::OK (we
+  // already checked for s.ok() above). So, the following will call abort()
+  // (unless s.error_code() corresponds to a transient failure and
+  // 'do_not_abort_on_transient_failures' is true)
+  return AssertStatusCode(s, StatusCode::OK);
 }
 
-void InteropClient::DoEmpty() {
+bool InteropClient::AssertStatusCode(const Status& s,
+                                            StatusCode expected_code) {
+  if (s.error_code() == expected_code) {
+    return true;
+  }
+
+  gpr_log(GPR_ERROR, "Error status code: %d (expected: %d), message: %s",
+          s.error_code(), expected_code, s.error_message().c_str());
+
+  // In case of transient transient/retryable failures (like a broken
+  // connection) we may or may not abort (see TransientFailureOrAbort())
+  if (s.error_code() == grpc::StatusCode::UNAVAILABLE) {
+    return TransientFailureOrAbort();
+  }
+
+  abort();
+}
+
+bool InteropClient::DoEmpty() {
   gpr_log(GPR_DEBUG, "Sending an empty rpc...");
 
   Empty request = Empty::default_instance();
@@ -158,17 +178,21 @@ void InteropClient::DoEmpty() {
   ClientContext context;
 
   Status s = serviceStub_.Get()->EmptyCall(&context, request, &response);
-  AssertOkOrPrintErrorStatus(s);
+
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
 
   gpr_log(GPR_DEBUG, "Empty rpc done.");
+  return true;
 }
 
-void InteropClient::PerformLargeUnary(SimpleRequest* request,
+bool InteropClient::PerformLargeUnary(SimpleRequest* request,
                                       SimpleResponse* response) {
-  PerformLargeUnary(request, response, NoopChecks);
+  return PerformLargeUnary(request, response, NoopChecks);
 }
 
-void InteropClient::PerformLargeUnary(SimpleRequest* request,
+bool InteropClient::PerformLargeUnary(SimpleRequest* request,
                                       SimpleResponse* response,
                                       CheckerFn custom_checks_fn) {
   ClientContext context;
@@ -180,7 +204,9 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request,
   request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize);
 
   Status s = serviceStub_.Get()->UnaryCall(&context, *request, response);
-  AssertOkOrPrintErrorStatus(s);
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
 
   custom_checks_fn(inspector, request, response);
 
@@ -203,9 +229,11 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request,
     default:
       GPR_ASSERT(false);
   }
+
+  return true;
 }
 
-void InteropClient::DoComputeEngineCreds(
+bool InteropClient::DoComputeEngineCreds(
     const grpc::string& default_service_account,
     const grpc::string& oauth_scope) {
   gpr_log(GPR_DEBUG,
@@ -215,7 +243,11 @@ void InteropClient::DoComputeEngineCreds(
   request.set_fill_username(true);
   request.set_fill_oauth_scope(true);
   request.set_response_type(PayloadType::COMPRESSABLE);
-  PerformLargeUnary(&request, &response);
+
+  if (!PerformLargeUnary(&request, &response)) {
+    return false;
+  }
+
   gpr_log(GPR_DEBUG, "Got username %s", response.username().c_str());
   gpr_log(GPR_DEBUG, "Got oauth_scope %s", response.oauth_scope().c_str());
   GPR_ASSERT(!response.username().empty());
@@ -224,9 +256,10 @@ void InteropClient::DoComputeEngineCreds(
   const char* oauth_scope_str = response.oauth_scope().c_str();
   GPR_ASSERT(oauth_scope.find(oauth_scope_str) != grpc::string::npos);
   gpr_log(GPR_DEBUG, "Large unary with compute engine creds done.");
+  return true;
 }
 
-void InteropClient::DoOauth2AuthToken(const grpc::string& username,
+bool InteropClient::DoOauth2AuthToken(const grpc::string& username,
                                       const grpc::string& oauth_scope) {
   gpr_log(GPR_DEBUG,
           "Sending a unary rpc with raw oauth2 access token credentials ...");
@@ -239,16 +272,20 @@ void InteropClient::DoOauth2AuthToken(const grpc::string& username,
 
   Status s = serviceStub_.Get()->UnaryCall(&context, request, &response);
 
-  AssertOkOrPrintErrorStatus(s);
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
+
   GPR_ASSERT(!response.username().empty());
   GPR_ASSERT(!response.oauth_scope().empty());
   GPR_ASSERT(username == response.username());
   const char* oauth_scope_str = response.oauth_scope().c_str();
   GPR_ASSERT(oauth_scope.find(oauth_scope_str) != grpc::string::npos);
   gpr_log(GPR_DEBUG, "Unary with oauth2 access token credentials done.");
+  return true;
 }
 
-void InteropClient::DoPerRpcCreds(const grpc::string& json_key) {
+bool InteropClient::DoPerRpcCreds(const grpc::string& json_key) {
   gpr_log(GPR_DEBUG, "Sending a unary rpc with per-rpc JWT access token ...");
   SimpleRequest request;
   SimpleResponse response;
@@ -263,35 +300,47 @@ void InteropClient::DoPerRpcCreds(const grpc::string& json_key) {
 
   Status s = serviceStub_.Get()->UnaryCall(&context, request, &response);
 
-  AssertOkOrPrintErrorStatus(s);
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
+
   GPR_ASSERT(!response.username().empty());
   GPR_ASSERT(json_key.find(response.username()) != grpc::string::npos);
   gpr_log(GPR_DEBUG, "Unary with per-rpc JWT access token done.");
+  return true;
 }
 
-void InteropClient::DoJwtTokenCreds(const grpc::string& username) {
+bool InteropClient::DoJwtTokenCreds(const grpc::string& username) {
   gpr_log(GPR_DEBUG,
           "Sending a large unary rpc with JWT token credentials ...");
   SimpleRequest request;
   SimpleResponse response;
   request.set_fill_username(true);
   request.set_response_type(PayloadType::COMPRESSABLE);
-  PerformLargeUnary(&request, &response);
+
+  if (!PerformLargeUnary(&request, &response)) {
+    return false;
+  }
+
   GPR_ASSERT(!response.username().empty());
   GPR_ASSERT(username.find(response.username()) != grpc::string::npos);
   gpr_log(GPR_DEBUG, "Large unary with JWT token creds done.");
+  return true;
 }
 
-void InteropClient::DoLargeUnary() {
+bool InteropClient::DoLargeUnary() {
   gpr_log(GPR_DEBUG, "Sending a large unary rpc...");
   SimpleRequest request;
   SimpleResponse response;
   request.set_response_type(PayloadType::COMPRESSABLE);
-  PerformLargeUnary(&request, &response);
+  if (!PerformLargeUnary(&request, &response)) {
+    return false;
+  }
   gpr_log(GPR_DEBUG, "Large unary done.");
+  return true;
 }
 
-void InteropClient::DoLargeCompressedUnary() {
+bool InteropClient::DoLargeCompressedUnary() {
   const CompressionType compression_types[] = {NONE, GZIP, DEFLATE};
   const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM};
   for (size_t i = 0; i < GPR_ARRAY_SIZE(payload_types); i++) {
@@ -307,14 +356,32 @@ void InteropClient::DoLargeCompressedUnary() {
       SimpleResponse response;
       request.set_response_type(payload_types[i]);
       request.set_response_compression(compression_types[j]);
-      PerformLargeUnary(&request, &response, CompressionChecks);
+
+      if (!PerformLargeUnary(&request, &response, CompressionChecks)) {
+        gpr_log(GPR_ERROR, "Large compressed unary failed %s", log_suffix);
+        gpr_free(log_suffix);
+        return false;
+      }
+
       gpr_log(GPR_DEBUG, "Large compressed unary done %s.", log_suffix);
       gpr_free(log_suffix);
     }
   }
+
+  return true;
 }
 
-void InteropClient::DoRequestStreaming() {
+// Either abort() (unless do_not_abort_on_transient_failures_ is true) or return
+// false
+bool InteropClient::TransientFailureOrAbort() {
+  if (do_not_abort_on_transient_failures_) {
+    return false;
+  }
+
+  abort();
+}
+
+bool InteropClient::DoRequestStreaming() {
   gpr_log(GPR_DEBUG, "Sending request steaming rpc ...");
 
   ClientContext context;
@@ -328,18 +395,24 @@ void InteropClient::DoRequestStreaming() {
   for (unsigned int i = 0; i < request_stream_sizes.size(); ++i) {
     Payload* payload = request.mutable_payload();
     payload->set_body(grpc::string(request_stream_sizes[i], '\0'));
-    GPR_ASSERT(stream->Write(request));
+    if (!stream->Write(request)) {
+      gpr_log(GPR_ERROR, "DoRequestStreaming(): stream->Write() failed");
+      return TransientFailureOrAbort();
+    }
     aggregated_payload_size += request_stream_sizes[i];
   }
   stream->WritesDone();
+
   Status s = stream->Finish();
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
 
   GPR_ASSERT(response.aggregated_payload_size() == aggregated_payload_size);
-  AssertOkOrPrintErrorStatus(s);
-  gpr_log(GPR_DEBUG, "Request streaming done.");
+  return true;
 }
 
-void InteropClient::DoResponseStreaming() {
+bool InteropClient::DoResponseStreaming() {
   gpr_log(GPR_DEBUG, "Receiving response steaming rpc ...");
 
   ClientContext context;
@@ -358,13 +431,27 @@ void InteropClient::DoResponseStreaming() {
                grpc::string(response_stream_sizes[i], '\0'));
     ++i;
   }
-  GPR_ASSERT(response_stream_sizes.size() == i);
+
+  if (i < response_stream_sizes.size()) {
+    // stream->Read() failed before reading all the expected messages. This is
+    // most likely due to connection failure.
+    gpr_log(GPR_ERROR,
+            "DoResponseStreaming(): Read fewer streams (%d) than "
+            "response_stream_sizes.size() (%d)",
+            i, response_stream_sizes.size());
+    return TransientFailureOrAbort();
+  }
+
   Status s = stream->Finish();
-  AssertOkOrPrintErrorStatus(s);
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
+
   gpr_log(GPR_DEBUG, "Response streaming done.");
+  return true;
 }
 
-void InteropClient::DoResponseCompressedStreaming() {
+bool InteropClient::DoResponseCompressedStreaming() {
   const CompressionType compression_types[] = {NONE, GZIP, DEFLATE};
   const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM};
   for (size_t i = 0; i < GPR_ARRAY_SIZE(payload_types); i++) {
@@ -432,17 +519,31 @@ void InteropClient::DoResponseCompressedStreaming() {
         ++k;
       }
 
-      GPR_ASSERT(response_stream_sizes.size() == k);
-      Status s = stream->Finish();
-
-      AssertOkOrPrintErrorStatus(s);
       gpr_log(GPR_DEBUG, "Response streaming done %s.", log_suffix);
       gpr_free(log_suffix);
+
+      if (k < response_stream_sizes.size()) {
+        // stream->Read() failed before reading all the expected messages. This
+        // is most likely due to a connection failure.
+        gpr_log(GPR_ERROR,
+                "DoResponseCompressedStreaming(): Responses read (k=%d) is "
+                "less than the expected messages (i.e "
+                "response_stream_sizes.size() (%d)). (i=%d, j=%d)",
+                k, response_stream_sizes.size(), i, j);
+        return TransientFailureOrAbort();
+      }
+
+      Status s = stream->Finish();
+      if (!AssertStatusOk(s)) {
+        return false;
+      }
     }
   }
+
+  return true;
 }
 
-void InteropClient::DoResponseStreamingWithSlowConsumer() {
+bool InteropClient::DoResponseStreamingWithSlowConsumer() {
   gpr_log(GPR_DEBUG, "Receiving response steaming rpc with slow consumer ...");
 
   ClientContext context;
@@ -464,14 +565,26 @@ void InteropClient::DoResponseStreamingWithSlowConsumer() {
     usleep(kReceiveDelayMilliSeconds * 1000);
     ++i;
   }
-  GPR_ASSERT(kNumResponseMessages == i);
+
+  if (i < kNumResponseMessages) {
+    gpr_log(GPR_ERROR,
+            "DoResponseStreamingWithSlowConsumer(): Responses read (i=%d) is "
+            "less than the expected messages (i.e kNumResponseMessages = %d)",
+            i, kNumResponseMessages);
+
+    return TransientFailureOrAbort();
+  }
+
   Status s = stream->Finish();
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
 
-  AssertOkOrPrintErrorStatus(s);
   gpr_log(GPR_DEBUG, "Response streaming done.");
+  return true;
 }
 
-void InteropClient::DoHalfDuplex() {
+bool InteropClient::DoHalfDuplex() {
   gpr_log(GPR_DEBUG, "Sending half-duplex streaming rpc ...");
 
   ClientContext context;
@@ -483,7 +596,11 @@ void InteropClient::DoHalfDuplex() {
   ResponseParameters* response_parameter = request.add_response_parameters();
   for (unsigned int i = 0; i < response_stream_sizes.size(); ++i) {
     response_parameter->set_size(response_stream_sizes[i]);
-    GPR_ASSERT(stream->Write(request));
+
+    if (!stream->Write(request)) {
+      gpr_log(GPR_ERROR, "DoHalfDuplex(): stream->Write() failed. i=%d", i);
+      return TransientFailureOrAbort();
+    }
   }
   stream->WritesDone();
 
@@ -494,13 +611,27 @@ void InteropClient::DoHalfDuplex() {
                grpc::string(response_stream_sizes[i], '\0'));
     ++i;
   }
-  GPR_ASSERT(response_stream_sizes.size() == i);
+
+  if (i < response_stream_sizes.size()) {
+    // stream->Read() failed before reading all the expected messages. This is
+    // most likely due to a connection failure
+    gpr_log(GPR_ERROR,
+            "DoHalfDuplex(): Responses read (i=%d) are less than the expected "
+            "number of messages response_stream_sizes.size() (%d)",
+            i, response_stream_sizes.size());
+    return TransientFailureOrAbort();
+  }
+
   Status s = stream->Finish();
-  AssertOkOrPrintErrorStatus(s);
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
+
   gpr_log(GPR_DEBUG, "Half-duplex streaming rpc done.");
+  return true;
 }
 
-void InteropClient::DoPingPong() {
+bool InteropClient::DoPingPong() {
   gpr_log(GPR_DEBUG, "Sending Ping Pong streaming rpc ...");
 
   ClientContext context;
@@ -513,23 +644,39 @@ void InteropClient::DoPingPong() {
   ResponseParameters* response_parameter = request.add_response_parameters();
   Payload* payload = request.mutable_payload();
   StreamingOutputCallResponse response;
+
   for (unsigned int i = 0; i < request_stream_sizes.size(); ++i) {
     response_parameter->set_size(response_stream_sizes[i]);
     payload->set_body(grpc::string(request_stream_sizes[i], '\0'));
-    GPR_ASSERT(stream->Write(request));
-    GPR_ASSERT(stream->Read(&response));
+
+    if (!stream->Write(request)) {
+      gpr_log(GPR_ERROR, "DoPingPong(): stream->Write() failed. i: %d", i);
+      return TransientFailureOrAbort();
+    }
+
+    if (!stream->Read(&response)) {
+      gpr_log(GPR_ERROR, "DoPingPong(): stream->Read() failed. i:%d", i);
+      return TransientFailureOrAbort();
+    }
+
     GPR_ASSERT(response.payload().body() ==
                grpc::string(response_stream_sizes[i], '\0'));
   }
 
   stream->WritesDone();
+
   GPR_ASSERT(!stream->Read(&response));
+
   Status s = stream->Finish();
-  AssertOkOrPrintErrorStatus(s);
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
+
   gpr_log(GPR_DEBUG, "Ping pong streaming done.");
+  return true;
 }
 
-void InteropClient::DoCancelAfterBegin() {
+bool InteropClient::DoCancelAfterBegin() {
   gpr_log(GPR_DEBUG, "Sending request steaming rpc ...");
 
   ClientContext context;
@@ -542,11 +689,16 @@ void InteropClient::DoCancelAfterBegin() {
   gpr_log(GPR_DEBUG, "Trying to cancel...");
   context.TryCancel();
   Status s = stream->Finish();
-  GPR_ASSERT(s.error_code() == StatusCode::CANCELLED);
+
+  if (!AssertStatusCode(s, StatusCode::CANCELLED)) {
+    return false;
+  }
+
   gpr_log(GPR_DEBUG, "Canceling streaming done.");
+  return true;
 }
 
-void InteropClient::DoCancelAfterFirstResponse() {
+bool InteropClient::DoCancelAfterFirstResponse() {
   gpr_log(GPR_DEBUG, "Sending Ping Pong streaming rpc ...");
 
   ClientContext context;
@@ -560,17 +712,27 @@ void InteropClient::DoCancelAfterFirstResponse() {
   response_parameter->set_size(31415);
   request.mutable_payload()->set_body(grpc::string(27182, '\0'));
   StreamingOutputCallResponse response;
-  GPR_ASSERT(stream->Write(request));
-  GPR_ASSERT(stream->Read(&response));
+
+  if (!stream->Write(request)) {
+    gpr_log(GPR_ERROR, "DoCancelAfterFirstResponse(): stream->Write() failed");
+    return TransientFailureOrAbort();
+  }
+
+  if (!stream->Read(&response)) {
+    gpr_log(GPR_ERROR, "DoCancelAfterFirstResponse(): stream->Read failed");
+    return TransientFailureOrAbort();
+  }
   GPR_ASSERT(response.payload().body() == grpc::string(31415, '\0'));
+
   gpr_log(GPR_DEBUG, "Trying to cancel...");
   context.TryCancel();
 
   Status s = stream->Finish();
   gpr_log(GPR_DEBUG, "Canceling pingpong streaming done.");
+  return true;
 }
 
-void InteropClient::DoTimeoutOnSleepingServer() {
+bool InteropClient::DoTimeoutOnSleepingServer() {
   gpr_log(GPR_DEBUG,
           "Sending Ping Pong streaming rpc with a short deadline...");
 
@@ -584,14 +746,23 @@ void InteropClient::DoTimeoutOnSleepingServer() {
 
   StreamingOutputCallRequest request;
   request.mutable_payload()->set_body(grpc::string(27182, '\0'));
-  stream->Write(request);
+
+  if (!stream->Write(request)) {
+    gpr_log(GPR_ERROR, "DoTimeoutOnSleepingServer(): stream->Write() failed");
+    return TransientFailureOrAbort();
+  }
 
   Status s = stream->Finish();
-  GPR_ASSERT(s.error_code() == StatusCode::DEADLINE_EXCEEDED);
+
+  if (!AssertStatusCode(s, StatusCode::DEADLINE_EXCEEDED)) {
+    return false;
+  }
+
   gpr_log(GPR_DEBUG, "Pingpong streaming timeout done.");
+  return true;
 }
 
-void InteropClient::DoEmptyStream() {
+bool InteropClient::DoEmptyStream() {
   gpr_log(GPR_DEBUG, "Starting empty_stream.");
 
   ClientContext context;
@@ -601,12 +772,17 @@ void InteropClient::DoEmptyStream() {
   stream->WritesDone();
   StreamingOutputCallResponse response;
   GPR_ASSERT(stream->Read(&response) == false);
+
   Status s = stream->Finish();
-  AssertOkOrPrintErrorStatus(s);
+  if (!AssertStatusOk(s)) {
+    return false;
+  }
+
   gpr_log(GPR_DEBUG, "empty_stream done.");
+  return true;
 }
 
-void InteropClient::DoStatusWithMessage() {
+bool InteropClient::DoStatusWithMessage() {
   gpr_log(GPR_DEBUG,
           "Sending RPC with a request for status code 2 and message");
 
@@ -620,12 +796,16 @@ void InteropClient::DoStatusWithMessage() {
 
   Status s = serviceStub_.Get()->UnaryCall(&context, request, &response);
 
-  GPR_ASSERT(s.error_code() == grpc::StatusCode::UNKNOWN);
+  if (!AssertStatusCode(s, grpc::StatusCode::UNKNOWN)) {
+    return false;
+  }
+
   GPR_ASSERT(s.error_message() == test_msg);
   gpr_log(GPR_DEBUG, "Done testing Status and Message");
+  return true;
 }
 
-void InteropClient::DoCustomMetadata() {
+bool InteropClient::DoCustomMetadata() {
   const grpc::string kEchoInitialMetadataKey("x-grpc-test-echo-initial");
   const grpc::string kInitialMetadataValue("test_initial_metadata_value");
   const grpc::string kEchoTrailingBinMetadataKey(
@@ -645,7 +825,10 @@ void InteropClient::DoCustomMetadata() {
     request.mutable_payload()->set_body(payload.c_str(), kLargeRequestSize);
 
     Status s = serviceStub_.Get()->UnaryCall(&context, request, &response);
-    AssertOkOrPrintErrorStatus(s);
+    if (!AssertStatusOk(s)) {
+      return false;
+    }
+
     const auto& server_initial_metadata = context.GetServerInitialMetadata();
     auto iter = server_initial_metadata.find(kEchoInitialMetadataKey);
     GPR_ASSERT(iter != server_initial_metadata.end());
@@ -675,14 +858,29 @@ void InteropClient::DoCustomMetadata() {
     grpc::string payload(kLargeRequestSize, '\0');
     request.mutable_payload()->set_body(payload.c_str(), kLargeRequestSize);
     StreamingOutputCallResponse response;
-    GPR_ASSERT(stream->Write(request));
+
+    if (!stream->Write(request)) {
+      gpr_log(GPR_ERROR, "DoCustomMetadata(): stream->Write() failed");
+      return TransientFailureOrAbort();
+    }
+
     stream->WritesDone();
-    GPR_ASSERT(stream->Read(&response));
+
+    if (!stream->Read(&response)) {
+      gpr_log(GPR_ERROR, "DoCustomMetadata(): stream->Read() failed");
+      return TransientFailureOrAbort();
+    }
+
     GPR_ASSERT(response.payload().body() ==
                grpc::string(kLargeResponseSize, '\0'));
+
     GPR_ASSERT(!stream->Read(&response));
+
     Status s = stream->Finish();
-    AssertOkOrPrintErrorStatus(s);
+    if (!AssertStatusOk(s)) {
+      return false;
+    }
+
     const auto& server_initial_metadata = context.GetServerInitialMetadata();
     auto iter = server_initial_metadata.find(kEchoInitialMetadataKey);
     GPR_ASSERT(iter != server_initial_metadata.end());
@@ -695,6 +893,8 @@ void InteropClient::DoCustomMetadata() {
 
     gpr_log(GPR_DEBUG, "Done testing stream with custom metadata");
   }
+
+  return true;
 }
 
 }  // namespace testing
diff --git a/test/cpp/interop/interop_client.h b/test/cpp/interop/interop_client.h
index a3794fd93f..ae75762bb8 100644
--- a/test/cpp/interop/interop_client.h
+++ b/test/cpp/interop/interop_client.h
@@ -51,41 +51,42 @@ using CheckerFn =
 
 class InteropClient {
  public:
-  explicit InteropClient(std::shared_ptr<Channel> channel);
-  explicit InteropClient(
-      std::shared_ptr<Channel> channel,
-      bool new_stub_every_test_case);  // If new_stub_every_test_case is true,
-                                       // a new TestService::Stub object is
-                                       // created for every test case below
+  /// If new_stub_every_test_case is true, a new TestService::Stub object is
+  /// created for every test case
+  /// If do_not_abort_on_transient_failures is true, abort() is not called in
+  /// case of transient failures (like connection failures)
+  explicit InteropClient(std::shared_ptr<Channel> channel,
+                         bool new_stub_every_test_case,
+                         bool do_not_abort_on_transient_failures);
   ~InteropClient() {}
 
   void Reset(std::shared_ptr<Channel> channel);
 
-  void DoEmpty();
-  void DoLargeUnary();
-  void DoLargeCompressedUnary();
-  void DoPingPong();
-  void DoHalfDuplex();
-  void DoRequestStreaming();
-  void DoResponseStreaming();
-  void DoResponseCompressedStreaming();
-  void DoResponseStreamingWithSlowConsumer();
-  void DoCancelAfterBegin();
-  void DoCancelAfterFirstResponse();
-  void DoTimeoutOnSleepingServer();
-  void DoEmptyStream();
-  void DoStatusWithMessage();
-  void DoCustomMetadata();
+  bool DoEmpty();
+  bool DoLargeUnary();
+  bool DoLargeCompressedUnary();
+  bool DoPingPong();
+  bool DoHalfDuplex();
+  bool DoRequestStreaming();
+  bool DoResponseStreaming();
+  bool DoResponseCompressedStreaming();
+  bool DoResponseStreamingWithSlowConsumer();
+  bool DoCancelAfterBegin();
+  bool DoCancelAfterFirstResponse();
+  bool DoTimeoutOnSleepingServer();
+  bool DoEmptyStream();
+  bool DoStatusWithMessage();
+  bool DoCustomMetadata();
   // Auth tests.
   // username is a string containing the user email
-  void DoJwtTokenCreds(const grpc::string& username);
-  void DoComputeEngineCreds(const grpc::string& default_service_account,
+  bool DoJwtTokenCreds(const grpc::string& username);
+  bool DoComputeEngineCreds(const grpc::string& default_service_account,
                             const grpc::string& oauth_scope);
   // username the GCE default service account email
-  void DoOauth2AuthToken(const grpc::string& username,
+  bool DoOauth2AuthToken(const grpc::string& username,
                          const grpc::string& oauth_scope);
   // username is a string containing the user email
-  void DoPerRpcCreds(const grpc::string& json_key);
+  bool DoPerRpcCreds(const grpc::string& json_key);
 
  private:
   class ServiceStub {
@@ -105,13 +106,18 @@ class InteropClient {
                                 // Get() call
   };
 
-  void PerformLargeUnary(SimpleRequest* request, SimpleResponse* response);
+  bool PerformLargeUnary(SimpleRequest* request, SimpleResponse* response);
 
   /// Run \a custom_check_fn as an additional check.
-  void PerformLargeUnary(SimpleRequest* request, SimpleResponse* response,
+  bool PerformLargeUnary(SimpleRequest* request, SimpleResponse* response,
                          CheckerFn custom_checks_fn);
-  void AssertOkOrPrintErrorStatus(const Status& s);
+  bool AssertStatusOk(const Status& s);
+  bool AssertStatusCode(const Status& s, StatusCode expected_code);
+  bool TransientFailureOrAbort();
   ServiceStub serviceStub_;
+
+  /// If true, abort() is not called for transient failures
+  bool do_not_abort_on_transient_failures_;
 };
 
 }  // namespace testing
diff --git a/test/cpp/interop/stress_interop_client.cc b/test/cpp/interop/stress_interop_client.cc
index f287a5aa3b..31f5a424a0 100644
--- a/test/cpp/interop/stress_interop_client.cc
+++ b/test/cpp/interop/stress_interop_client.cc
@@ -84,11 +84,12 @@ StressTestInteropClient::StressTestInteropClient(
     int test_id, const grpc::string& server_address,
     std::shared_ptr<Channel> channel,
     const WeightedRandomTestSelector& test_selector, long test_duration_secs,
-    long sleep_duration_ms)
+    long sleep_duration_ms, bool do_not_abort_on_transient_failures)
     : test_id_(test_id),
       server_address_(server_address),
       channel_(channel),
-      interop_client_(new InteropClient(channel, false)),
+      interop_client_(new InteropClient(channel, false,
+                                        do_not_abort_on_transient_failures)),
       test_selector_(test_selector),
       test_duration_secs_(test_duration_secs),
       sleep_duration_ms_(sleep_duration_ms) {}
diff --git a/test/cpp/interop/stress_interop_client.h b/test/cpp/interop/stress_interop_client.h
index cb0cd98821..c41ac6afc7 100644
--- a/test/cpp/interop/stress_interop_client.h
+++ b/test/cpp/interop/stress_interop_client.h
@@ -87,7 +87,8 @@ class StressTestInteropClient {
   StressTestInteropClient(int test_id, const grpc::string& server_address,
                           std::shared_ptr<Channel> channel,
                           const WeightedRandomTestSelector& test_selector,
-                          long test_duration_secs, long sleep_duration_ms);
+                          long test_duration_secs, long sleep_duration_ms,
+                          bool do_not_abort_on_transient_failures);
 
   // The main function. Use this as the thread entry point.
   // qps_gauge is the QpsGauge to record the requests per second metric
diff --git a/test/cpp/interop/stress_test.cc b/test/cpp/interop/stress_test.cc
index d9e3fd25c5..f0e9e3287e 100644
--- a/test/cpp/interop/stress_test.cc
+++ b/test/cpp/interop/stress_test.cc
@@ -101,6 +101,10 @@ DEFINE_int32(log_level, GPR_LOG_SEVERITY_INFO,
              "The choices are: 0 (GPR_LOG_SEVERITY_DEBUG), 1 "
              "(GPR_LOG_SEVERITY_INFO) and 2 (GPR_LOG_SEVERITY_ERROR)");
 
+DEFINE_bool(do_not_abort_on_transient_failures, true,
+            "If set to 'true', abort() is not called in case of transient "
+            "failures like temporary connection failures.");
+
 using grpc::testing::kTestCaseList;
 using grpc::testing::MetricsService;
 using grpc::testing::MetricsServiceImpl;
@@ -189,6 +193,12 @@ void LogParameterInfo(const std::vector<grpc::string>& addresses,
   gpr_log(GPR_INFO, "test_cases : %s", FLAGS_test_cases.c_str());
   gpr_log(GPR_INFO, "sleep_duration_ms: %d", FLAGS_sleep_duration_ms);
   gpr_log(GPR_INFO, "test_duration_secs: %d", FLAGS_test_duration_secs);
+  gpr_log(GPR_INFO, "num_channels_per_server: %d",
+          FLAGS_num_channels_per_server);
+  gpr_log(GPR_INFO, "num_stubs_per_channel: %d", FLAGS_num_stubs_per_channel);
+  gpr_log(GPR_INFO, "log_level: %d", FLAGS_log_level);
+  gpr_log(GPR_INFO, "do_not_abort_on_transient_failures: %s",
+          FLAGS_do_not_abort_on_transient_failures ? "true" : "false");
 
   int num = 0;
   for (auto it = addresses.begin(); it != addresses.end(); it++) {
@@ -272,7 +282,7 @@ int main(int argc, char** argv) {
            stub_idx++) {
         StressTestInteropClient* client = new StressTestInteropClient(
             ++thread_idx, *it, channel, test_selector, FLAGS_test_duration_secs,
-            FLAGS_sleep_duration_ms);
+            FLAGS_sleep_duration_ms, FLAGS_do_not_abort_on_transient_failures);
 
         bool is_already_created = false;
         // QpsGauge name
-- 
GitLab


From 5130427b300e9e30839a77aa070a89243cb24e93 Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Thu, 5 May 2016 15:19:00 -0700
Subject: [PATCH 390/525] Add remaining inteorp tests to stress client

---
 test/cpp/interop/stress_interop_client.cc | 54 +++++++++++++++++++----
 test/cpp/interop/stress_interop_client.h  | 25 +++++++++--
 test/cpp/interop/stress_test.cc           |  9 ++++
 3 files changed, 76 insertions(+), 12 deletions(-)

diff --git a/test/cpp/interop/stress_interop_client.cc b/test/cpp/interop/stress_interop_client.cc
index 31f5a424a0..aa95682e74 100644
--- a/test/cpp/interop/stress_interop_client.cc
+++ b/test/cpp/interop/stress_interop_client.cc
@@ -127,31 +127,67 @@ void StressTestInteropClient::MainLoop(std::shared_ptr<QpsGauge> qps_gauge) {
   }
 }
 
-// TODO(sree): Add all interop tests
-void StressTestInteropClient::RunTest(TestCaseType test_case) {
+bool StressTestInteropClient::RunTest(TestCaseType test_case) {
+  bool is_success = false;
   switch (test_case) {
     case EMPTY_UNARY: {
-      interop_client_->DoEmpty();
+      is_success = interop_client_->DoEmpty();
       break;
     }
     case LARGE_UNARY: {
-      interop_client_->DoLargeUnary();
+      is_success = interop_client_->DoLargeUnary();
       break;
     }
     case LARGE_COMPRESSED_UNARY: {
-      interop_client_->DoLargeCompressedUnary();
+      is_success = interop_client_->DoLargeCompressedUnary();
       break;
     }
     case CLIENT_STREAMING: {
-      interop_client_->DoRequestStreaming();
+      is_success = interop_client_->DoRequestStreaming();
       break;
     }
     case SERVER_STREAMING: {
-      interop_client_->DoResponseStreaming();
+      is_success = interop_client_->DoResponseStreaming();
+      break;
+    }
+    case SERVER_COMPRESSED_STREAMING: {
+      is_success = interop_client_->DoResponseCompressedStreaming();
+      break;
+    }
+    case SLOW_CONSUMER: {
+      is_success = interop_client_->DoResponseStreamingWithSlowConsumer();
+      break;
+    }
+    case HALF_DUPLEX: {
+      is_success = interop_client_->DoHalfDuplex();
+      break;
+    }
+    case PING_PONG: {
+      is_success = interop_client_->DoPingPong();
+      break;
+    }
+    case CANCEL_AFTER_BEGIN: {
+      is_success = interop_client_->DoCancelAfterBegin();
+      break;
+    }
+    case CANCEL_AFTER_FIRST_RESPONSE: {
+      is_success = interop_client_->DoCancelAfterFirstResponse();
+      break;
+    }
+    case TIMEOUT_ON_SLEEPING_SERVER: {
+      is_success = interop_client_->DoTimeoutOnSleepingServer();
       break;
     }
     case EMPTY_STREAM: {
-      interop_client_->DoEmptyStream();
+      is_success = interop_client_->DoEmptyStream();
+      break;
+    }
+    case STATUS_CODE_AND_MESSAGE: {
+      is_success = interop_client_->DoStatusWithMessage();
+      break;
+    }
+    case CUSTOM_METADATA: {
+      is_success = interop_client_->DoCustomMetadata();
       break;
     }
     default: {
@@ -160,6 +196,8 @@ void StressTestInteropClient::RunTest(TestCaseType test_case) {
       break;
     }
   }
+
+  return is_success;
 }
 
 }  // namespace testing
diff --git a/test/cpp/interop/stress_interop_client.h b/test/cpp/interop/stress_interop_client.h
index c41ac6afc7..aa93b58b4a 100644
--- a/test/cpp/interop/stress_interop_client.h
+++ b/test/cpp/interop/stress_interop_client.h
@@ -49,7 +49,6 @@ namespace testing {
 using std::pair;
 using std::vector;
 
-// TODO(sreek): Add more test cases here in future
 enum TestCaseType {
   UNKNOWN_TEST = -1,
   EMPTY_UNARY = 0,
@@ -57,7 +56,16 @@ enum TestCaseType {
   LARGE_COMPRESSED_UNARY = 2,
   CLIENT_STREAMING = 3,
   SERVER_STREAMING = 4,
-  EMPTY_STREAM = 5
+  SERVER_COMPRESSED_STREAMING = 5,
+  SLOW_CONSUMER = 6,
+  HALF_DUPLEX = 7,
+  PING_PONG = 8,
+  CANCEL_AFTER_BEGIN = 9,
+  CANCEL_AFTER_FIRST_RESPONSE = 10,
+  TIMEOUT_ON_SLEEPING_SERVER = 11,
+  EMPTY_STREAM = 12,
+  STATUS_CODE_AND_MESSAGE = 13,
+  CUSTOM_METADATA = 14
 };
 
 const vector<pair<TestCaseType, grpc::string>> kTestCaseList = {
@@ -66,7 +74,16 @@ const vector<pair<TestCaseType, grpc::string>> kTestCaseList = {
     {LARGE_COMPRESSED_UNARY, "large_compressed_unary"},
     {CLIENT_STREAMING, "client_streaming"},
     {SERVER_STREAMING, "server_streaming"},
-    {EMPTY_STREAM, "empty_stream"}};
+    {SERVER_COMPRESSED_STREAMING, "server_compressed_streaming"},
+    {SLOW_CONSUMER, "slow_consumer"},
+    {HALF_DUPLEX, "half_duplex"},
+    {PING_PONG, "ping_pong"},
+    {CANCEL_AFTER_BEGIN, "cancel_after_begin"},
+    {CANCEL_AFTER_FIRST_RESPONSE, "cancel_after_first_response"},
+    {TIMEOUT_ON_SLEEPING_SERVER, "timeout_on_sleeping_server"},
+    {EMPTY_STREAM, "empty_stream"},
+    {STATUS_CODE_AND_MESSAGE, "status_code_and_message"},
+    {CUSTOM_METADATA, "custom_metadata"}};
 
 class WeightedRandomTestSelector {
  public:
@@ -95,7 +112,7 @@ class StressTestInteropClient {
   void MainLoop(std::shared_ptr<QpsGauge> qps_gauge);
 
  private:
-  void RunTest(TestCaseType test_case);
+  bool RunTest(TestCaseType test_case);
 
   int test_id_;
   const grpc::string& server_address_;
diff --git a/test/cpp/interop/stress_test.cc b/test/cpp/interop/stress_test.cc
index f0e9e3287e..7787931900 100644
--- a/test/cpp/interop/stress_test.cc
+++ b/test/cpp/interop/stress_test.cc
@@ -89,7 +89,16 @@ DEFINE_string(test_cases, "",
               "   large_compressed_unary\n"
               "   client_streaming\n"
               "   server_streaming\n"
+              "   server_compressed_streaming\n"
+              "   slow_consumer\n"
+              "   half_duplex\n"
+              "   ping_pong\n"
+              "   cancel_after_begin\n"
+              "   cancel_after_first_response\n"
+              "   timeout_on_sleeping_server\n"
               "   empty_stream\n"
+              "   status_code_and_message\n"
+              "   custom_metadata\n"
               " Example: \"empty_unary:20,large_unary:10,empty_stream:70\"\n"
               " The above will execute 'empty_unary', 20% of the time,"
               " 'large_unary', 10% of the time and 'empty_stream' the remaining"
-- 
GitLab


From b836b5bfee46e9d1ee211dba31a9b22c03339b57 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 6 May 2016 00:55:59 +0200
Subject: [PATCH 391/525] Adding missing copyright.

---
 .../python/grpcio_tools/grpc/protoc/main.cc   | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
index 4487a6851a..c9936a3a6b 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
@@ -1,3 +1,32 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 #include <google/protobuf/compiler/command_line_interface.h>
 #include <google/protobuf/compiler/python/python_generator.h>
 
-- 
GitLab


From c5549fcd0a893f6ba10662c0b2b76be7a37aa62c Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Thu, 5 May 2016 16:12:54 -0700
Subject: [PATCH 392/525] Remove redundant error check

---
 test/cpp/interop/interop_client.cc | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc
index e5853b40f8..ca89d05594 100644
--- a/test/cpp/interop/interop_client.cc
+++ b/test/cpp/interop/interop_client.cc
@@ -746,14 +746,9 @@ bool InteropClient::DoTimeoutOnSleepingServer() {
 
   StreamingOutputCallRequest request;
   request.mutable_payload()->set_body(grpc::string(27182, '\0'));
-
-  if (!stream->Write(request)) {
-    gpr_log(GPR_ERROR, "DoTimeoutOnSleepingServer(): stream->Write() failed");
-    return TransientFailureOrAbort();
-  }
+  stream->Write(request);
 
   Status s = stream->Finish();
-
   if (!AssertStatusCode(s, StatusCode::DEADLINE_EXCEEDED)) {
     return false;
   }
-- 
GitLab


From d7b162f6015bb57e67c61dc99617ac8bad7e8adc Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 4 May 2016 15:09:26 -0700
Subject: [PATCH 393/525] add some more scenarios

---
 .../run_tests/performance/scenario_config.py  | 823 +++++++-----------
 1 file changed, 319 insertions(+), 504 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index ddbe237569..52efe8b86b 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -69,6 +69,75 @@ DEEP=100
 WIDE=64
 
 
+def _get_secargs(is_secure):
+  if is_secure:
+    return SECURE_SECARGS
+  else:
+    return None
+
+
+def _ping_pong_scenario(name, rpc_type,
+                        client_type, server_type,
+                        secure=True,
+                        use_generic_payload=False,
+                        use_unconstrained_client=False,
+                        server_language=None,
+                        server_core_limit=0,
+                        async_server_threads=0,
+                        warmup_seconds=WARMUP_SECONDS):
+  """Creates a basic ping pong scenario."""
+  scenario = {
+    'name': name,
+    'num_servers': 1,
+    'num_clients': 1,
+    'client_config': {
+      'client_type': client_type,
+      'security_params': _get_secargs(secure),
+      'outstanding_rpcs_per_channel': 1,
+      'client_channels': 1,
+      'async_client_threads': 1,
+      'rpc_type': rpc_type,
+      'load_params': {
+        'closed_loop': {}
+      },
+      'histogram_params': HISTOGRAM_PARAMS,
+    },
+    'server_config': {
+      'server_type': server_type,
+      'security_params': _get_secargs(secure),
+      'core_limit': server_core_limit,
+      'async_server_threads': async_server_threads,
+    },
+    'warmup_seconds': warmup_seconds,
+    'benchmark_seconds': BENCHMARK_SECONDS
+  }
+  if use_generic_payload:
+    if server_type != 'ASYNC_GENERIC_SERVER':
+      raise Exception('Use ASYNC_GENERIC_SERVER for generic payload.')
+    scenario['client_config']['payload_config'] = EMPTY_GENERIC_PAYLOAD
+    scenario['server_config']['payload_config'] = EMPTY_GENERIC_PAYLOAD
+  else:
+    # For proto payload, only the client should get the config.
+    scenario['client_config']['payload_config'] = EMPTY_PROTO_PAYLOAD
+
+  if use_unconstrained_client:
+    scenario['num_clients'] = 0  # use as many client as available.
+    # TODO(jtattermusch): for SYNC_CLIENT, this will create 100*64 threads
+    # and that's probably too much (at least for wrapped languages).
+    scenario['client_config']['outstanding_rpcs_per_channel'] = DEEP
+    scenario['client_config']['client_channels'] = WIDE
+    scenario['client_config']['async_client_threads'] = 0
+  else:
+    scenario['client_config']['outstanding_rpcs_per_channel'] = 1
+    scenario['client_config']['client_channels'] = 1
+    scenario['client_config']['async_client_threads'] = 1
+
+  if server_language:
+    # the SERVER_LANGUAGE field is recognized by run_performance_tests.py
+    scenario['SERVER_LANGUAGE'] = server_language
+  return scenario
+
+
 class CXXLanguage:
 
   def __init__(self):
@@ -83,205 +152,59 @@ class CXXLanguage:
   def scenarios(self):
     # TODO(ctiller): add 70% load latency test
     for secure in [True, False]:
-      if secure:
-        secstr = 'secure'
-        secargs = SECURE_SECARGS
-      else:
-        secstr = 'insecure'
-        secargs = None
-
-      yield {
-          'name': 'cpp_generic_async_streaming_ping_pong_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 1,
-          'client_config': {
-            'client_type': 'ASYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': 1,
-            'client_channels': 1,
-            'async_client_threads': 1,
-            'rpc_type': 'STREAMING',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_GENERIC_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'ASYNC_GENERIC_SERVER',
-            'security_params': secargs,
-            'core_limit': 1,
-            'async_server_threads': 1,
-            'payload_config': EMPTY_GENERIC_PAYLOAD,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
-      yield {
-          'name': 'cpp_generic_async_streaming_qps_unconstrained_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 0,
-          'client_config': {
-            'client_type': 'ASYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': DEEP,
-            'client_channels': WIDE,
-            'async_client_threads': 0,
-            'rpc_type': 'STREAMING',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_GENERIC_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'ASYNC_GENERIC_SERVER',
-            'security_params': secargs,
-            'core_limit': SINGLE_MACHINE_CORES/2,
-            'async_server_threads': 0,
-            'payload_config': EMPTY_GENERIC_PAYLOAD,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
-      yield {
-          'name': 'cpp_generic_async_streaming_qps_one_server_core_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 0,
-          'client_config': {
-            'client_type': 'ASYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': DEEP,
-            'client_channels': WIDE,
-            'async_client_threads': 0,
-            'rpc_type': 'STREAMING',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_GENERIC_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'ASYNC_GENERIC_SERVER',
-            'security_params': secargs,
-            'core_limit': 1,
-            'async_server_threads': 1,
-            'payload_config': EMPTY_GENERIC_PAYLOAD,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
-      yield {
-          'name': 'cpp_protobuf_async_streaming_qps_unconstrained_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 0,
-          'client_config': {
-            'client_type': 'ASYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': DEEP,
-            'client_channels': WIDE,
-            'async_client_threads': 0,
-            'rpc_type': 'STREAMING',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_PROTO_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'ASYNC_SERVER',
-            'security_params': secargs,
-            'core_limit': SINGLE_MACHINE_CORES/2,
-            'async_server_threads': 0,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
-      yield {
-          'name': 'cpp_protobuf_async_streaming_ping_pong_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 1,
-          'client_config': {
-            'client_type': 'ASYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': 1,
-            'client_channels': 1,
-            'async_client_threads': 1,
-            'rpc_type': 'STREAMING',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_PROTO_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'ASYNC_SERVER',
-            'security_params': secargs,
-            'core_limit': 1,
-            'async_server_threads': 1,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
-      yield {
-          'name': 'cpp_protobuf_sync_unary_ping_pong_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 1,
-          'client_config': {
-            'client_type': 'SYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': 1,
-            'client_channels': 1,
-            'async_client_threads': 0,
-            'rpc_type': 'UNARY',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_PROTO_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'SYNC_SERVER',
-            'security_params': secargs,
-            'core_limit': 1,
-            'async_server_threads': 0,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
-      yield {
-          'name': 'cpp_protobuf_async_unary_ping_pong_%s'
-                  % secstr,
-          'num_servers': 1,
-          'num_clients': 1,
-          'client_config': {
-            'client_type': 'ASYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': 1,
-            'client_channels': 1,
-            'async_client_threads': 1,
-            'rpc_type': 'UNARY',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_PROTO_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'ASYNC_SERVER',
-            'security_params': secargs,
-            'core_limit': 1,
-            'async_server_threads': 1,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
+      secstr = 'secure' if secure else 'insecure'
+
+      yield _ping_pong_scenario(
+          'cpp_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_generic_payload=True, server_core_limit=1, async_server_threads=1,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'cpp_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          server_core_limit=1, async_server_threads=1,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'cpp_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          server_core_limit=1, async_server_threads=1,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'cpp_protobuf_sync_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+          server_core_limit=1, async_server_threads=1,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'cpp_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          server_core_limit=SINGLE_MACHINE_CORES/2,
+          use_unconstrained_client=True,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'cpp_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          server_core_limit=SINGLE_MACHINE_CORES/2,
+          use_unconstrained_client=True,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'cpp_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_unconstrained_client=True, use_generic_payload=True,
+          server_core_limit=SINGLE_MACHINE_CORES/2,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'cpp_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_unconstrained_client=True, use_generic_payload=True,
+          server_core_limit=1, async_server_threads=1,
+          secure=secure)
 
   def __str__(self):
     return 'c++'
@@ -299,113 +222,42 @@ class CSharpLanguage:
     return 100
 
   def scenarios(self):
-    secargs = SECURE_SECARGS
-    yield {
-        'name': 'csharp_generic_async_streaming_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'ASYNC_CLIENT',
-          'security_params': secargs,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'STREAMING',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_GENERIC_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'ASYNC_GENERIC_SERVER',
-          'security_params': secargs,
-          'core_limit': 0,
-          'async_server_threads': 0,
-          'payload_config': EMPTY_GENERIC_PAYLOAD,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS
-    }
-    yield {
-        'name': 'csharp_protobuf_async_unary_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'ASYNC_CLIENT',
-          'security_params': secargs,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'UNARY',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'ASYNC_SERVER',
-          'security_params': secargs,
-          'core_limit': 0,
-          'async_server_threads': 0,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS
-    }
-    yield {
-        'name': 'csharp_protobuf_sync_to_async_unary_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'SYNC_CLIENT',
-          'security_params': secargs,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'UNARY',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'ASYNC_SERVER',
-          'security_params': secargs,
-          'core_limit': 0,
-          'async_server_threads': 0,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS
-    }
-    yield {
-        'name': 'csharp_to_cpp_protobuf_sync_unary_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'SYNC_CLIENT',
-          'security_params': secargs,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'UNARY',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'SYNC_SERVER',
-          'security_params': secargs,
-          'core_limit': 1,
-          'async_server_threads': 1,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS,
-        'SERVER_LANGUAGE': 'c++'  # recognized by run_performance_tests.py
-    }
+    yield _ping_pong_scenario(
+        'csharp_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+        use_generic_payload=True)
+
+    yield _ping_pong_scenario(
+        'csharp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'csharp_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'csharp_protobuf_sync_to_async_unary_ping_pong', rpc_type='UNARY',
+        client_type='SYNC_CLIENT', server_type='ASYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        use_unconstrained_client=True)
+
+    yield _ping_pong_scenario(
+        'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        use_unconstrained_client=True)
+
+    yield _ping_pong_scenario(
+        'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        server_language='c++', server_core_limit=1, async_server_threads=1)
+
+    yield _ping_pong_scenario(
+        'csharp_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        server_language='c++', server_core_limit=1, async_server_threads=1)
 
   def __str__(self):
     return 'csharp'
@@ -424,34 +276,43 @@ class NodeLanguage:
     return 200
 
   def scenarios(self):
-    # TODO(jtattermusch): add more scenarios
-    secargs = SECURE_SECARGS
-    yield {
-        'name': 'node_protobuf_unary_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'ASYNC_CLIENT',
-          'security_params': secargs,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'UNARY',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'ASYNC_SERVER',
-          'security_params': secargs,
-          'core_limit': 0,
-          'async_server_threads': 1,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS
-    }
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'node_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+    #    use_generic_payload=True)
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'node_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'node_protobuf_unary_ping_pong', rpc_type='UNARY',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'node_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        use_unconstrained_client=True)
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'node_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+    #    use_unconstrained_client=True)
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'node_to_cpp_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+    #    server_language='c++', server_core_limit=1, async_server_threads=1)
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'node_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+    #    server_language='c++', server_core_limit=1, async_server_threads=1)
 
   def __str__(self):
     return 'node'
@@ -468,114 +329,49 @@ class PythonLanguage:
     return 500
 
   def scenarios(self):
-    yield {
-        'name': 'python_to_cpp_protobuf_streaming_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'ASYNC_CLIENT',
-          'security_params': SECURE_SECARGS,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'STREAMING',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'SYNC_SERVER',
-          'security_params': SECURE_SECARGS,
-          'core_limit': 0,
-          'async_server_threads': 1,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS,
-        'SERVER_LANGUAGE': 'c++' 
-    }
-    yield {
-        'name': 'python_protobuf_sync_unary_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'SYNC_CLIENT',
-          'security_params': SECURE_SECARGS,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'UNARY',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'SYNC_SERVER',
-          'security_params': SECURE_SECARGS,
-          'core_limit': 0,
-          'async_server_threads': 1,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS,
-    }
-    yield {
-        'name': 'python_protobuf_async_unary_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'ASYNC_CLIENT',
-          'security_params': SECURE_SECARGS,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-            'rpc_type': 'UNARY',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_PROTO_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'SYNC_SERVER',
-            'security_params': SECURE_SECARGS,
-            'core_limit': 0,
-            'async_server_threads': 1,
-          },
-          'warmup_seconds': WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS,
-    }
-    yield {
-        'name': 'python_to_cpp_single_channel_throughput',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'ASYNC_CLIENT',
-          'security_params': SECURE_SECARGS,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'STREAMING',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': BIG_GENERIC_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'ASYNC_GENERIC_SERVER',
-          'security_params': SECURE_SECARGS,
-          'core_limit': SINGLE_MACHINE_CORES/2,
-          'async_server_threads': 1,
-          'payload_config': BIG_GENERIC_PAYLOAD,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS,
-        'SERVER_LANGUAGE': 'c++'
-    }
-      
+    # TODO(jtattermusch): this scenario reports QPS 0.0
+    yield _ping_pong_scenario(
+        'python_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+        use_generic_payload=True)
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'python_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'python_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'python_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER')
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'python_protobuf_sync_unary_qps_unconstrained', rpc_type='UNARY',
+    #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+    #    use_unconstrained_client=True)
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'python_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+    #    use_unconstrained_client=True)
+
+    yield _ping_pong_scenario(
+        'python_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        server_language='c++', server_core_limit=1, async_server_threads=1)
+
+    # TODO(jtattermusch): make this scenario work
+    #yield _ping_pong_scenario(
+    #    'python_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+    #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+    #    server_language='c++', server_core_limit=1, async_server_threads=1)
+
   def __str__(self):
     return 'python'
 
@@ -592,34 +388,35 @@ class RubyLanguage:
     return 300
 
   def scenarios(self):
-    # TODO(jtattermusch): add more scenarios
-    secargs = SECURE_SECARGS
-    yield {
-        'name': 'ruby_protobuf_unary_ping_pong',
-        'num_servers': 1,
-        'num_clients': 1,
-        'client_config': {
-          'client_type': 'SYNC_CLIENT',
-          'security_params': secargs,
-          'outstanding_rpcs_per_channel': 1,
-          'client_channels': 1,
-          'async_client_threads': 1,
-          'rpc_type': 'UNARY',
-          'load_params': {
-            'closed_loop': {}
-          },
-          'payload_config': EMPTY_PROTO_PAYLOAD,
-          'histogram_params': HISTOGRAM_PARAMS,
-        },
-        'server_config': {
-          'server_type': 'SYNC_SERVER',
-          'security_params': secargs,
-          'core_limit': 0,
-          'async_server_threads': 1,
-        },
-        'warmup_seconds': WARMUP_SECONDS,
-        'benchmark_seconds': BENCHMARK_SECONDS
-    }
+    yield _ping_pong_scenario(
+        'ruby_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'ruby_protobuf_unary_ping_pong', rpc_type='UNARY',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER')
+
+    # TODO: scenario reports QPS of 0.0
+    #yield _ping_pong_scenario(
+    #    'ruby_protobuf_sync_unary_qps_unconstrained', rpc_type='UNARY',
+    #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+    #    use_unconstrained_client=True)
+
+    # TODO: scenario reports QPS of 0.0
+    #yield _ping_pong_scenario(
+    #    'ruby_protobuf_sync_streaming_qps_unconstrained', rpc_type='STREAMING',
+    #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+    #    use_unconstrained_client=True)
+
+    yield _ping_pong_scenario(
+        'ruby_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        server_language='c++', server_core_limit=1, async_server_threads=1)
+
+    yield _ping_pong_scenario(
+        'ruby_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        server_language='c++', server_core_limit=1, async_server_threads=1)
 
   def __str__(self):
     return 'ruby'
@@ -638,41 +435,59 @@ class JavaLanguage:
     return 400
 
   def scenarios(self):
-    # TODO(jtattermusch): add more scenarios
     for secure in [True, False]:
-      if secure:
-        secstr = 'secure'
-        secargs = SECURE_SECARGS
-      else:
-        secstr = 'insecure'
-        secargs = None
-
-      yield {
-          'name': 'java_protobuf_unary_ping_pong_%s' % secstr,
-          'num_servers': 1,
-          'num_clients': 1,
-          'client_config': {
-            'client_type': 'SYNC_CLIENT',
-            'security_params': secargs,
-            'outstanding_rpcs_per_channel': 1,
-            'client_channels': 1,
-            'async_client_threads': 1,
-            'rpc_type': 'UNARY',
-            'load_params': {
-              'closed_loop': {}
-            },
-            'payload_config': EMPTY_PROTO_PAYLOAD,
-            'histogram_params': HISTOGRAM_PARAMS,
-          },
-          'server_config': {
-            'server_type': 'SYNC_SERVER',
-            'security_params': secargs,
-            'core_limit': 0,
-            'async_server_threads': 1,
-          },
-          'warmup_seconds': JAVA_WARMUP_SECONDS,
-          'benchmark_seconds': BENCHMARK_SECONDS
-      }
+      secstr = 'secure' if secure else 'insecure'
+
+      yield _ping_pong_scenario(
+          'java_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_generic_payload=True, async_server_threads=1,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      yield _ping_pong_scenario(
+          'java_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          async_server_threads=1,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      yield _ping_pong_scenario(
+          'java_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          async_server_threads=1,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      yield _ping_pong_scenario(
+          'java_protobuf_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+          async_server_threads=1,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      yield _ping_pong_scenario(
+          'java_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          use_unconstrained_client=True,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      yield _ping_pong_scenario(
+          'java_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          use_unconstrained_client=True,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      yield _ping_pong_scenario(
+          'java_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_unconstrained_client=True, use_generic_payload=True,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      yield _ping_pong_scenario(
+          'java_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_unconstrained_client=True, use_generic_payload=True,
+          async_server_threads=1,
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+
+      # TODO(jtattermusch): add scenarios java vs C++ 
 
   def __str__(self):
     return 'java'
-- 
GitLab


From 541d5d7ae2745a9e3dc55348df3168c0f51d382e Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 5 May 2016 16:08:49 -0700
Subject: [PATCH 394/525] increase qps_worker max lifetime

---
 tools/run_tests/run_performance_tests.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index 5519666e84..8b67d921f2 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -89,7 +89,7 @@ def create_qpsworker_job(language, shortname=None,
   jobspec = jobset.JobSpec(
       cmdline=cmdline,
       shortname=shortname,
-      timeout_seconds=30*60)
+      timeout_seconds=2*60*60)
   return QpsWorkerJob(jobspec, language, host_and_port)
 
 
-- 
GitLab


From 253a7109ed1c86df0e482e899bc952e36bdc9f42 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 6 May 2016 03:00:51 +0200
Subject: [PATCH 395/525] The release branch is now 0.14.0-pre1.

---
 Makefile                                          | 2 +-
 build.yaml                                        | 2 +-
 package.json                                      | 2 +-
 src/core/lib/surface/version.c                    | 2 +-
 src/csharp/Grpc.Core/VersionInfo.cs               | 2 +-
 src/csharp/build_packages.bat                     | 2 +-
 src/node/tools/package.json                       | 2 +-
 src/python/grpcio/grpc_version.py                 | 2 +-
 src/ruby/lib/grpc/version.rb                      | 2 +-
 src/ruby/tools/version.rb                         | 2 +-
 tools/distrib/python/grpcio_tools/grpc_version.py | 2 +-
 tools/doxygen/Doxyfile.c++                        | 2 +-
 tools/doxygen/Doxyfile.c++.internal               | 2 +-
 tools/doxygen/Doxyfile.core                       | 2 +-
 tools/doxygen/Doxyfile.core.internal              | 2 +-
 15 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile
index e77aa2dd16..635df30c20 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ E = @echo
 Q = @
 endif
 
-VERSION = 0.14.0-dev
+VERSION = 0.14.0-pre1
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index 1a0888bdc3..7a74e73c72 100644
--- a/build.yaml
+++ b/build.yaml
@@ -7,7 +7,7 @@ settings:
   '#3': Use "-preN" suffixes to identify pre-release versions
   '#4': Per-language overrides are possible with (eg) ruby_version tag here
   '#5': See the expand_version.py for all the quirks here
-  version: 0.14.0-dev
+  version: 0.14.0-pre1
 filegroups:
 - name: census
   public_headers:
diff --git a/package.json b/package.json
index 5ed7f363d3..b22cfc1f93 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc",
-  "version": "0.14.0-dev",
+  "version": "0.14.0-pre1",
   "author": "Google Inc.",
   "description": "gRPC Library for Node",
   "homepage": "http://www.grpc.io/",
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index fe954cbefb..0f4b1111f4 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -36,4 +36,4 @@
 
 #include <grpc/grpc.h>
 
-const char *grpc_version_string(void) { return "0.14.0-dev"; }
+const char *grpc_version_string(void) { return "0.14.0-pre1"; }
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index f7a9cb9c1c..70ce9a18df 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -53,6 +53,6 @@ namespace Grpc.Core
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "0.14.0-dev";
+        public const string CurrentVersion = "0.14.0-pre1";
     }
 }
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index 9a60be26b6..9c7b877fea 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,7 +1,7 @@
 @rem Builds gRPC NuGet packages
 
 @rem Current package versions
-set VERSION=0.14.0-dev
+set VERSION=0.14.0-pre1
 set PROTOBUF_VERSION=3.0.0-beta2
 
 @rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well.
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index d98ed0b1fc..9bca5eab6f 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-tools",
-  "version": "0.14.0-dev",
+  "version": "0.14.0-pre1",
   "author": "Google Inc.",
   "description": "Tools for developing with gRPC on Node.js",
   "homepage": "http://www.grpc.io/",
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index 873b4e2a91..87fadf9a97 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION='0.14.0.dev0'
+VERSION='0.14.0rc1'
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 67c6a5d5a1..5117c85cea 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '0.14.0.dev'
+  VERSION = '0.14.0.pre1'
 end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index 12ad21b80e..ec085d2655 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -29,6 +29,6 @@
 
 module GRPC
   module Tools
-    VERSION = '0.14.0.dev'
+    VERSION = '0.14.0.pre1'
   end
 end
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index b8ae8e20b8..ee522a0bc3 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION='0.14.0.dev0'
+VERSION='0.14.0rc1'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 664ca03d97..f58f7e7281 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.14.0-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 5188ef1e8d..a7a17bac3f 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.14.0-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 84b5c2a8ef..d1259e7aee 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.14.0-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 228c1d98d8..6b7a8be861 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.14.0-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
-- 
GitLab


From 16caa50aae7d1669550be35e205039f65cc4c363 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Fri, 6 May 2016 03:02:51 +0200
Subject: [PATCH 396/525] Master is now 0.15.0-dev.

---
 Makefile                                          | 2 +-
 build.yaml                                        | 2 +-
 composer.json                                     | 2 +-
 package.json                                      | 2 +-
 package.xml                                       | 8 ++++----
 src/core/lib/surface/version.c                    | 2 +-
 src/csharp/Grpc.Core/VersionInfo.cs               | 4 ++--
 src/csharp/build_packages.bat                     | 2 +-
 src/node/tools/package.json                       | 2 +-
 src/python/grpcio/grpc_version.py                 | 2 +-
 src/ruby/lib/grpc/version.rb                      | 2 +-
 src/ruby/tools/version.rb                         | 2 +-
 tools/distrib/python/grpcio_tools/grpc_version.py | 2 +-
 tools/doxygen/Doxyfile.c++                        | 2 +-
 tools/doxygen/Doxyfile.c++.internal               | 2 +-
 tools/doxygen/Doxyfile.core                       | 2 +-
 tools/doxygen/Doxyfile.core.internal              | 2 +-
 17 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/Makefile b/Makefile
index e77aa2dd16..a684ea8611 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ E = @echo
 Q = @
 endif
 
-VERSION = 0.14.0-dev
+VERSION = 0.15.0-dev
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index 1a0888bdc3..13916830c1 100644
--- a/build.yaml
+++ b/build.yaml
@@ -7,7 +7,7 @@ settings:
   '#3': Use "-preN" suffixes to identify pre-release versions
   '#4': Per-language overrides are possible with (eg) ruby_version tag here
   '#5': See the expand_version.py for all the quirks here
-  version: 0.14.0-dev
+  version: 0.15.0-dev
 filegroups:
 - name: census
   public_headers:
diff --git a/composer.json b/composer.json
index 97b1a5cb49..b77a59e351 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
   "name": "grpc/grpc",
   "type": "library",
   "description": "gRPC library for PHP",
-  "version": "0.14.0",
+  "version": "0.15.0",
   "keywords": ["rpc"],
   "homepage": "http://grpc.io",
   "license": "BSD-3-Clause",
diff --git a/package.json b/package.json
index 5ed7f363d3..54a44ca551 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc",
-  "version": "0.14.0-dev",
+  "version": "0.15.0-dev",
   "author": "Google Inc.",
   "description": "gRPC Library for Node",
   "homepage": "http://www.grpc.io/",
diff --git a/package.xml b/package.xml
index 716d6ed289..152d5d6190 100644
--- a/package.xml
+++ b/package.xml
@@ -13,8 +13,8 @@
  <date>2016-04-19</date>
  <time>16:06:07</time>
  <version>
-  <release>0.14.0</release>
-  <api>0.14.0</api>
+  <release>0.15.0</release>
+  <api>0.15.0</api>
  </version>
  <stability>
   <release>beta</release>
@@ -1054,8 +1054,8 @@ Update to wrap gRPC C Core version 0.10.0
   </release>
   <release>
    <version>
-    <release>0.14.0</release>
-    <api>0.14.0</api>
+    <release>0.15.0</release>
+    <api>0.15.0</api>
    </version>
    <stability>
     <release>beta</release>
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index fe954cbefb..aca76d2bb7 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -36,4 +36,4 @@
 
 #include <grpc/grpc.h>
 
-const char *grpc_version_string(void) { return "0.14.0-dev"; }
+const char *grpc_version_string(void) { return "0.15.0-dev"; }
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index f7a9cb9c1c..e1609341d9 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -48,11 +48,11 @@ namespace Grpc.Core
         /// <summary>
         /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
         /// </summary>
-        public const string CurrentAssemblyFileVersion = "0.14.0.0";
+        public const string CurrentAssemblyFileVersion = "0.15.0.0";
 
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "0.14.0-dev";
+        public const string CurrentVersion = "0.15.0-dev";
     }
 }
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index 9a60be26b6..7520b0f81a 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,7 +1,7 @@
 @rem Builds gRPC NuGet packages
 
 @rem Current package versions
-set VERSION=0.14.0-dev
+set VERSION=0.15.0-dev
 set PROTOBUF_VERSION=3.0.0-beta2
 
 @rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well.
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index d98ed0b1fc..efdfa81124 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-tools",
-  "version": "0.14.0-dev",
+  "version": "0.15.0-dev",
   "author": "Google Inc.",
   "description": "Tools for developing with gRPC on Node.js",
   "homepage": "http://www.grpc.io/",
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index 873b4e2a91..0c13104d9d 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION='0.14.0.dev0'
+VERSION='0.15.0.dev0'
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 67c6a5d5a1..01c8c5ac8f 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '0.14.0.dev'
+  VERSION = '0.15.0.dev'
 end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index 12ad21b80e..dca7fd7e72 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -29,6 +29,6 @@
 
 module GRPC
   module Tools
-    VERSION = '0.14.0.dev'
+    VERSION = '0.15.0.dev'
   end
 end
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index b8ae8e20b8..1267d0e45d 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION='0.14.0.dev0'
+VERSION='0.15.0.dev0'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 664ca03d97..2a319db979 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.15.0-dev
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 5188ef1e8d..5fdfafbf3e 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.15.0-dev
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 84b5c2a8ef..aabca410da 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.15.0-dev
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 228c1d98d8..3ffc6174ed 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-dev
+PROJECT_NUMBER         = 0.15.0-dev
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
-- 
GitLab


From a21c7e9207490d9bcdd7205c8a5857320a3a450d Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 5 May 2016 17:31:52 -0700
Subject: [PATCH 397/525] add support for scenario categories

---
 test/cpp/qps/gen_build_yaml.py                 | 10 +++++++---
 tools/run_tests/performance/scenario_config.py | 13 ++++++++++++-
 tools/run_tests/run_performance_tests.py       |  6 +++---
 3 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/test/cpp/qps/gen_build_yaml.py b/test/cpp/qps/gen_build_yaml.py
index 9d6bf2ab73..6b3329b046 100755
--- a/test/cpp/qps/gen_build_yaml.py
+++ b/test/cpp/qps/gen_build_yaml.py
@@ -43,12 +43,16 @@ sys.path.append(run_tests_root)
 
 import performance.scenario_config as scenario_config
 
+def _scenario_json_string(scenario_json):
+  return json.dumps(scenario_config.remove_nonproto_fields(scenario_json))
+
 print yaml.dump({
   'tests': [
     {
       'name': 'json_run_localhost',
-      'shortname': 'json_run_localhost:%s' % js['name'],
-      'args': ['--scenario_json', pipes.quote(json.dumps(js))],
+      'shortname': 'json_run_localhost:%s' % scenario_json['name'],
+      'args': ['--scenario_json',
+               pipes.quote(_scenario_json_string(scenario_json))],
       'ci_platforms': ['linux', 'mac', 'posix', 'windows'],
       'platforms': ['linux', 'mac', 'posix', 'windows'],
       'flaky': False,
@@ -58,6 +62,6 @@ print yaml.dump({
       'cpu_cost': 1000.0,
       'exclude_configs': []
     }
-    for js in scenario_config.CXXLanguage().scenarios()
+    for scenario_json in scenario_config.CXXLanguage().scenarios()
   ]
 })
diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 52efe8b86b..a5b0d59d02 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -76,6 +76,14 @@ def _get_secargs(is_secure):
     return None
 
 
+def remove_nonproto_fields(scenario):
+  """Remove special-purpose that contains some extra info about the scenario
+  but don't belong to the ScenarioConfig protobuf message"""
+  scenario.pop('CATEGORIES', None)
+  scenario.pop('SERVER_LANGUAGE', None)
+  return scenario
+
+
 def _ping_pong_scenario(name, rpc_type,
                         client_type, server_type,
                         secure=True,
@@ -84,7 +92,8 @@ def _ping_pong_scenario(name, rpc_type,
                         server_language=None,
                         server_core_limit=0,
                         async_server_threads=0,
-                        warmup_seconds=WARMUP_SECONDS):
+                        warmup_seconds=WARMUP_SECONDS,
+                        categories=[]):
   """Creates a basic ping pong scenario."""
   scenario = {
     'name': name,
@@ -135,6 +144,8 @@ def _ping_pong_scenario(name, rpc_type,
   if server_language:
     # the SERVER_LANGUAGE field is recognized by run_performance_tests.py
     scenario['SERVER_LANGUAGE'] = server_language
+  if categories:
+    scenario['CATEGORIES'] = categories
   return scenario
 
 
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index 8b67d921f2..c8c1a19783 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -255,9 +255,9 @@ def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
       if re.search(args.regex, scenario_json['name']):
         workers = workers_by_lang[str(language)]
         # 'SERVER_LANGUAGE' is an indicator for this script to pick
-        # a server in different language. It doesn't belong to the Scenario
-        # schema, so we also need to remove it.
-        custom_server_lang = scenario_json.pop('SERVER_LANGUAGE', None)
+        # a server in different language.
+        custom_server_lang = scenario_json.get('SERVER_LANGUAGE', None)
+        scenario_json = scenario_config.remove_nonproto_fields(scenario_json)
         if custom_server_lang:
           if not workers_by_lang.get(custom_server_lang, []):
             print 'Warning: Skipping scenario %s as' % scenario_json['name']
-- 
GitLab


From c45cd2d2ef42aad241c623e7e0e267f6eaf03d17 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 5 May 2016 17:34:46 -0700
Subject: [PATCH 398/525] regenerate tests.json

---
 tools/run_tests/tests.json | 100 ++++++++++++++++++++++++++++---------
 1 file changed, 76 insertions(+), 24 deletions(-)

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index cf1154426f..79a9e73117 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -22942,7 +22942,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -22963,12 +22963,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -22989,12 +22989,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23015,12 +23015,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure"
+    "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+      "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23041,12 +23041,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_secure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_secure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23067,12 +23067,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_secure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_secure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23093,7 +23093,33 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_secure"
+    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_secure"
+  }, 
+  {
+    "args": [
+      "--scenario_json", 
+      "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+    ], 
+    "boringssl": true, 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "cpu_cost": 1000.0, 
+    "defaults": "boringssl", 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c++", 
+    "name": "json_run_localhost", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_secure"
   }, 
   {
     "args": [
@@ -23124,7 +23150,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23145,12 +23171,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23171,12 +23197,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23197,12 +23223,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure"
+    "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_streaming_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+      "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23223,12 +23249,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_ping_pong_insecure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_unary_qps_unconstrained_insecure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_sync_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"SYNC_SERVER\"}, \"client_config\": {\"client_type\": \"SYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23249,12 +23275,12 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_sync_unary_ping_pong_insecure"
+    "shortname": "json_run_localhost:cpp_protobuf_async_streaming_qps_unconstrained_insecure"
   }, 
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_unary_ping_pong_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 1, \"async_client_threads\": 1, \"outstanding_rpcs_per_channel\": 1, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 1}'"
+      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23275,7 +23301,33 @@
       "posix", 
       "windows"
     ], 
-    "shortname": "json_run_localhost:cpp_protobuf_async_unary_ping_pong_insecure"
+    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_unconstrained_insecure"
+  }, 
+  {
+    "args": [
+      "--scenario_json", 
+      "'{\"name\": \"cpp_generic_async_streaming_qps_one_server_core_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 1, \"core_limit\": 1, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+    ], 
+    "boringssl": true, 
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "cpu_cost": 1000.0, 
+    "defaults": "boringssl", 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c++", 
+    "name": "json_run_localhost", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "shortname": "json_run_localhost:cpp_generic_async_streaming_qps_one_server_core_insecure"
   }, 
   {
     "args": [
-- 
GitLab


From 427699b638b2f17219f6b5d33bd571e42eb287fb Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 5 May 2016 18:10:14 -0700
Subject: [PATCH 399/525] mark some scenarios as smoketest and add a cmdline
 flag

---
 .../run_tests/performance/scenario_config.py  | 58 +++++++++++++------
 tools/run_tests/run_performance_tests.py      | 48 ++++++++-------
 2 files changed, 67 insertions(+), 39 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index a5b0d59d02..8b23995149 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -34,6 +34,8 @@ WARMUP_SECONDS=5
 JAVA_WARMUP_SECONDS=15  # Java needs more warmup time for JIT to kick in.
 BENCHMARK_SECONDS=30
 
+SMOKETEST='smoketest'
+
 SECURE_SECARGS = {'use_test_ca': True,
                   'server_host_override': 'foo.test.google.fr'}
 
@@ -164,12 +166,14 @@ class CXXLanguage:
     # TODO(ctiller): add 70% load latency test
     for secure in [True, False]:
       secstr = 'secure' if secure else 'insecure'
+      smoketest_categories = [SMOKETEST] if secure else None
 
       yield _ping_pong_scenario(
           'cpp_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
           client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
           use_generic_payload=True, server_core_limit=1, async_server_threads=1,
-          secure=secure)
+          secure=secure,
+          categories=smoketest_categories)
 
       yield _ping_pong_scenario(
           'cpp_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
@@ -181,7 +185,8 @@ class CXXLanguage:
           'cpp_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
           client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
           server_core_limit=1, async_server_threads=1,
-          secure=secure)
+          secure=secure,
+          categories=smoketest_categories)
 
       yield _ping_pong_scenario(
           'cpp_protobuf_sync_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
@@ -194,7 +199,8 @@ class CXXLanguage:
           client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
           server_core_limit=SINGLE_MACHINE_CORES/2,
           use_unconstrained_client=True,
-          secure=secure)
+          secure=secure,
+          categories=smoketest_categories)
 
       yield _ping_pong_scenario(
           'cpp_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
@@ -208,7 +214,8 @@ class CXXLanguage:
           client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
           use_unconstrained_client=True, use_generic_payload=True,
           server_core_limit=SINGLE_MACHINE_CORES/2,
-          secure=secure)
+          secure=secure,
+          categories=smoketest_categories)
 
       yield _ping_pong_scenario(
           'cpp_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
@@ -236,7 +243,8 @@ class CSharpLanguage:
     yield _ping_pong_scenario(
         'csharp_generic_async_streaming_ping_pong', rpc_type='STREAMING',
         client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
-        use_generic_payload=True)
+        use_generic_payload=True,
+        categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'csharp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
@@ -244,7 +252,8 @@ class CSharpLanguage:
 
     yield _ping_pong_scenario(
         'csharp_protobuf_async_unary_ping_pong', rpc_type='UNARY',
-        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'csharp_protobuf_sync_to_async_unary_ping_pong', rpc_type='UNARY',
@@ -253,7 +262,8 @@ class CSharpLanguage:
     yield _ping_pong_scenario(
         'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
         client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-        use_unconstrained_client=True)
+        use_unconstrained_client=True,
+        categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
@@ -263,7 +273,8 @@ class CSharpLanguage:
     yield _ping_pong_scenario(
         'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
         client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
-        server_language='c++', server_core_limit=1, async_server_threads=1)
+        server_language='c++', server_core_limit=1, async_server_threads=1,
+        categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'csharp_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
@@ -300,12 +311,14 @@ class NodeLanguage:
 
     yield _ping_pong_scenario(
         'node_protobuf_unary_ping_pong', rpc_type='UNARY',
-        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'node_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
         client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-        use_unconstrained_client=True)
+        use_unconstrained_client=True,
+        categories=[SMOKETEST])
 
     # TODO(jtattermusch): make this scenario work
     #yield _ping_pong_scenario(
@@ -344,7 +357,8 @@ class PythonLanguage:
     yield _ping_pong_scenario(
         'python_generic_async_streaming_ping_pong', rpc_type='STREAMING',
         client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
-        use_generic_payload=True)
+        use_generic_payload=True,
+        categories=[SMOKETEST])
 
     # TODO(jtattermusch): make this scenario work
     #yield _ping_pong_scenario(
@@ -358,7 +372,8 @@ class PythonLanguage:
 
     yield _ping_pong_scenario(
         'python_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
-        client_type='SYNC_CLIENT', server_type='SYNC_SERVER')
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        categories=[SMOKETEST])
 
     # TODO(jtattermusch): make this scenario work
     #yield _ping_pong_scenario(
@@ -375,7 +390,8 @@ class PythonLanguage:
     yield _ping_pong_scenario(
         'python_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
         client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
-        server_language='c++', server_core_limit=1, async_server_threads=1)
+        server_language='c++', server_core_limit=1, async_server_threads=1,
+        categories=[SMOKETEST])
 
     # TODO(jtattermusch): make this scenario work
     #yield _ping_pong_scenario(
@@ -401,11 +417,13 @@ class RubyLanguage:
   def scenarios(self):
     yield _ping_pong_scenario(
         'ruby_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
-        client_type='SYNC_CLIENT', server_type='SYNC_SERVER')
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'ruby_protobuf_unary_ping_pong', rpc_type='UNARY',
-        client_type='SYNC_CLIENT', server_type='SYNC_SERVER')
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        categories=[SMOKETEST])
 
     # TODO: scenario reports QPS of 0.0
     #yield _ping_pong_scenario(
@@ -448,12 +466,14 @@ class JavaLanguage:
   def scenarios(self):
     for secure in [True, False]:
       secstr = 'secure' if secure else 'insecure'
+      smoketest_categories = [SMOKETEST] if secure else None
 
       yield _ping_pong_scenario(
           'java_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
           client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
           use_generic_payload=True, async_server_threads=1,
-          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+          categories=smoketest_categories)
 
       yield _ping_pong_scenario(
           'java_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
@@ -465,7 +485,8 @@ class JavaLanguage:
           'java_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
           client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
           async_server_threads=1,
-          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+          categories=smoketest_categories)
 
       yield _ping_pong_scenario(
           'java_protobuf_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
@@ -477,7 +498,8 @@ class JavaLanguage:
           'java_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
           client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
           use_unconstrained_client=True,
-          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS)
+          secure=secure, warmup_seconds=JAVA_WARMUP_SECONDS,
+          categories=smoketest_categories)
 
       yield _ping_pong_scenario(
           'java_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index c8c1a19783..b1f5889e54 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -244,7 +244,7 @@ def start_qpsworkers(languages, worker_hosts):
 
 
 def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
-                     bq_result_table=None):
+                     category='all', bq_result_table=None):
   """Create jobspecs for scenarios to run."""
   all_workers = [worker
                  for workers in workers_by_lang.values()
@@ -253,25 +253,26 @@ def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
   for language in languages:
     for scenario_json in language.scenarios():
       if re.search(args.regex, scenario_json['name']):
-        workers = workers_by_lang[str(language)]
-        # 'SERVER_LANGUAGE' is an indicator for this script to pick
-        # a server in different language.
-        custom_server_lang = scenario_json.get('SERVER_LANGUAGE', None)
-        scenario_json = scenario_config.remove_nonproto_fields(scenario_json)
-        if custom_server_lang:
-          if not workers_by_lang.get(custom_server_lang, []):
-            print 'Warning: Skipping scenario %s as' % scenario_json['name']
-            print('SERVER_LANGUAGE is set to %s yet the language has '
-                  'not been selected with -l' % custom_server_lang)
-            continue
-          for idx in range(0, scenario_json['num_servers']):
-            # replace first X workers by workers of a different language
-            workers[idx] = workers_by_lang[custom_server_lang][idx]
-        scenario = create_scenario_jobspec(scenario_json,
-                                           workers,
-                                           remote_host=remote_host,
-                                           bq_result_table=bq_result_table)
-        scenarios.append(scenario)
+        if category in scenario_json.get('CATEGORIES', []) or category == 'all':
+          workers = workers_by_lang[str(language)]
+          # 'SERVER_LANGUAGE' is an indicator for this script to pick
+          # a server in different language.
+          custom_server_lang = scenario_json.get('SERVER_LANGUAGE', None)
+          scenario_json = scenario_config.remove_nonproto_fields(scenario_json)
+          if custom_server_lang:
+            if not workers_by_lang.get(custom_server_lang, []):
+              print 'Warning: Skipping scenario %s as' % scenario_json['name']
+              print('SERVER_LANGUAGE is set to %s yet the language has '
+                    'not been selected with -l' % custom_server_lang)
+              continue
+            for idx in range(0, scenario_json['num_servers']):
+              # replace first X workers by workers of a different language
+              workers[idx] = workers_by_lang[custom_server_lang][idx]
+          scenario = create_scenario_jobspec(scenario_json,
+                                             workers,
+                                             remote_host=remote_host,
+                                             bq_result_table=bq_result_table)
+          scenarios.append(scenario)
 
   # the very last scenario requests shutting down the workers.
   scenarios.append(create_quit_jobspec(all_workers, remote_host=remote_host))
@@ -298,7 +299,7 @@ argp = argparse.ArgumentParser(description='Run performance tests.')
 argp.add_argument('-l', '--language',
                   choices=['all'] + sorted(scenario_config.LANGUAGES.keys()),
                   nargs='+',
-                  default=['all'],
+                  required=True,
                   help='Languages to benchmark.')
 argp.add_argument('--remote_driver_host',
                   default=None,
@@ -311,6 +312,10 @@ argp.add_argument('-r', '--regex', default='.*', type=str,
                   help='Regex to select scenarios to run.')
 argp.add_argument('--bq_result_table', default=None, type=str,
                   help='Bigquery "dataset.table" to upload results to.')
+argp.add_argument('--category',
+                  choices=['smoketest','all'],
+                  default='smoketest',
+                  help='Select a category of tests to run. Smoketest runs by default.')
 
 args = argp.parse_args()
 
@@ -354,6 +359,7 @@ try:
                                workers_by_lang=worker_addresses,
                                remote_host=args.remote_driver_host,
                                regex=args.regex,
+                               category=args.category,
                                bq_result_table=args.bq_result_table)
   if not scenarios:
     raise Exception('No scenarios to run')
-- 
GitLab


From 4340b74761949411224fc7c73a9eb63182116ef8 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Thu, 5 May 2016 18:14:26 -0700
Subject: [PATCH 400/525] Fix missing file in grpcio-tools sdist

---
 tools/distrib/python/grpcio_tools/MANIFEST.in | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/distrib/python/grpcio_tools/MANIFEST.in b/tools/distrib/python/grpcio_tools/MANIFEST.in
index e6ab312f09..f99fb07ca8 100644
--- a/tools/distrib/python/grpcio_tools/MANIFEST.in
+++ b/tools/distrib/python/grpcio_tools/MANIFEST.in
@@ -1,3 +1,4 @@
+include grpc_version.py
 include protoc_deps.py
 include protoc_lib_deps.py
 graft grpc
-- 
GitLab


From 2b86729b2521b650ca03c0a20dfe15796cfc89c4 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Thu, 5 May 2016 18:17:45 -0700
Subject: [PATCH 401/525] Build grpcio-tools sdist

---
 tools/run_tests/build_artifact_python.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/run_tests/build_artifact_python.sh b/tools/run_tests/build_artifact_python.sh
index 35c3a48afa..4320f978e3 100755
--- a/tools/run_tests/build_artifact_python.sh
+++ b/tools/run_tests/build_artifact_python.sh
@@ -59,7 +59,11 @@ ${SETARCH_CMD} ${PYTHON} setup.py  \
 ${SETARCH_CMD} ${PYTHON} setup.py  \
     bdist_wheel
 
-# Build gRPC tools package
+# Build gRPC tools package source distribution
+${SETARCH_CMD} ${PYTHON} tools/distrib/python/grpcio_tools/setup.py  \
+    sdist
+
+# Build gRPC tools package binary distribution
 ${PYTHON} tools/distrib/python/make_grpcio_tools.py
 CFLAGS="$CFLAGS -fno-wrapv" ${SETARCH_CMD} \
   ${PYTHON} tools/distrib/python/grpcio_tools/setup.py bdist_wheel
-- 
GitLab


From ab5309c9b12aef6fd874b5f925ea04df4eebde14 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Thu, 5 May 2016 18:39:01 -0700
Subject: [PATCH 402/525] Remove precompiled Python extension hack

---
 setup.py                         |  42 +++++-------
 src/python/grpcio/precompiled.py | 114 -------------------------------
 2 files changed, 18 insertions(+), 138 deletions(-)
 delete mode 100644 src/python/grpcio/precompiled.py

diff --git a/setup.py b/setup.py
index 5cd26124f6..f96824fa88 100644
--- a/setup.py
+++ b/setup.py
@@ -54,7 +54,6 @@ sys.path.insert(0, os.path.abspath(PYTHON_STEM))
 
 # Break import-style to ensure we can actually find our in-repo dependencies.
 import commands
-import precompiled
 import grpc_core_dependencies
 import grpc_version
 
@@ -173,7 +172,6 @@ COMMAND_CLASS = {
     'build_project_metadata': commands.BuildProjectMetadata,
     'build_py': commands.BuildPy,
     'build_ext': commands.BuildExt,
-    'build_tagged_ext': precompiled.BuildTaggedExt,
     'gather': commands.Gather,
     'run_interop': commands.RunInterop,
     'test_lite': commands.TestLite
@@ -229,25 +227,21 @@ else:
   PACKAGES = setuptools.find_packages(
       PYTHON_STEM, exclude=['tests', 'tests.*'])
 
-setup_arguments = {
-    'name': 'grpcio',
-    'version': grpc_version.VERSION,
-    'license': LICENSE,
-    'ext_modules': CYTHON_EXTENSION_MODULES,
-    'packages': list(PACKAGES),
-    'package_dir': PACKAGE_DIRECTORIES,
-    # TODO(atash): Figure out why auditwheel doesn't like namespace packages.
-    #'namespace_packages': ['grpc'],
-    'package_data': PACKAGE_DATA,
-    'install_requires': INSTALL_REQUIRES,
-    'setup_requires': SETUP_REQUIRES,
-    'cmdclass': COMMAND_CLASS,
-    'tests_require': TESTS_REQUIRE,
-    'test_suite': TEST_SUITE,
-    'test_loader': TEST_LOADER,
-    'test_runner': TEST_RUNNER,
-}
-
-precompiled.update_setup_arguments(setup_arguments)
-
-setuptools.setup(**setup_arguments)
+setuptools.setup(
+  name='grpcio',
+  version=grpc_version.VERSION,
+  license=LICENSE,
+  ext_modules=CYTHON_EXTENSION_MODULES,
+  packages=list(PACKAGES),
+  package_dir=PACKAGE_DIRECTORIES,
+  # TODO(atash): Figure out why auditwheel doesn't like namespace packages.
+  #namespace_packages=['grpc'],
+  package_data=PACKAGE_DATA,
+  install_requires=INSTALL_REQUIRES,
+  setup_requires=SETUP_REQUIRES,
+  cmdclass=COMMAND_CLASS,
+  tests_require=TESTS_REQUIRE,
+  test_suite=TEST_SUITE,
+  test_loader=TEST_LOADER,
+  test_runner=TEST_RUNNER,
+)
diff --git a/src/python/grpcio/precompiled.py b/src/python/grpcio/precompiled.py
deleted file mode 100644
index b6aa7fc90e..0000000000
--- a/src/python/grpcio/precompiled.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright 2015, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os
-import platform
-import shutil
-import sys
-import sysconfig
-
-import setuptools
-
-import commands
-import grpc_version
-
-try:
-  from urllib2 import urlopen
-except ImportError:
-  from urllib.request import urlopen
-
-PYTHON_STEM = os.path.dirname(os.path.abspath(__file__))
-BINARIES_REPOSITORY = os.environ.get(
-    'GRPC_PYTHON_BINARIES_REPOSITORY',
-    'https://storage.googleapis.com/grpc-precompiled-binaries/python')
-USE_PRECOMPILED_BINARIES = bool(int(os.environ.get(
-    'GRPC_PYTHON_USE_PRECOMPILED_BINARIES', '1')))
-
-def _tagged_ext_name(base):
-  uname = platform.uname()
-  tags = (
-      grpc_version.VERSION,
-      'py{}'.format(sysconfig.get_python_version()),
-      uname[0],
-      uname[4],
-  )
-  ucs = 'ucs{}'.format(sysconfig.get_config_var('Py_UNICODE_SIZE'))
-  return '{base}-{tags}-{ucs}'.format(
-      base=base, tags='-'.join(tags), ucs=ucs)
-
-
-class BuildTaggedExt(setuptools.Command):
-
-  description = 'build the gRPC tagged extensions'
-  user_options = []
-
-  def initialize_options(self):
-    # distutils requires this override.
-    pass
-
-  def finalize_options(self):
-    # distutils requires this override.
-    pass
-
-  def run(self):
-    if 'linux' in sys.platform:
-      self.run_command('build_ext')
-      try:
-        os.makedirs('dist/')
-      except OSError:
-        pass
-      shutil.copyfile(
-          os.path.join(PYTHON_STEM, 'grpc/_cython/cygrpc.so'),
-          'dist/{}.so'.format(_tagged_ext_name('cygrpc')))
-    else:
-      sys.stderr.write('nothing to do for build_tagged_ext\n')
-
-
-def update_setup_arguments(setup_arguments):
-  if not USE_PRECOMPILED_BINARIES:
-    sys.stderr.write('not using precompiled extension')
-    return
-  url = '{}/{}.so'.format(BINARIES_REPOSITORY, _tagged_ext_name('cygrpc'))
-  target_path = os.path.join(PYTHON_STEM, 'grpc/_cython/cygrpc.so')
-  try:
-    extension = urlopen(url).read()
-  except:
-    sys.stderr.write(
-        'could not download precompiled extension: {}\n'.format(url))
-    return
-  try:
-    with open(target_path, 'w') as target:
-      target.write(extension)
-    setup_arguments['ext_modules'] = []
-  except:
-    sys.stderr.write(
-        'could not write precompiled extension to directory: {} -> {}\n'
-            .format(url, target_path))
-    return
-  setup_arguments['package_data']['grpc._cython'].append('cygrpc.so')
-- 
GitLab


From 0bdc7ccab9622cd2e62eec6007bff3391bc664f4 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Thu, 5 May 2016 19:03:43 -0700
Subject: [PATCH 403/525] Fix #4592

Adds a command that allows the instructions to be used to install gRPC Python
from scratch.
---
 src/python/grpcio/README.rst | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/python/grpcio/README.rst b/src/python/grpcio/README.rst
index cb3f6b87fe..afc4fe6a37 100644
--- a/src/python/grpcio/README.rst
+++ b/src/python/grpcio/README.rst
@@ -48,6 +48,7 @@ package named :code:`python-dev`).
   $ export REPO_ROOT=grpc  # REPO_ROOT can be any directory of your choice
   $ git clone https://github.com/grpc/grpc.git $REPO_ROOT
   $ cd $REPO_ROOT
+  $ git submodule update --init
 
   # For the next two commands do `sudo pip install` if you get permission-denied errors
   $ pip install -rrequirements.txt
-- 
GitLab


From f4c70caaf44bdcddc22bda869decee2ca410020c Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Thu, 5 May 2016 19:14:05 -0700
Subject: [PATCH 404/525] Move manylinux1 precompiler definitions into
 port_platform.h

---
 include/grpc/impl/codegen/port_platform.h | 32 +++++++++++++++++++++++
 tools/run_tests/artifact_targets.py       | 32 +----------------------
 2 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h
index 1229d488ed..d2d9ac7808 100644
--- a/include/grpc/impl/codegen/port_platform.h
+++ b/include/grpc/impl/codegen/port_platform.h
@@ -114,6 +114,38 @@
 #define GPR_WIN32_ATOMIC 1
 #define GPR_MSVC_TLS 1
 #endif
+#elif defined(GPR_MANYLINUX1)
+// TODO(atash): manylinux1 is just another __linux__ but with ancient
+// libraries; it should be integrated with the `__linux__` definitions below.
+#define GPR_PLATFORM_STRING "manylinux"
+#define GPR_POSIX_CRASH_HANDLER 1
+#define GPR_CPU_LINUX 1
+#define GPR_GCC_ATOMIC 1
+#define GPR_GCC_TLS 1
+#define GPR_LINUX 1
+#define GPR_LINUX_LOG 1
+#define GPR_POSIX_SOCKET 1
+#define GPR_POSIX_WAKEUP_FD 1
+#define GPR_POSIX_SOCKETADDR 1
+#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
+#define GPR_POSIX_SOCKETUTILS 1
+#define GPR_HAVE_UNIX_SOCKET 1
+#define GPR_HAVE_IP_PKTINFO 1
+#define GPR_HAVE_IPV6_RECVPKTINFO 1
+#define GPR_LINUX_ENV 1
+#define GPR_POSIX_FILE 1
+#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STRING 1
+#define GPR_POSIX_SUBPROCESS 1
+#define GPR_POSIX_SYNC 1
+#define GPR_POSIX_TIME 1
+#define GPR_GETPID_IN_UNISTD_H 1
+#define GPR_HAVE_MSG_NOSIGNAL 1
+#ifdef _LP64
+#define GPR_ARCH_64 1
+#else /* _LP64 */
+#define GPR_ARCH_32 1
+#endif /* _LP64 */
 #elif defined(ANDROID) || defined(__ANDROID__)
 #define GPR_PLATFORM_STRING "android"
 #define GPR_ANDROID 1
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index 477bd46888..bd1269ceb7 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -113,37 +113,7 @@ class PythonArtifact:
       # defines ourselves.
       # TODO(atash) get better platform-detection support in core so we don't
       # need to do this manually...
-      environ['CFLAGS'] = " ".join([
-        '-DGPR_NO_AUTODETECT_PLATFORM',
-        '-DGPR_PLATFORM_STRING=\\"manylinux\\"',
-        '-DGPR_POSIX_CRASH_HANDLER=1',
-        '-DGPR_CPU_LINUX=1',
-        '-DGPR_GCC_ATOMIC=1',
-        '-DGPR_GCC_TLS=1',
-        '-DGPR_LINUX=1',
-        '-DGPR_LINUX_LOG=1',
-        #'-DGPR_LINUX_MULTIPOLL_WITH_EPOLL=1',
-        '-DGPR_POSIX_SOCKET=1',
-        '-DGPR_POSIX_WAKEUP_FD=1',
-        '-DGPR_POSIX_SOCKETADDR=1',
-        #'-DGPR_LINUX_EVENTFD=1',
-        '-DGPR_POSIX_NO_SPECIAL_WAKEUP_FD=1',
-        #'-DGPR_LINUX_SOCKETUTILS=1',
-        '-DGPR_POSIX_SOCKETUTILS=1',
-        '-DGPR_HAVE_UNIX_SOCKET=1',
-        '-DGPR_HAVE_IP_PKTINFO=1',
-        '-DGPR_HAVE_IPV6_RECVPKTINFO=1',
-        '-DGPR_LINUX_ENV=1',
-        '-DGPR_POSIX_FILE=1',
-        '-DGPR_POSIX_TMPFILE=1',
-        '-DGPR_POSIX_STRING=1',
-        '-DGPR_POSIX_SUBPROCESS=1',
-        '-DGPR_POSIX_SYNC=1',
-        '-DGPR_POSIX_TIME=1',
-        '-DGPR_GETPID_IN_UNISTD_H=1',
-        '-DGPR_HAVE_MSG_NOSIGNAL=1',
-        '-DGPR_ARCH_{arch}=1'.format(arch=('32' if self.arch == 'x86' else '64')),
-      ])
+      environ['CFLAGS'] = '-DGPR_MANYLINUX1=1'
       return create_docker_jobspec(self.name,
           'tools/dockerfile/grpc_artifact_python_manylinux_%s' % self.arch,
           'tools/run_tests/build_artifact_python.sh',
-- 
GitLab


From 61ba1630f6ae1fbdd1ded1bf6badb45a69235029 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Thu, 5 May 2016 19:43:03 -0700
Subject: [PATCH 405/525] Fix Python grpcio-tools windows build

---
 tools/run_tests/build_artifact_python.bat | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/tools/run_tests/build_artifact_python.bat b/tools/run_tests/build_artifact_python.bat
index 636ae0d393..342469bba8 100644
--- a/tools/run_tests/build_artifact_python.bat
+++ b/tools/run_tests/build_artifact_python.bat
@@ -50,6 +50,8 @@ pip install -rrequirements.txt
 set GRPC_PYTHON_USE_CUSTOM_BDIST=0
 set GRPC_PYTHON_BUILD_WITH_CYTHON=1
 
+@rem TODO(atash): maybe we could avoid the grpc_c.(32|64).python shim above if
+@rem this used the right python build?
 python setup.py bdist_wheel
 
 @rem Build gRPC Python tools
@@ -57,12 +59,15 @@ set PATH=C:\msys64\mingw%2\bin;%PATH%
 set CC=C:\msys64\mingw%2\bin\g++.exe
 set CFLAGS=-fno-wrapv
 python tools\distrib\python\make_grpcio_tools.py
+@rem The following commands *must* be run with the right version of python
+@rem otherwise the build get SNAFU'd (so we use the .exe suffix to invoke the python
+@rem we set in the %PATH% variable above).
 if %2 == 32 (
-  python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32
+  python.exe tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32
 ) else (
-  python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64
+  python.exe tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64
 )
-python tools\distrib\python\grpcio_tools\setup.py bdist_wheel
+python.exe tools\distrib\python\grpcio_tools\setup.py bdist_wheel
 
 mkdir artifacts
 xcopy /Y /I /S dist\* artifacts\ || goto :error
-- 
GitLab


From 7e660d7e42d0d5b37e41bbb79c373898746c5442 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Thu, 5 May 2016 20:09:33 -0700
Subject: [PATCH 406/525] Add Python grpcio-tools documentation

---
 tools/distrib/python/grpcio_tools/MANIFEST.in |   1 +
 tools/distrib/python/grpcio_tools/README.rst  | 126 ++++++++++++++++++
 2 files changed, 127 insertions(+)
 create mode 100644 tools/distrib/python/grpcio_tools/README.rst

diff --git a/tools/distrib/python/grpcio_tools/MANIFEST.in b/tools/distrib/python/grpcio_tools/MANIFEST.in
index e6ab312f09..f902095ad5 100644
--- a/tools/distrib/python/grpcio_tools/MANIFEST.in
+++ b/tools/distrib/python/grpcio_tools/MANIFEST.in
@@ -1,5 +1,6 @@
 include protoc_deps.py
 include protoc_lib_deps.py
+include README.rst
 graft grpc
 graft grpc_root
 graft third_party
diff --git a/tools/distrib/python/grpcio_tools/README.rst b/tools/distrib/python/grpcio_tools/README.rst
new file mode 100644
index 0000000000..3be564ef5b
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/README.rst
@@ -0,0 +1,126 @@
+gRPC Python Tools
+=================
+
+Package for gRPC Python tools.
+
+Installation
+------------
+
+The gRPC Python tools package is available for Linux, Mac OS X, and Windows
+running Python 2.7.
+
+From PyPI
+~~~~~~~~~
+
+If you are installing locally...
+
+::
+
+  $ pip install grpcio-tools
+
+Else system wide (on Ubuntu)...
+
+::
+
+  $ sudo pip install grpcio-tools
+
+If you're on Windows make sure that you installed the :code:`pip.exe` component
+when you installed Python (if not go back and install it!) then invoke:
+
+::
+
+  $ pip.exe install grpcio-tools
+
+Windows users may need to invoke :code:`pip.exe` from a command line ran as
+administrator.
+
+n.b. On Windows and on Mac OS X one *must* have a recent release of :code:`pip`
+to retrieve the proper wheel from PyPI. Be sure to upgrade to the latest
+version!
+
+You might also need to install Cython to handle installation via the source
+distribution if gRPC Python's system coverage with wheels does not happen to
+include your system.
+
+From Source
+~~~~~~~~~~~
+
+Building from source requires that you have the Python headers (usually a
+package named :code:`python-dev`) and Cython installed.
+
+::
+
+  $ export REPO_ROOT=grpc  # REPO_ROOT can be any directory of your choice
+  $ git clone https://github.com/grpc/grpc.git $REPO_ROOT
+  $ cd $REPO_ROOT
+  $ git submodule update --init
+
+  $ cd tools/distrib/python/grpcio_tools
+  $ python ../make_grpcio_tools.py
+
+  # For the next command do `sudo pip install` if you get permission-denied errors
+  $ pip install .
+
+You cannot currently install Python from source on Windows. Things might work
+out for you in MSYS2 (follow the Linux instructions), but it isn't officially
+supported at the moment.
+
+Troubleshooting
+~~~~~~~~~~~~~~~
+
+Help, I ...
+
+* **... see a** :code:`pkg_resources.VersionConflict` **when I try to install
+  grpc**
+
+  This is likely because :code:`pip` doesn't own the offending dependency,
+  which in turn is likely because your operating system's package manager owns
+  it. You'll need to force the installation of the dependency:
+
+  :code:`pip install --ignore-installed $OFFENDING_DEPENDENCY`
+
+  For example, if you get an error like the following:
+
+  ::
+
+    Traceback (most recent call last):
+    File "<string>", line 17, in <module>
+     ...
+    File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 509, in find
+      raise VersionConflict(dist, req)
+    pkg_resources.VersionConflict: (six 1.8.0 (/usr/lib/python2.7/dist-packages), Requirement.parse('six>=1.10'))
+
+  You can fix it by doing:
+
+  ::
+
+    sudo pip install --ignore-installed six
+
+* **... see compiler errors on some platforms when either installing from source or from the source distribution**
+
+  If you see
+
+  ::
+
+    /tmp/pip-build-U8pSsr/cython/Cython/Plex/Scanners.c:4:20: fatal error: Python.h: No such file or directory
+    #include "Python.h"
+                    ^
+    compilation terminated.
+
+  You can fix it by installing `python-dev` package. i.e
+
+  ::
+
+    sudo apt-get install python-dev
+
+  If you see something similar to:
+
+  ::
+
+    third_party/protobuf/src/google/protobuf/stubs/mathlimits.h:173:31: note: in expansion of macro 'SIGNED_INT_MAX'
+    static const Type kPosMax = SIGNED_INT_MAX(Type); \\
+                               ^
+  And your toolchain is GCC (at the time of this writing, up through at least
+  GCC 6.0), this is probably a bug where GCC chokes on constant expressions
+  when the :code:`-fwrapv` flag is specified. You should consider setting your
+  environment with :code:`CFLAGS=-fno-wrapv` or using clang (:code:`CC=clang`).
-- 
GitLab


From 4c07008610922e15c9f406b89e1bf35f80a9728f Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 5 May 2016 23:27:13 -0700
Subject: [PATCH 407/525] Add a test for server returning error with debug info
 in trailer.

---
 src/proto/grpc/testing/echo_messages.proto |  7 ++++++
 test/cpp/end2end/end2end_test.cc           | 25 ++++++++++++++++++++++
 test/cpp/end2end/test_service_impl.cc      |  8 +++++++
 test/cpp/end2end/test_service_impl.h       |  1 +
 4 files changed, 41 insertions(+)

diff --git a/src/proto/grpc/testing/echo_messages.proto b/src/proto/grpc/testing/echo_messages.proto
index 1be1966f10..b405acf043 100644
--- a/src/proto/grpc/testing/echo_messages.proto
+++ b/src/proto/grpc/testing/echo_messages.proto
@@ -32,6 +32,12 @@ syntax = "proto3";
 
 package grpc.testing;
 
+// Message to be echoed back serialized in trailer.
+message DebugInfo {
+  repeated string stack_entries = 1;
+  string detail = 2;
+}
+
 message RequestParams {
   bool echo_deadline = 1;
   int32 client_cancel_after_us = 2;
@@ -43,6 +49,7 @@ message RequestParams {
   string expected_client_identity = 8; // will force check_auth_context.
   bool skip_cancelled_check = 9;
   string expected_transport_security_type = 10;
+  DebugInfo debug_info = 11;
 }
 
 message EchoRequest {
diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc
index 0c9313f88f..bef1561b09 100644
--- a/test/cpp/end2end/end2end_test.cc
+++ b/test/cpp/end2end/end2end_test.cc
@@ -975,6 +975,31 @@ TEST_P(End2endTest, NonExistingService) {
   EXPECT_EQ("", s.error_message());
 }
 
+// Ask the server to send back a serialized proto in trailer.
+// This is an example of setting error details.
+TEST_P(End2endTest, BinaryTrailerTest) {
+  ResetStub();
+  EchoRequest request;
+  EchoResponse response;
+  ClientContext context;
+
+  request.mutable_param()->set_echo_metadata(true);
+  DebugInfo* info = request.mutable_param()->mutable_debug_info();
+  info->add_stack_entries("stack_entry_1");
+  info->add_stack_entries("stack_entry_2");
+  info->add_stack_entries("stack_entry_3");
+  info->set_detail("detailed debug info");
+  grpc::string expected_string = info->SerializeAsString();
+  request.set_message("Hello");
+
+  Status s = stub_->Echo(&context, request, &response);
+  EXPECT_FALSE(s.ok());
+  auto trailers = context.GetServerTrailingMetadata();
+  EXPECT_EQ(1, trailers.count(kDebugInfoTrailerKey));
+  auto iter = trailers.find(kDebugInfoTrailerKey);
+  EXPECT_EQ(expected_string, iter->second);
+}
+
 //////////////////////////////////////////////////////////////////////////
 // Test with and without a proxy.
 class ProxyEnd2endTest : public End2endTest {
diff --git a/test/cpp/end2end/test_service_impl.cc b/test/cpp/end2end/test_service_impl.cc
index 2f5dd6d49e..cbaee92228 100644
--- a/test/cpp/end2end/test_service_impl.cc
+++ b/test/cpp/end2end/test_service_impl.cc
@@ -135,6 +135,14 @@ Status TestServiceImpl::Echo(ServerContext* context, const EchoRequest* request,
       context->AddTrailingMetadata(ToString(iter->first),
                                    ToString(iter->second));
     }
+    // Terminate rpc with error and debug info in trailer.
+    if (request->param().debug_info().stack_entries_size() ||
+        !request->param().debug_info().detail().empty()) {
+      grpc::string serialized_debug_info =
+          request->param().debug_info().SerializeAsString();
+      context->AddTrailingMetadata(kDebugInfoTrailerKey, serialized_debug_info);
+      return Status::CANCELLED;
+    }
   }
   if (request->has_param() &&
       (request->param().expected_client_identity().length() > 0 ||
diff --git a/test/cpp/end2end/test_service_impl.h b/test/cpp/end2end/test_service_impl.h
index 1ab6ced9e0..c89f88c900 100644
--- a/test/cpp/end2end/test_service_impl.h
+++ b/test/cpp/end2end/test_service_impl.h
@@ -47,6 +47,7 @@ namespace testing {
 const int kNumResponseStreamsMsgs = 3;
 const char* const kServerCancelAfterReads = "cancel_after_reads";
 const char* const kServerTryCancelRequest = "server_try_cancel";
+const char* const kDebugInfoTrailerKey = "debug-info-bin";
 
 typedef enum {
   DO_NOT_CANCEL = 0,
-- 
GitLab


From 067cce56d4158031ea40f2f91a2e3839ebe2bbec Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Fri, 6 May 2016 09:12:39 -0700
Subject: [PATCH 408/525] Fix asan test failure.

---
 test/core/bad_client/tests/large_metadata.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/test/core/bad_client/tests/large_metadata.c b/test/core/bad_client/tests/large_metadata.c
index b3521439f5..1a8d2a2987 100644
--- a/test/core/bad_client/tests/large_metadata.c
+++ b/test/core/bad_client/tests/large_metadata.c
@@ -433,6 +433,7 @@ static void server_verifier_sends_too_much_metadata(grpc_server *server,
   cq_expect_completion(cqv, tag(102), 0);  // Operation fails.
   cq_verify(cqv);
 
+  gpr_free((char *)meta.value);
   grpc_metadata_array_destroy(&request_metadata_recv);
   grpc_call_details_destroy(&call_details);
   grpc_call_destroy(s);
@@ -469,6 +470,7 @@ static void client_validator(gpr_slice_buffer *incoming) {
   *p++ = 11;
   // Compare actual and expected.
   GPR_ASSERT(gpr_slice_cmp(last_frame, expected) == 0);
+  gpr_slice_buffer_destroy(&last_frame_buffer);
 }
 
 int main(int argc, char **argv) {
-- 
GitLab


From af1fe578e099f5e470a9e1a853181983753ceefa Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Fri, 6 May 2016 09:40:52 -0700
Subject: [PATCH 409/525] Namespace change

---
 .../grpcio/tests/health_check/_health_servicer_test.py      | 6 +++---
 src/python/grpcio_health_checking/MANIFEST.in               | 2 ++
 .../{grpc_health_checking => grpc_health}/__init__.py       | 0
 .../health/__init__.py                                      | 0
 .../health/v1/__init__.py                                   | 0
 .../health/v1/health.py                                     | 2 +-
 src/python/grpcio_health_checking/health_commands.py        | 2 +-
 src/python/grpcio_health_checking/setup.py                  | 2 +-
 8 files changed, 8 insertions(+), 6 deletions(-)
 rename src/python/grpcio_health_checking/{grpc_health_checking => grpc_health}/__init__.py (100%)
 rename src/python/grpcio_health_checking/{grpc_health_checking => grpc_health}/health/__init__.py (100%)
 rename src/python/grpcio_health_checking/{grpc_health_checking => grpc_health}/health/v1/__init__.py (100%)
 rename src/python/grpcio_health_checking/{grpc_health_checking => grpc_health}/health/v1/health.py (98%)

diff --git a/src/python/grpcio/tests/health_check/_health_servicer_test.py b/src/python/grpcio/tests/health_check/_health_servicer_test.py
index 625cb7fc59..1b63388663 100644
--- a/src/python/grpcio/tests/health_check/_health_servicer_test.py
+++ b/src/python/grpcio/tests/health_check/_health_servicer_test.py
@@ -27,12 +27,12 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-"""Tests of grpc_health_checking.health.v1.health."""
+"""Tests of grpc_health.health.v1.health."""
 
 import unittest
 
-from grpc_health_checking.health.v1 import health
-from grpc_health_checking.health.v1 import health_pb2
+from grpc_health.health.v1 import health
+from grpc_health.health.v1 import health_pb2
 
 
 class HealthServicerTest(unittest.TestCase):
diff --git a/src/python/grpcio_health_checking/MANIFEST.in b/src/python/grpcio_health_checking/MANIFEST.in
index 40c6ac8497..7d26647697 100644
--- a/src/python/grpcio_health_checking/MANIFEST.in
+++ b/src/python/grpcio_health_checking/MANIFEST.in
@@ -1 +1,3 @@
+include health_commands.py
+graft grpc_health
 global-exclude *.pyc
diff --git a/src/python/grpcio_health_checking/grpc_health_checking/__init__.py b/src/python/grpcio_health_checking/grpc_health/__init__.py
similarity index 100%
rename from src/python/grpcio_health_checking/grpc_health_checking/__init__.py
rename to src/python/grpcio_health_checking/grpc_health/__init__.py
diff --git a/src/python/grpcio_health_checking/grpc_health_checking/health/__init__.py b/src/python/grpcio_health_checking/grpc_health/health/__init__.py
similarity index 100%
rename from src/python/grpcio_health_checking/grpc_health_checking/health/__init__.py
rename to src/python/grpcio_health_checking/grpc_health/health/__init__.py
diff --git a/src/python/grpcio_health_checking/grpc_health_checking/health/v1/__init__.py b/src/python/grpcio_health_checking/grpc_health/health/v1/__init__.py
similarity index 100%
rename from src/python/grpcio_health_checking/grpc_health_checking/health/v1/__init__.py
rename to src/python/grpcio_health_checking/grpc_health/health/v1/__init__.py
diff --git a/src/python/grpcio_health_checking/grpc_health_checking/health/v1/health.py b/src/python/grpcio_health_checking/grpc_health/health/v1/health.py
similarity index 98%
rename from src/python/grpcio_health_checking/grpc_health_checking/health/v1/health.py
rename to src/python/grpcio_health_checking/grpc_health/health/v1/health.py
index 7068ba9605..8da60c70cb 100644
--- a/src/python/grpcio_health_checking/grpc_health_checking/health/v1/health.py
+++ b/src/python/grpcio_health_checking/grpc_health/health/v1/health.py
@@ -31,7 +31,7 @@
 
 import threading
 
-from grpc_health_checking.health.v1 import health_pb2
+from grpc_health.health.v1 import health_pb2
 
 
 class HealthServicer(health_pb2.BetaHealthServicer):
diff --git a/src/python/grpcio_health_checking/health_commands.py b/src/python/grpcio_health_checking/health_commands.py
index b01e0bd0e8..631066f331 100644
--- a/src/python/grpcio_health_checking/health_commands.py
+++ b/src/python/grpcio_health_checking/health_commands.py
@@ -94,7 +94,7 @@ class CopyProtoModules(setuptools.Command):
     if os.path.isfile(HEALTH_PROTO):
       shutil.copyfile(
           HEALTH_PROTO,
-          os.path.join(ROOT_DIR, 'grpc_health_checking/health/v1/health.proto'))
+          os.path.join(ROOT_DIR, 'grpc_health/health/v1/health.proto'))
 
 
 class BuildPy(build_py.build_py):
diff --git a/src/python/grpcio_health_checking/setup.py b/src/python/grpcio_health_checking/setup.py
index 2818c5b81d..d68a7ced8e 100644
--- a/src/python/grpcio_health_checking/setup.py
+++ b/src/python/grpcio_health_checking/setup.py
@@ -63,7 +63,7 @@ _COMMAND_CLASS = {
 
 setuptools.setup(
     name='grpcio_health_checking',
-    version='0.14.0b1',
+    version='0.14.0b0',
     packages=list(_PACKAGES),
     package_dir=_PACKAGE_DIRECTORIES,
     install_requires=_INSTALL_REQUIRES,
-- 
GitLab


From c3eb64980f9cfd907c30c25853a45124138ae88d Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Thu, 5 May 2016 16:07:33 -0700
Subject: [PATCH 410/525] node: fix math server minor bug

---
 src/node/test/math/math_server.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/node/test/math/math_server.js b/src/node/test/math/math_server.js
index fa05ed0165..5e3d1dd864 100644
--- a/src/node/test/math/math_server.js
+++ b/src/node/test/math/math_server.js
@@ -68,7 +68,7 @@ function mathDiv(call, cb) {
 function mathFib(stream) {
   // Here, call is a standard writable Node object Stream
   var previous = 0, current = 1;
-  for (var i = 0; i < stream.request.limit; i++) {
+  for (var i = 0; i < stream.request.getLimit(); i++) {
     var response = new math.Num();
     response.setNum(current);
     stream.write(response);
-- 
GitLab


From 55643fee6b1c02277837b187d2ea706e86d9c315 Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Tue, 3 May 2016 15:50:07 -0700
Subject: [PATCH 411/525] php: stress test client

---
 src/php/tests/interop/interop_client.php | 249 ++++++++++++-----------
 src/php/tests/interop/metrics_client.php |  17 ++
 src/php/tests/interop/stress_client.php  |  83 ++++++++
 3 files changed, 228 insertions(+), 121 deletions(-)
 create mode 100644 src/php/tests/interop/metrics_client.php
 create mode 100644 src/php/tests/interop/stress_client.php

diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php
index aebf80f6bf..965a543b10 100755
--- a/src/php/tests/interop/interop_client.php
+++ b/src/php/tests/interop/interop_client.php
@@ -388,141 +388,148 @@ function timeoutOnSleepingServer($stub)
              'Call status was not DEADLINE_EXCEEDED');
 }
 
-$args = getopt('', ['server_host:', 'server_port:', 'test_case:',
-                    'use_tls::', 'use_test_ca::',
-                    'server_host_override:', 'oauth_scope:',
-                    'default_service_account:', ]);
-if (!array_key_exists('server_host', $args)) {
-    throw new Exception('Missing argument: --server_host is required');
-}
-if (!array_key_exists('server_port', $args)) {
-    throw new Exception('Missing argument: --server_port is required');
-}
-if (!array_key_exists('test_case', $args)) {
-    throw new Exception('Missing argument: --test_case is required');
-}
-
-if ($args['server_port'] == 443) {
-    $server_address = $args['server_host'];
-} else {
-    $server_address = $args['server_host'].':'.$args['server_port'];
-}
+function interop_main($args)
+{
+    if (!array_key_exists('server_host', $args)) {
+        throw new Exception('Missing argument: --server_host is required');
+    }
+    if (!array_key_exists('server_port', $args)) {
+        throw new Exception('Missing argument: --server_port is required');
+    }
+    if (!array_key_exists('test_case', $args)) {
+        throw new Exception('Missing argument: --test_case is required');
+    }
 
-$test_case = $args['test_case'];
+    if ($args['server_port'] == 443) {
+        $server_address = $args['server_host'];
+    } else {
+        $server_address = $args['server_host'].':'.$args['server_port'];
+    }
 
-$host_override = 'foo.test.google.fr';
-if (array_key_exists('server_host_override', $args)) {
-    $host_override = $args['server_host_override'];
-}
+    $test_case = $args['test_case'];
 
-$use_tls = false;
-if (array_key_exists('use_tls', $args) &&
-    $args['use_tls'] != 'false') {
-    $use_tls = true;
-}
+    $host_override = 'foo.test.google.fr';
+    if (array_key_exists('server_host_override', $args)) {
+        $host_override = $args['server_host_override'];
+    }
 
-$use_test_ca = false;
-if (array_key_exists('use_test_ca', $args) &&
-    $args['use_test_ca'] != 'false') {
-    $use_test_ca = true;
-}
+    $use_tls = false;
+    if (array_key_exists('use_tls', $args) &&
+        $args['use_tls'] != 'false') {
+        $use_tls = true;
+    }
 
-$opts = [];
+    $use_test_ca = false;
+    if (array_key_exists('use_test_ca', $args) &&
+        $args['use_test_ca'] != 'false') {
+        $use_test_ca = true;
+    }
 
-if ($use_tls) {
-    if ($use_test_ca) {
-        $ssl_credentials = Grpc\ChannelCredentials::createSsl(
-            file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
+    $opts = [];
+
+    if ($use_tls) {
+        if ($use_test_ca) {
+            $ssl_credentials = Grpc\ChannelCredentials::createSsl(
+                file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
+        } else {
+            $ssl_credentials = Grpc\ChannelCredentials::createSsl();
+        }
+        $opts['credentials'] = $ssl_credentials;
+        $opts['grpc.ssl_target_name_override'] = $host_override;
     } else {
-        $ssl_credentials = Grpc\ChannelCredentials::createSsl();
+        $opts['credentials'] = Grpc\ChannelCredentials::createInsecure();
     }
-    $opts['credentials'] = $ssl_credentials;
-    $opts['grpc.ssl_target_name_override'] = $host_override;
-} else {
-    $opts['credentials'] = Grpc\ChannelCredentials::createInsecure();
-}
 
-if (in_array($test_case, ['service_account_creds',
-    'compute_engine_creds', 'jwt_token_creds', ])) {
-    if ($test_case == 'jwt_token_creds') {
-        $auth_credentials = ApplicationDefaultCredentials::getCredentials();
-    } else {
+    if (in_array($test_case, ['service_account_creds',
+                              'compute_engine_creds', 'jwt_token_creds', ])) {
+        if ($test_case == 'jwt_token_creds') {
+            $auth_credentials = ApplicationDefaultCredentials::getCredentials();
+        } else {
+            $auth_credentials = ApplicationDefaultCredentials::getCredentials(
+                $args['oauth_scope']
+            );
+        }
+        $opts['update_metadata'] = $auth_credentials->getUpdateMetadataFunc();
+    }
+
+    if ($test_case == 'oauth2_auth_token') {
         $auth_credentials = ApplicationDefaultCredentials::getCredentials(
             $args['oauth_scope']
         );
+        $token = $auth_credentials->fetchAuthToken();
+        $update_metadata =
+            function ($metadata,
+                      $authUri = null,
+                      ClientInterface $client = null) use ($token) {
+                $metadata_copy = $metadata;
+                $metadata_copy[CredentialsLoader::AUTH_METADATA_KEY] =
+                    [sprintf('%s %s',
+                             $token['token_type'],
+                             $token['access_token'])];
+
+                return $metadata_copy;
+            };
+        $opts['update_metadata'] = $update_metadata;
     }
-    $opts['update_metadata'] = $auth_credentials->getUpdateMetadataFunc();
-}
 
-if ($test_case == 'oauth2_auth_token') {
-    $auth_credentials = ApplicationDefaultCredentials::getCredentials(
-        $args['oauth_scope']
-    );
-    $token = $auth_credentials->fetchAuthToken();
-    $update_metadata =
-        function ($metadata,
-                  $authUri = null,
-                  ClientInterface $client = null) use ($token) {
-            $metadata_copy = $metadata;
-            $metadata_copy[CredentialsLoader::AUTH_METADATA_KEY] =
-                [sprintf('%s %s',
-                         $token['token_type'],
-                         $token['access_token'])];
-
-            return $metadata_copy;
-        };
-    $opts['update_metadata'] = $update_metadata;
+    $stub = new grpc\testing\TestServiceClient($server_address, $opts);
+
+    echo "Connecting to $server_address\n";
+    echo "Running test case $test_case\n";
+
+    switch ($test_case) {
+        case 'empty_unary':
+            emptyUnary($stub);
+            break;
+        case 'large_unary':
+            largeUnary($stub);
+            break;
+        case 'client_streaming':
+            clientStreaming($stub);
+            break;
+        case 'server_streaming':
+            serverStreaming($stub);
+            break;
+        case 'ping_pong':
+            pingPong($stub);
+            break;
+        case 'empty_stream':
+            emptyStream($stub);
+            break;
+        case 'cancel_after_begin':
+            cancelAfterBegin($stub);
+            break;
+        case 'cancel_after_first_response':
+            cancelAfterFirstResponse($stub);
+            break;
+        case 'timeout_on_sleeping_server':
+            timeoutOnSleepingServer($stub);
+            break;
+        case 'service_account_creds':
+            serviceAccountCreds($stub, $args);
+            break;
+        case 'compute_engine_creds':
+            computeEngineCreds($stub, $args);
+            break;
+        case 'jwt_token_creds':
+            jwtTokenCreds($stub, $args);
+            break;
+        case 'oauth2_auth_token':
+            oauth2AuthToken($stub, $args);
+            break;
+        case 'per_rpc_creds':
+            perRpcCreds($stub, $args);
+            break;
+        default:
+            echo "Unsupported test case $test_case\n";
+            exit(1);
+    }
 }
 
-$stub = new grpc\testing\TestServiceClient($server_address, $opts);
-
-echo "Connecting to $server_address\n";
-echo "Running test case $test_case\n";
-
-switch ($test_case) {
-    case 'empty_unary':
-        emptyUnary($stub);
-        break;
-    case 'large_unary':
-        largeUnary($stub);
-        break;
-    case 'client_streaming':
-        clientStreaming($stub);
-        break;
-    case 'server_streaming':
-        serverStreaming($stub);
-        break;
-    case 'ping_pong':
-        pingPong($stub);
-        break;
-    case 'empty_stream':
-        emptyStream($stub);
-        break;
-    case 'cancel_after_begin':
-        cancelAfterBegin($stub);
-        break;
-    case 'cancel_after_first_response':
-        cancelAfterFirstResponse($stub);
-        break;
-    case 'timeout_on_sleeping_server':
-        timeoutOnSleepingServer($stub);
-        break;
-    case 'service_account_creds':
-        serviceAccountCreds($stub, $args);
-        break;
-    case 'compute_engine_creds':
-        computeEngineCreds($stub, $args);
-        break;
-    case 'jwt_token_creds':
-        jwtTokenCreds($stub, $args);
-        break;
-    case 'oauth2_auth_token':
-        oauth2AuthToken($stub, $args);
-        break;
-    case 'per_rpc_creds':
-        perRpcCreds($stub, $args);
-        break;
-    default:
-        echo "Unsupported test case $test_case\n";
-        exit(1);
+if (isset($_SERVER['PHP_SELF']) && preg_match('/interop_client/', $_SERVER['PHP_SELF'])) {
+    $args = getopt('', ['server_host:', 'server_port:', 'test_case:',
+                        'use_tls::', 'use_test_ca::',
+                        'server_host_override:', 'oauth_scope:',
+                        'default_service_account:', ]);
+    interop_main($args);
 }
diff --git a/src/php/tests/interop/metrics_client.php b/src/php/tests/interop/metrics_client.php
new file mode 100644
index 0000000000..404e5e191b
--- /dev/null
+++ b/src/php/tests/interop/metrics_client.php
@@ -0,0 +1,17 @@
+<?php
+
+$args = getopt('', ['metric_server_address:', 'total_only::']);
+$parts = explode(':', $args['metric_server_address']);
+$server_host = $parts[0];
+$server_port = (count($parts) == 2) ? $parts[1] : '';
+
+$socket = socket_create(AF_INET, SOCK_STREAM, 0);
+if (@!socket_connect($socket, $server_host, $server_port)) {
+  echo "Cannot connect to merics server...\n";
+  exit(1);
+}
+socket_write($socket, 'qps');
+while ($out = socket_read($socket, 1024)) {
+  echo "$out\n";
+}
+socket_close($socket);
diff --git a/src/php/tests/interop/stress_client.php b/src/php/tests/interop/stress_client.php
new file mode 100644
index 0000000000..f0e1d340f7
--- /dev/null
+++ b/src/php/tests/interop/stress_client.php
@@ -0,0 +1,83 @@
+<?php
+
+include_once('interop_client.php');
+
+function stress_main($args) {
+  mt_srand();
+  set_time_limit(0);
+
+  // open socket to listen as metrics server
+  $socket = socket_create(AF_INET, SOCK_STREAM, 0);
+  socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
+  if (@!socket_bind($socket, 'localhost', $args['metrics_port'])) {
+    echo "Cannot create socket for metrics server...\n";
+    exit(1);
+  }
+  socket_listen($socket);
+  socket_set_nonblock($socket);
+
+  $start_time = microtime(true);
+  $count = 0;
+  $deadline = $args['test_duration_secs'] ?
+              ($start_time + $args['test_duration_secs']) : false;
+  $num_test_cases = count($args['test_cases']);
+
+  while (true) {
+    $current_time = microtime(true);
+    if ($deadline && $current_time > $deadline) {
+      break;
+    }
+    if ($client_connection = socket_accept($socket)) {
+      // there is an incoming request, respond with qps metrics
+      $input = socket_read($client_connection, 1024);
+      $qps = round($count / ($current_time - $start_time));
+      socket_write($client_connection, "qps: $qps");
+      socket_close($client_connection);
+    } else {
+      // do actual work, run one interop test case
+      $args['test_case'] =
+          $args['test_cases'][mt_rand(0, $num_test_cases - 1)];
+      @interop_main($args);
+      $count++;
+    }
+  }
+  socket_close($socket);
+  echo "Number of interop tests run in $args[test_duration_secs] seconds: $count.\n";
+}
+
+// process command line arguments
+$raw_args = getopt('',
+  ['server_addresses::',
+   'test_cases:',
+   'metrics_port::',
+   'test_duration_secs::',
+   'num_channels_per_server::',
+   'num_stubs_per_channel::']);
+
+$args = [];
+
+if (empty($raw_args['server_addresses'])) {
+  $args['server_host'] = 'localhost';
+  $args['server_port'] = '8080';
+} else {
+  $parts = explode(':', $raw_args['server_addresses']);
+  $args['server_host'] = $parts[0];
+  $args['server_port'] = (count($parts) == 2) ? $parts[1] : '';
+}
+
+$args['metrics_port'] = empty($raw_args['metrics_port']) ?
+  '8081' : $args['metrics_port'];
+
+$args['test_duration_secs'] = empty($raw_args['test_duration_secs']) ||
+  $raw_args['test_duration_secs'] == -1 ?
+  false : $raw_args['test_duration_secs'];
+
+$test_cases = [];
+$test_case_strs = explode(',', $raw_args['test_cases']);
+foreach ($test_case_strs as $test_case_str) {
+  $parts = explode(':', $test_case_str);
+  $test_cases = array_merge($test_cases, array_fill(0, $parts[1], $parts[0]));
+}
+$args['test_cases'] = $test_cases;
+
+stress_main($args);
-- 
GitLab


From c1bb55eef7343655cd23051d1e1b348c99756b40 Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Wed, 4 May 2016 09:53:09 -0700
Subject: [PATCH 412/525] reuse interop client stub

---
 src/php/tests/interop/interop_client.php | 14 ++++++++++++--
 src/php/tests/interop/metrics_client.php |  4 ++--
 src/php/tests/interop/stress_client.php  |  3 ++-
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php
index 965a543b10..830df13337 100755
--- a/src/php/tests/interop/interop_client.php
+++ b/src/php/tests/interop/interop_client.php
@@ -388,7 +388,7 @@ function timeoutOnSleepingServer($stub)
              'Call status was not DEADLINE_EXCEEDED');
 }
 
-function interop_main($args)
+function _makeStub($args)
 {
     if (!array_key_exists('server_host', $args)) {
         throw new Exception('Missing argument: --server_host is required');
@@ -474,7 +474,15 @@ function interop_main($args)
 
     $stub = new grpc\testing\TestServiceClient($server_address, $opts);
 
-    echo "Connecting to $server_address\n";
+    return $stub;
+}
+
+function interop_main($args, $stub = false) {
+    if (!$stub) {
+        $stub = _makeStub($args);
+    }
+
+    $test_case = $args['test_case'];
     echo "Running test case $test_case\n";
 
     switch ($test_case) {
@@ -524,6 +532,8 @@ function interop_main($args)
             echo "Unsupported test case $test_case\n";
             exit(1);
     }
+
+    return $stub;
 }
 
 if (isset($_SERVER['PHP_SELF']) && preg_match('/interop_client/', $_SERVER['PHP_SELF'])) {
diff --git a/src/php/tests/interop/metrics_client.php b/src/php/tests/interop/metrics_client.php
index 404e5e191b..7f5ba5b3cc 100644
--- a/src/php/tests/interop/metrics_client.php
+++ b/src/php/tests/interop/metrics_client.php
@@ -1,7 +1,7 @@
 <?php
 
-$args = getopt('', ['metric_server_address:', 'total_only::']);
-$parts = explode(':', $args['metric_server_address']);
+$args = getopt('', ['metrics_server_address:', 'total_only::']);
+$parts = explode(':', $args['metrics_server_address']);
 $server_host = $parts[0];
 $server_port = (count($parts) == 2) ? $parts[1] : '';
 
diff --git a/src/php/tests/interop/stress_client.php b/src/php/tests/interop/stress_client.php
index f0e1d340f7..c2b4020f5c 100644
--- a/src/php/tests/interop/stress_client.php
+++ b/src/php/tests/interop/stress_client.php
@@ -21,6 +21,7 @@ function stress_main($args) {
   $deadline = $args['test_duration_secs'] ?
               ($start_time + $args['test_duration_secs']) : false;
   $num_test_cases = count($args['test_cases']);
+  $stub = false;
 
   while (true) {
     $current_time = microtime(true);
@@ -37,7 +38,7 @@ function stress_main($args) {
       // do actual work, run one interop test case
       $args['test_case'] =
           $args['test_cases'][mt_rand(0, $num_test_cases - 1)];
-      @interop_main($args);
+      $stub = @interop_main($args, $stub);
       $count++;
     }
   }
-- 
GitLab


From 9074efd410a5e024a84481f8a478de330370512f Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Thu, 5 May 2016 16:38:15 -0700
Subject: [PATCH 413/525] fix copyright

---
 src/php/tests/interop/interop_client.php |  2 +-
 src/php/tests/interop/metrics_client.php | 32 ++++++++++++++++++++++++
 src/php/tests/interop/stress_client.php  | 32 ++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 1 deletion(-)

diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php
index 830df13337..565bfce74f 100755
--- a/src/php/tests/interop/interop_client.php
+++ b/src/php/tests/interop/interop_client.php
@@ -1,7 +1,7 @@
 <?php
 /*
  *
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/src/php/tests/interop/metrics_client.php b/src/php/tests/interop/metrics_client.php
index 7f5ba5b3cc..46f4212f77 100644
--- a/src/php/tests/interop/metrics_client.php
+++ b/src/php/tests/interop/metrics_client.php
@@ -1,4 +1,36 @@
 <?php
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
 
 $args = getopt('', ['metrics_server_address:', 'total_only::']);
 $parts = explode(':', $args['metrics_server_address']);
diff --git a/src/php/tests/interop/stress_client.php b/src/php/tests/interop/stress_client.php
index c2b4020f5c..2339f0d105 100644
--- a/src/php/tests/interop/stress_client.php
+++ b/src/php/tests/interop/stress_client.php
@@ -1,4 +1,36 @@
 <?php
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
 
 include_once('interop_client.php');
 
-- 
GitLab


From 4f5b2916cc0953de3118bb1ba191346551483ec5 Mon Sep 17 00:00:00 2001
From: Sree Kuchibhotla <sreek@google.com>
Date: Fri, 6 May 2016 10:48:17 -0700
Subject: [PATCH 414/525] fix clang formatting

---
 test/cpp/interop/interop_client.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc
index ca89d05594..e9d95dc8d0 100644
--- a/test/cpp/interop/interop_client.cc
+++ b/test/cpp/interop/interop_client.cc
@@ -153,7 +153,7 @@ bool InteropClient::AssertStatusOk(const Status& s) {
 }
 
 bool InteropClient::AssertStatusCode(const Status& s,
-                                            StatusCode expected_code) {
+                                     StatusCode expected_code) {
   if (s.error_code() == expected_code) {
     return true;
   }
-- 
GitLab


From 6bbe369434f466e4694243305485e503eaf3ea02 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 6 May 2016 11:43:22 -0700
Subject: [PATCH 415/525] Make Ruby library terminate on Ctrl+C on client and
 server

---
 src/ruby/ext/grpc/rb_grpc.c              |  2 +
 src/ruby/ext/grpc/rb_signal.c            | 66 +++++++++++++++++++++++
 src/ruby/ext/grpc/rb_signal.h            | 39 ++++++++++++++
 src/ruby/lib/grpc.rb                     |  3 ++
 src/ruby/lib/grpc/generic/active_call.rb |  6 +++
 src/ruby/lib/grpc/generic/rpc_server.rb  | 57 +++-----------------
 src/ruby/lib/grpc/signals.rb             | 69 ++++++++++++++++++++++++
 7 files changed, 191 insertions(+), 51 deletions(-)
 create mode 100644 src/ruby/ext/grpc/rb_signal.c
 create mode 100644 src/ruby/ext/grpc/rb_signal.h
 create mode 100644 src/ruby/lib/grpc/signals.rb

diff --git a/src/ruby/ext/grpc/rb_grpc.c b/src/ruby/ext/grpc/rb_grpc.c
index acb47b0055..9145c52ef8 100644
--- a/src/ruby/ext/grpc/rb_grpc.c
+++ b/src/ruby/ext/grpc/rb_grpc.c
@@ -50,6 +50,7 @@
 #include "rb_loader.h"
 #include "rb_server.h"
 #include "rb_server_credentials.h"
+#include "rb_signal.h"
 
 static VALUE grpc_rb_cTimeVal = Qnil;
 
@@ -332,6 +333,7 @@ void Init_grpc_c() {
   Init_grpc_channel_credentials();
   Init_grpc_server();
   Init_grpc_server_credentials();
+  Init_grpc_signals();
   Init_grpc_status_codes();
   Init_grpc_time_consts();
 }
diff --git a/src/ruby/ext/grpc/rb_signal.c b/src/ruby/ext/grpc/rb_signal.c
new file mode 100644
index 0000000000..dd60b0f251
--- /dev/null
+++ b/src/ruby/ext/grpc/rb_signal.c
@@ -0,0 +1,66 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <ruby/ruby.h>
+#include <signal.h>
+#include <stdbool.h>
+
+#include <grpc/support/log.h>
+
+#include "rb_grpc.h"
+
+static void (*old_sigint_handler)(int);
+static void (*old_sigterm_handler)(int);
+
+static volatile bool signal_received = false;
+
+static void handle_signal(int signum) {
+  signal_received = true;
+  if (signum == SIGINT) {
+    old_sigint_handler(signum);
+  } else if (signum == SIGTERM) {
+    old_sigterm_handler(signum);
+  }
+}
+
+static VALUE grpc_rb_signal_received(VALUE self) {
+  (void)self;
+  return signal_received ? Qtrue : Qfalse;
+}
+
+void Init_grpc_signals() {
+  old_sigint_handler = signal(SIGINT, handle_signal);
+  old_sigterm_handler = signal(SIGTERM, handle_signal);
+  rb_define_singleton_method(grpc_rb_mGrpcCore, "signal_received?",
+                             grpc_rb_signal_received, 0);
+}
diff --git a/src/ruby/ext/grpc/rb_signal.h b/src/ruby/ext/grpc/rb_signal.h
new file mode 100644
index 0000000000..07e49c0a8b
--- /dev/null
+++ b/src/ruby/ext/grpc/rb_signal.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_RB_SIGNAL_H_
+#define GRPC_RB_SIGNAL_H_
+
+void Init_grpc_signals();
+
+#endif  /* GRPC_RB_SIGNAL_H_ */
diff --git a/src/ruby/lib/grpc.rb b/src/ruby/lib/grpc.rb
index 79fa705b1c..7c9aae30e9 100644
--- a/src/ruby/lib/grpc.rb
+++ b/src/ruby/lib/grpc.rb
@@ -33,6 +33,7 @@ require_relative 'grpc/errors'
 require_relative 'grpc/grpc'
 require_relative 'grpc/logconfig'
 require_relative 'grpc/notifier'
+require_relative 'grpc/signals'
 require_relative 'grpc/version'
 require_relative 'grpc/core/time_consts'
 require_relative 'grpc/generic/active_call'
@@ -47,3 +48,5 @@ begin
 ensure
   file.close
 end
+
+GRPC::Signals.wait_for_signals
diff --git a/src/ruby/lib/grpc/generic/active_call.rb b/src/ruby/lib/grpc/generic/active_call.rb
index ecf3cc3293..fd20a86144 100644
--- a/src/ruby/lib/grpc/generic/active_call.rb
+++ b/src/ruby/lib/grpc/generic/active_call.rb
@@ -28,7 +28,9 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 require 'forwardable'
+require 'weakref'
 require_relative 'bidi_call'
+require_relative '../signals'
 
 class Struct
   # BatchResult is the struct returned by calls to call#start_batch.
@@ -121,6 +123,10 @@ module GRPC
       @unmarshal = unmarshal
       @metadata_tag = metadata_tag
       @op_notifier = nil
+      weak_self = WeakRef.new(self)
+      remove_handler = GRPC::Signals.register_handler(&weak_self
+                                                        .method(:cancel))
+      ObjectSpace.define_finalizer(self, remove_handler)
     end
 
     # output_metadata are provides access to hash that can be used to
diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb
index a0f4071adc..81082d13bf 100644
--- a/src/ruby/lib/grpc/generic/rpc_server.rb
+++ b/src/ruby/lib/grpc/generic/rpc_server.rb
@@ -28,46 +28,13 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 require_relative '../grpc'
+require_relative '../signals'
 require_relative 'active_call'
 require_relative 'service'
 require 'thread'
 
-# A global that contains signals the gRPC servers should respond to.
-$grpc_signals = []
-
 # GRPC contains the General RPC module.
 module GRPC
-  # Handles the signals in $grpc_signals.
-  #
-  # @return false if the server should exit, true if not.
-  def handle_signals
-    loop do
-      sig = $grpc_signals.shift
-      case sig
-      when 'INT'
-        return false
-      when 'TERM'
-        return false
-      when nil
-        return true
-      end
-    end
-    true
-  end
-  module_function :handle_signals
-
-  # Sets up a signal handler that adds signals to the signal handling global.
-  #
-  # Signal handlers should do as little as humanly possible.
-  # Here, they just add themselves to $grpc_signals
-  #
-  # RpcServer (and later other parts of gRPC) monitors the signals
-  # $grpc_signals in its own non-signal context.
-  def trap_signals
-    %w(INT TERM).each { |sig| trap(sig) { $grpc_signals << sig } }
-  end
-  module_function :trap_signals
-
   # Pool is a simple thread pool.
   class Pool
     # Default keep alive period is 1s
@@ -328,23 +295,6 @@ module GRPC
       end
     end
 
-    # Runs the server in its own thread, then waits for signal INT or TERM on
-    # the current thread to terminate it.
-    def run_till_terminated
-      GRPC.trap_signals
-      t = Thread.new do
-        run
-      end
-      t.abort_on_exception = true
-      wait_till_running
-      until running_state == :stopped
-        sleep SIGNAL_CHECK_PERIOD
-        break unless GRPC.handle_signals
-      end
-      stop
-      t.join
-    end
-
     # handle registration of classes
     #
     # service is either a class that includes GRPC::GenericService and whose
@@ -403,9 +353,14 @@ module GRPC
         transition_running_state(:running)
         @run_cond.broadcast
       end
+      remove_signal_handler = GRPC::Signals.register_handler { stop }
       loop_handle_server_calls
+      # Remove signal handler when server stops
+      remove_signal_handler.call
     end
 
+    alias_method :run_till_terminated, :run
+
     # Sends RESOURCE_EXHAUSTED if there are too many unprocessed jobs
     def available?(an_rpc)
       jobs_count, max = @pool.jobs_waiting, @max_waiting_requests
diff --git a/src/ruby/lib/grpc/signals.rb b/src/ruby/lib/grpc/signals.rb
new file mode 100644
index 0000000000..7d2ec25dcb
--- /dev/null
+++ b/src/ruby/lib/grpc/signals.rb
@@ -0,0 +1,69 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'thread'
+require_relative 'grpc'
+
+# GRPC contains the General RPC module.
+module GRPC
+  # Signals contains gRPC functions related to signal handling
+  module Signals
+    @interpreter_exiting = false
+    @signal_handlers = []
+    @handlers_mutex = Mutex.new
+
+    def register_handler(&handler)
+      @handlers_mutex.synchronize do
+        @signal_handlers.push(handler)
+        handler.call if @exit_signal_received
+      end
+      # Returns a function to remove the handler
+      lambda do
+        @handlers_mutex.synchronize { @signal_handlers.delete(handler) }
+      end
+    end
+    module_function :register_handler
+
+    def wait_for_signals
+      t = Thread.new do
+        sleep 1 until GRPC::Core.signal_received? || @interpreter_exiting
+        unless @interpreter_exiting
+          @handlers_mutex.synchronize do
+            @signal_handlers.each(&:call)
+          end
+        end
+      end
+      at_exit do
+        @interpreter_exiting = true
+        t.join
+      end
+    end
+    module_function :wait_for_signals
+  end
+end
-- 
GitLab


From f6cedf82c30c9329e06d8b93c6ef28b7f2ad7e3a Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Thu, 5 May 2016 16:50:49 -0700
Subject: [PATCH 416/525] Made complex directories for python protoc test

---
 .../protoc_plugin/beta_python_plugin_test.py  | 295 +++++++++---------
 .../protos/payload/test_payload.proto         |  51 +++
 .../protos/requests/r/test_requests.proto     |  77 +++++
 .../protos/responses/test_responses.proto     |  47 +++
 .../service/test_service.proto}               |  85 +----
 5 files changed, 333 insertions(+), 222 deletions(-)
 create mode 100644 src/python/grpcio/tests/protoc_plugin/protos/payload/test_payload.proto
 create mode 100644 src/python/grpcio/tests/protoc_plugin/protos/requests/r/test_requests.proto
 create mode 100644 src/python/grpcio/tests/protoc_plugin/protos/responses/test_responses.proto
 rename src/python/grpcio/tests/protoc_plugin/{protoc_plugin_test.proto => protos/service/test_service.proto} (54%)

diff --git a/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py b/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
index 3dc3042e38..7466f88059 100644
--- a/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
+++ b/src/python/grpcio/tests/protoc_plugin/beta_python_plugin_test.py
@@ -59,11 +59,12 @@ STUB_FACTORY_IDENTIFIER = 'beta_create_TestService_stub'
 
 class _ServicerMethods(object):
 
-  def __init__(self, test_pb2):
+  def __init__(self, response_pb2, payload_pb2):
     self._condition = threading.Condition()
     self._paused = False
     self._fail = False
-    self._test_pb2 = test_pb2
+    self._response_pb2 = response_pb2
+    self._payload_pb2 = payload_pb2
 
   @contextlib.contextmanager
   def pause(self):  # pylint: disable=invalid-name
@@ -90,22 +91,22 @@ class _ServicerMethods(object):
         self._condition.wait()
 
   def UnaryCall(self, request, unused_rpc_context):
-    response = self._test_pb2.SimpleResponse()
-    response.payload.payload_type = self._test_pb2.COMPRESSABLE
+    response = self._response_pb2.SimpleResponse()
+    response.payload.payload_type = self._payload_pb2.COMPRESSABLE
     response.payload.payload_compressable = 'a' * request.response_size
     self._control()
     return response
 
   def StreamingOutputCall(self, request, unused_rpc_context):
     for parameter in request.response_parameters:
-      response = self._test_pb2.StreamingOutputCallResponse()
-      response.payload.payload_type = self._test_pb2.COMPRESSABLE
+      response = self._response_pb2.StreamingOutputCallResponse()
+      response.payload.payload_type = self._payload_pb2.COMPRESSABLE
       response.payload.payload_compressable = 'a' * parameter.size
       self._control()
       yield response
 
   def StreamingInputCall(self, request_iter, unused_rpc_context):
-    response = self._test_pb2.StreamingInputCallResponse()
+    response = self._response_pb2.StreamingInputCallResponse()
     aggregated_payload_size = 0
     for request in request_iter:
       aggregated_payload_size += len(request.payload.payload_compressable)
@@ -116,8 +117,8 @@ class _ServicerMethods(object):
   def FullDuplexCall(self, request_iter, unused_rpc_context):
     for request in request_iter:
       for parameter in request.response_parameters:
-        response = self._test_pb2.StreamingOutputCallResponse()
-        response.payload.payload_type = self._test_pb2.COMPRESSABLE
+        response = self._response_pb2.StreamingOutputCallResponse()
+        response.payload.payload_type = self._payload_pb2.COMPRESSABLE
         response.payload.payload_compressable = 'a' * parameter.size
         self._control()
         yield response
@@ -126,8 +127,8 @@ class _ServicerMethods(object):
     responses = []
     for request in request_iter:
       for parameter in request.response_parameters:
-        response = self._test_pb2.StreamingOutputCallResponse()
-        response.payload.payload_type = self._test_pb2.COMPRESSABLE
+        response = self._response_pb2.StreamingOutputCallResponse()
+        response.payload.payload_type = self._payload_pb2.COMPRESSABLE
         response.payload.payload_compressable = 'a' * parameter.size
         self._control()
         responses.append(response)
@@ -136,23 +137,25 @@ class _ServicerMethods(object):
 
 
 @contextlib.contextmanager
-def _CreateService(test_pb2):
+def _CreateService(service_pb2, response_pb2, payload_pb2):
   """Provides a servicer backend and a stub.
 
   The servicer is just the implementation of the actual servicer passed to the
   face player of the python RPC implementation; the two are detached.
 
   Args:
-    test_pb2: The test_pb2 module generated by this test.
+    service_pb2: The service_pb2 module generated by this test.
+    response_pb2: The response_pb2 module generated by this test
+    payload_pb2: The payload_pb2 module generated by this test
 
   Yields:
     A (servicer_methods, stub) pair where servicer_methods is the back-end of
       the service bound to the stub and and stub is the stub on which to invoke
       RPCs.
   """
-  servicer_methods = _ServicerMethods(test_pb2)
+  servicer_methods = _ServicerMethods(response_pb2, payload_pb2)
 
-  class Servicer(getattr(test_pb2, SERVICER_IDENTIFIER)):
+  class Servicer(getattr(service_pb2, SERVICER_IDENTIFIER)):
 
     def UnaryCall(self, request, context):
       return servicer_methods.UnaryCall(request, context)
@@ -170,55 +173,52 @@ def _CreateService(test_pb2):
       return servicer_methods.HalfDuplexCall(request_iter, context)
 
   servicer = Servicer()
-  server = getattr(test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer)
+  server = getattr(service_pb2, SERVER_FACTORY_IDENTIFIER)(servicer)
   port = server.add_insecure_port('[::]:0')
   server.start()
   channel = implementations.insecure_channel('localhost', port)
-  stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)(channel)
-  yield servicer_methods, stub
+  stub = getattr(service_pb2, STUB_FACTORY_IDENTIFIER)(channel)
+  yield (servicer_methods, stub)
   server.stop(0)
 
 
 @contextlib.contextmanager
-def _CreateIncompleteService(test_pb2):
+def _CreateIncompleteService(service_pb2):
   """Provides a servicer backend that fails to implement methods and its stub.
 
   The servicer is just the implementation of the actual servicer passed to the
   face player of the python RPC implementation; the two are detached.
-
   Args:
-    test_pb2: The test_pb2 module generated by this test.
-
+    service_pb2: The service_pb2 module generated by this test.
   Yields:
     A (servicer_methods, stub) pair where servicer_methods is the back-end of
       the service bound to the stub and and stub is the stub on which to invoke
       RPCs.
   """
-  servicer_methods = _ServicerMethods(test_pb2)
 
-  class Servicer(getattr(test_pb2, SERVICER_IDENTIFIER)):
+  class Servicer(getattr(service_pb2, SERVICER_IDENTIFIER)):
     pass
 
   servicer = Servicer()
-  server = getattr(test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer)
+  server = getattr(service_pb2, SERVER_FACTORY_IDENTIFIER)(servicer)
   port = server.add_insecure_port('[::]:0')
   server.start()
   channel = implementations.insecure_channel('localhost', port)
-  stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)(channel)
-  yield servicer_methods, stub
+  stub = getattr(service_pb2, STUB_FACTORY_IDENTIFIER)(channel)
+  yield None, stub
   server.stop(0)
 
 
-def _streaming_input_request_iterator(test_pb2):
+def _streaming_input_request_iterator(request_pb2, payload_pb2):
   for _ in range(3):
-    request = test_pb2.StreamingInputCallRequest()
-    request.payload.payload_type = test_pb2.COMPRESSABLE
+    request = request_pb2.StreamingInputCallRequest()
+    request.payload.payload_type = payload_pb2.COMPRESSABLE
     request.payload.payload_compressable = 'a'
     yield request
 
 
-def _streaming_output_request(test_pb2):
-  request = test_pb2.StreamingOutputCallRequest()
+def _streaming_output_request(request_pb2):
+  request = request_pb2.StreamingOutputCallRequest()
   sizes = [1, 2, 3]
   request.response_parameters.add(size=sizes[0], interval_us=0)
   request.response_parameters.add(size=sizes[1], interval_us=0)
@@ -226,11 +226,11 @@ def _streaming_output_request(test_pb2):
   return request
 
 
-def _full_duplex_request_iterator(test_pb2):
-  request = test_pb2.StreamingOutputCallRequest()
+def _full_duplex_request_iterator(request_pb2):
+  request = request_pb2.StreamingOutputCallRequest()
   request.response_parameters.add(size=1, interval_us=0)
   yield request
-  request = test_pb2.StreamingOutputCallRequest()
+  request = request_pb2.StreamingOutputCallRequest()
   request.response_parameters.add(size=2, interval_us=0)
   request.response_parameters.add(size=3, interval_us=0)
   yield request
@@ -250,8 +250,6 @@ class PythonPluginTest(unittest.TestCase):
     protoc_command = 'protoc'
     protoc_plugin_filename = distutils.spawn.find_executable(
         'grpc_python_plugin')
-    test_proto_filename = pkg_resources.resource_filename(
-        'tests.protoc_plugin', 'protoc_plugin_test.proto')
     if not os.path.isfile(protoc_command):
       # Assume that if we haven't built protoc that it's on the system.
       protoc_command = 'protoc'
@@ -259,19 +257,44 @@ class PythonPluginTest(unittest.TestCase):
     # Ensure that the output directory exists.
     self.outdir = tempfile.mkdtemp()
 
+    # Find all proto files
+    paths = []
+    root_dir = os.path.dirname(os.path.realpath(__file__))
+    proto_dir = os.path.join(root_dir, 'protos')
+    for walk_root, _, filenames in os.walk(proto_dir):
+      for filename in filenames:
+        if filename.endswith('.proto'):
+          path = os.path.join(walk_root, filename)
+          paths.append(path)
+
     # Invoke protoc with the plugin.
     cmd = [
         protoc_command,
         '--plugin=protoc-gen-python-grpc=%s' % protoc_plugin_filename,
-        '-I .',
+        '-I %s' % root_dir,
         '--python_out=%s' % self.outdir,
-        '--python-grpc_out=%s' % self.outdir,
-        os.path.basename(test_proto_filename),
-    ]
+        '--python-grpc_out=%s' % self.outdir
+    ] + paths
     subprocess.check_call(' '.join(cmd), shell=True, env=os.environ,
-                          cwd=os.path.dirname(test_proto_filename))
+                          cwd=os.path.dirname(os.path.realpath(__file__)))
+
+    # Generated proto directories dont include __init__.py, but
+    # these are needed for python package resolution
+    for walk_root, _, _ in os.walk(os.path.join(self.outdir, 'protos')):
+      path = os.path.join(walk_root, '__init__.py')
+      open(path, 'a').close()
+
     sys.path.insert(0, self.outdir)
 
+    import protos.payload.test_payload_pb2 as payload_pb2  # pylint: disable=g-import-not-at-top
+    import protos.requests.r.test_requests_pb2 as request_pb2  # pylint: disable=g-import-not-at-top
+    import protos.responses.test_responses_pb2 as response_pb2  # pylint: disable=g-import-not-at-top
+    import protos.service.test_service_pb2 as service_pb2  # pylint: disable=g-import-not-at-top
+    self._payload_pb2 = payload_pb2
+    self._request_pb2 = request_pb2
+    self._response_pb2 = response_pb2
+    self._service_pb2 = service_pb2
+
   def tearDown(self):
     try:
       shutil.rmtree(self.outdir)
@@ -282,43 +305,40 @@ class PythonPluginTest(unittest.TestCase):
 
   def testImportAttributes(self):
     # check that we can access the generated module and its members.
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    self.assertIsNotNone(getattr(test_pb2, SERVICER_IDENTIFIER, None))
-    self.assertIsNotNone(getattr(test_pb2, STUB_IDENTIFIER, None))
-    self.assertIsNotNone(getattr(test_pb2, SERVER_FACTORY_IDENTIFIER, None))
-    self.assertIsNotNone(getattr(test_pb2, STUB_FACTORY_IDENTIFIER, None))
+    self.assertIsNotNone(
+        getattr(self._service_pb2, SERVICER_IDENTIFIER, None))
+    self.assertIsNotNone(
+        getattr(self._service_pb2, STUB_IDENTIFIER, None))
+    self.assertIsNotNone(
+        getattr(self._service_pb2, SERVER_FACTORY_IDENTIFIER, None))
+    self.assertIsNotNone(
+        getattr(self._service_pb2, STUB_FACTORY_IDENTIFIER, None))
 
   def testUpDown(self):
-    import protoc_plugin_test_pb2 as test_pb2
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (servicer, stub):
-      request = test_pb2.SimpleRequest(response_size=13)
+    with _CreateService(
+        self._service_pb2, self._response_pb2, self._payload_pb2):
+      self._request_pb2.SimpleRequest(response_size=13)
 
   def testIncompleteServicer(self):
-    import protoc_plugin_test_pb2 as test_pb2
-    moves.reload_module(test_pb2)
-    with _CreateIncompleteService(test_pb2) as (servicer, stub):
-      request = test_pb2.SimpleRequest(response_size=13)
+    with _CreateIncompleteService(self._service_pb2) as (_, stub):
+      request = self._request_pb2.SimpleRequest(response_size=13)
       try:
-        response = stub.UnaryCall(request, test_constants.LONG_TIMEOUT)
+        stub.UnaryCall(request, test_constants.LONG_TIMEOUT)
       except face.AbortionError as error:
         self.assertEqual(interfaces.StatusCode.UNIMPLEMENTED, error.code)
 
   def testUnaryCall(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
-      request = test_pb2.SimpleRequest(response_size=13)
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = self._request_pb2.SimpleRequest(response_size=13)
       response = stub.UnaryCall(request, test_constants.LONG_TIMEOUT)
     expected_response = methods.UnaryCall(request, 'not a real context!')
     self.assertEqual(expected_response, response)
 
   def testUnaryCallFuture(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request = test_pb2.SimpleRequest(response_size=13)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = self._request_pb2.SimpleRequest(response_size=13)
       # Check that the call does not block waiting for the server to respond.
       with methods.pause():
         response_future = stub.UnaryCall.future(
@@ -328,10 +348,9 @@ class PythonPluginTest(unittest.TestCase):
     self.assertEqual(expected_response, response)
 
   def testUnaryCallFutureExpired(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
-      request = test_pb2.SimpleRequest(response_size=13)
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = self._request_pb2.SimpleRequest(response_size=13)
       with methods.pause():
         response_future = stub.UnaryCall.future(
             request, test_constants.SHORT_TIMEOUT)
@@ -339,30 +358,27 @@ class PythonPluginTest(unittest.TestCase):
           response_future.result()
 
   def testUnaryCallFutureCancelled(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request = test_pb2.SimpleRequest(response_size=13)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = self._request_pb2.SimpleRequest(response_size=13)
       with methods.pause():
         response_future = stub.UnaryCall.future(request, 1)
         response_future.cancel()
         self.assertTrue(response_future.cancelled())
 
   def testUnaryCallFutureFailed(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request = test_pb2.SimpleRequest(response_size=13)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = self._request_pb2.SimpleRequest(response_size=13)
       with methods.fail():
         response_future = stub.UnaryCall.future(
             request, test_constants.LONG_TIMEOUT)
         self.assertIsNotNone(response_future.exception())
 
   def testStreamingOutputCall(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request = _streaming_output_request(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = _streaming_output_request(self._request_pb2)
       responses = stub.StreamingOutputCall(
           request, test_constants.LONG_TIMEOUT)
       expected_responses = methods.StreamingOutputCall(
@@ -372,10 +388,9 @@ class PythonPluginTest(unittest.TestCase):
         self.assertEqual(expected_response, response)
 
   def testStreamingOutputCallExpired(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request = _streaming_output_request(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = _streaming_output_request(self._request_pb2)
       with methods.pause():
         responses = stub.StreamingOutputCall(
             request, test_constants.SHORT_TIMEOUT)
@@ -383,10 +398,9 @@ class PythonPluginTest(unittest.TestCase):
           list(responses)
 
   def testStreamingOutputCallCancelled(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request = _streaming_output_request(test_pb2)
-    with _CreateService(test_pb2) as (unused_methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = _streaming_output_request(self._request_pb2)
       responses = stub.StreamingOutputCall(
           request, test_constants.LONG_TIMEOUT)
       next(responses)
@@ -395,10 +409,9 @@ class PythonPluginTest(unittest.TestCase):
         next(responses)
 
   def testStreamingOutputCallFailed(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request = _streaming_output_request(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request = _streaming_output_request(self._request_pb2)
       with methods.fail():
         responses = stub.StreamingOutputCall(request, 1)
         self.assertIsNotNone(responses)
@@ -406,36 +419,38 @@ class PythonPluginTest(unittest.TestCase):
           next(responses)
 
   def testStreamingInputCall(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       response = stub.StreamingInputCall(
-          _streaming_input_request_iterator(test_pb2),
+          _streaming_input_request_iterator(
+              self._request_pb2, self._payload_pb2),
           test_constants.LONG_TIMEOUT)
     expected_response = methods.StreamingInputCall(
-        _streaming_input_request_iterator(test_pb2), 'not a real RpcContext!')
+        _streaming_input_request_iterator(self._request_pb2, self._payload_pb2),
+        'not a real RpcContext!')
     self.assertEqual(expected_response, response)
 
   def testStreamingInputCallFuture(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       with methods.pause():
         response_future = stub.StreamingInputCall.future(
-            _streaming_input_request_iterator(test_pb2),
+            _streaming_input_request_iterator(
+                self._request_pb2, self._payload_pb2),
             test_constants.LONG_TIMEOUT)
       response = response_future.result()
     expected_response = methods.StreamingInputCall(
-        _streaming_input_request_iterator(test_pb2), 'not a real RpcContext!')
+        _streaming_input_request_iterator(self._request_pb2, self._payload_pb2),
+        'not a real RpcContext!')
     self.assertEqual(expected_response, response)
 
   def testStreamingInputCallFutureExpired(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       with methods.pause():
         response_future = stub.StreamingInputCall.future(
-            _streaming_input_request_iterator(test_pb2),
+            _streaming_input_request_iterator(
+                self._request_pb2, self._payload_pb2),
             test_constants.SHORT_TIMEOUT)
         with self.assertRaises(face.ExpirationError):
           response_future.result()
@@ -443,12 +458,12 @@ class PythonPluginTest(unittest.TestCase):
             response_future.exception(), face.ExpirationError)
 
   def testStreamingInputCallFutureCancelled(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       with methods.pause():
         response_future = stub.StreamingInputCall.future(
-            _streaming_input_request_iterator(test_pb2),
+            _streaming_input_request_iterator(
+                self._request_pb2, self._payload_pb2),
             test_constants.LONG_TIMEOUT)
         response_future.cancel()
         self.assertTrue(response_future.cancelled())
@@ -456,32 +471,32 @@ class PythonPluginTest(unittest.TestCase):
         response_future.result()
 
   def testStreamingInputCallFutureFailed(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       with methods.fail():
         response_future = stub.StreamingInputCall.future(
-            _streaming_input_request_iterator(test_pb2),
+            _streaming_input_request_iterator(
+                self._request_pb2, self._payload_pb2),
             test_constants.LONG_TIMEOUT)
         self.assertIsNotNone(response_future.exception())
 
   def testFullDuplexCall(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       responses = stub.FullDuplexCall(
-          _full_duplex_request_iterator(test_pb2), test_constants.LONG_TIMEOUT)
+          _full_duplex_request_iterator(self._request_pb2),
+          test_constants.LONG_TIMEOUT)
       expected_responses = methods.FullDuplexCall(
-          _full_duplex_request_iterator(test_pb2), 'not a real RpcContext!')
+          _full_duplex_request_iterator(self._request_pb2),
+          'not a real RpcContext!')
       for expected_response, response in moves.zip_longest(
           expected_responses, responses):
         self.assertEqual(expected_response, response)
 
   def testFullDuplexCallExpired(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request_iterator = _full_duplex_request_iterator(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    request_iterator = _full_duplex_request_iterator(self._request_pb2)
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       with methods.pause():
         responses = stub.FullDuplexCall(
             request_iterator, test_constants.SHORT_TIMEOUT)
@@ -489,10 +504,9 @@ class PythonPluginTest(unittest.TestCase):
           list(responses)
 
   def testFullDuplexCallCancelled(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
-      request_iterator = _full_duplex_request_iterator(test_pb2)
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
+      request_iterator = _full_duplex_request_iterator(self._request_pb2)
       responses = stub.FullDuplexCall(
           request_iterator, test_constants.LONG_TIMEOUT)
       next(responses)
@@ -501,10 +515,9 @@ class PythonPluginTest(unittest.TestCase):
         next(responses)
 
   def testFullDuplexCallFailed(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    request_iterator = _full_duplex_request_iterator(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    request_iterator = _full_duplex_request_iterator(self._request_pb2)
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       with methods.fail():
         responses = stub.FullDuplexCall(
             request_iterator, test_constants.LONG_TIMEOUT)
@@ -513,14 +526,13 @@ class PythonPluginTest(unittest.TestCase):
           next(responses)
 
   def testHalfDuplexCall(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       def half_duplex_request_iterator():
-        request = test_pb2.StreamingOutputCallRequest()
+        request = self._request_pb2.StreamingOutputCallRequest()
         request.response_parameters.add(size=1, interval_us=0)
         yield request
-        request = test_pb2.StreamingOutputCallRequest()
+        request = self._request_pb2.StreamingOutputCallRequest()
         request.response_parameters.add(size=2, interval_us=0)
         request.response_parameters.add(size=3, interval_us=0)
         yield request
@@ -533,8 +545,6 @@ class PythonPluginTest(unittest.TestCase):
         self.assertEqual(expected_response, response)
 
   def testHalfDuplexCallWedged(self):
-    import protoc_plugin_test_pb2 as test_pb2  # pylint: disable=g-import-not-at-top
-    moves.reload_module(test_pb2)
     condition = threading.Condition()
     wait_cell = [False]
     @contextlib.contextmanager
@@ -547,13 +557,14 @@ class PythonPluginTest(unittest.TestCase):
         wait_cell[0] = False
         condition.notify_all()
     def half_duplex_request_iterator():
-      request = test_pb2.StreamingOutputCallRequest()
+      request = self._request_pb2.StreamingOutputCallRequest()
       request.response_parameters.add(size=1, interval_us=0)
       yield request
       with condition:
         while wait_cell[0]:
           condition.wait()
-    with _CreateService(test_pb2) as (methods, stub):
+    with _CreateService(self._service_pb2, self._response_pb2,
+                        self._payload_pb2) as (methods, stub):
       with wait():
         responses = stub.HalfDuplexCall(
             half_duplex_request_iterator(), test_constants.SHORT_TIMEOUT)
@@ -563,5 +574,5 @@ class PythonPluginTest(unittest.TestCase):
 
 
 if __name__ == '__main__':
-  os.chdir(os.path.dirname(sys.argv[0]))
+  #os.chdir(os.path.dirname(sys.argv[0]))
   unittest.main(verbosity=2)
diff --git a/src/python/grpcio/tests/protoc_plugin/protos/payload/test_payload.proto b/src/python/grpcio/tests/protoc_plugin/protos/payload/test_payload.proto
new file mode 100644
index 0000000000..457543aa79
--- /dev/null
+++ b/src/python/grpcio/tests/protoc_plugin/protos/payload/test_payload.proto
@@ -0,0 +1,51 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package grpc_protoc_plugin;
+
+enum PayloadType {
+  // Compressable text format.
+  COMPRESSABLE= 0;
+
+  // Uncompressable binary format.
+  UNCOMPRESSABLE = 1;
+
+  // Randomly chosen from all other formats defined in this enum.
+  RANDOM = 2;
+}
+
+message Payload {
+  PayloadType payload_type = 1;
+  oneof payload_body {
+    string payload_compressable = 2;
+    bytes payload_uncompressable = 3;
+  }
+}
diff --git a/src/python/grpcio/tests/protoc_plugin/protos/requests/r/test_requests.proto b/src/python/grpcio/tests/protoc_plugin/protos/requests/r/test_requests.proto
new file mode 100644
index 0000000000..54105df6a5
--- /dev/null
+++ b/src/python/grpcio/tests/protoc_plugin/protos/requests/r/test_requests.proto
@@ -0,0 +1,77 @@
+// Copyright 2016, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+import "protos/payload/test_payload.proto";
+
+package grpc_protoc_plugin;
+
+message SimpleRequest {
+  // Desired payload type in the response from the server.
+  // If response_type is RANDOM, server randomly chooses one from other formats.
+  PayloadType response_type = 1;
+
+  // Desired payload size in the response from the server.
+  // If response_type is COMPRESSABLE, this denotes the size before compression.
+  int32 response_size = 2;
+
+  // input payload sent along with the request.
+  Payload payload = 3;
+}
+
+message StreamingInputCallRequest {
+  // input payload sent along with the request.
+  Payload payload = 1;
+
+  // Not expecting any payload from the response.
+}
+
+message ResponseParameters {
+  // Desired payload sizes in responses from the server.
+  // If response_type is COMPRESSABLE, this denotes the size before compression.
+  int32 size = 1;
+
+  // Desired interval between consecutive responses in the response stream in
+  // microseconds.
+  int32 interval_us = 2;
+}
+
+message StreamingOutputCallRequest {
+  // Desired payload type in the response from the server.
+  // If response_type is RANDOM, the payload from each response in the stream
+  // might be of different types. This is to simulate a mixed type of payload
+  // stream.
+  PayloadType response_type = 1;
+
+  repeated ResponseParameters response_parameters = 2;
+
+  // input payload sent along with the request.
+  Payload payload = 3;
+}
diff --git a/src/python/grpcio/tests/protoc_plugin/protos/responses/test_responses.proto b/src/python/grpcio/tests/protoc_plugin/protos/responses/test_responses.proto
new file mode 100644
index 0000000000..734fbda86e
--- /dev/null
+++ b/src/python/grpcio/tests/protoc_plugin/protos/responses/test_responses.proto
@@ -0,0 +1,47 @@
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+import "protos/payload/test_payload.proto";
+
+package grpc_protoc_plugin;
+
+message SimpleResponse {
+  Payload payload = 1;
+}
+
+message StreamingInputCallResponse {
+  // Aggregated size of payloads received from the client.
+  int32 aggregated_payload_size = 1;
+}
+
+message StreamingOutputCallResponse {
+  Payload payload = 1;
+}
diff --git a/src/python/grpcio/tests/protoc_plugin/protoc_plugin_test.proto b/src/python/grpcio/tests/protoc_plugin/protos/service/test_service.proto
similarity index 54%
rename from src/python/grpcio/tests/protoc_plugin/protoc_plugin_test.proto
rename to src/python/grpcio/tests/protoc_plugin/protos/service/test_service.proto
index 6762a8e7f3..fe715ee7f9 100644
--- a/src/python/grpcio/tests/protoc_plugin/protoc_plugin_test.proto
+++ b/src/python/grpcio/tests/protoc_plugin/protos/service/test_service.proto
@@ -1,4 +1,4 @@
-// Copyright 2015, Google Inc.
+// Copyright 2016, Google Inc.
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
@@ -27,87 +27,12 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-// An integration test service that covers all the method signature permutations
-// of unary/streaming requests/responses.
-// This file is duplicated around the code base. See GitHub issue #526.
-syntax = "proto2";
+syntax = "proto3";
 
-package grpc_protoc_plugin;
-
-enum PayloadType {
-  // Compressable text format.
-  COMPRESSABLE= 1;
-
-  // Uncompressable binary format.
-  UNCOMPRESSABLE = 2;
-
-  // Randomly chosen from all other formats defined in this enum.
-  RANDOM = 3;
-}
-
-message Payload {
-  required PayloadType payload_type = 1;
-  oneof payload_body {
-    string payload_compressable = 2;
-    bytes payload_uncompressable = 3;
-  }
-}
-
-message SimpleRequest {
-  // Desired payload type in the response from the server.
-  // If response_type is RANDOM, server randomly chooses one from other formats.
-  optional PayloadType response_type = 1 [default=COMPRESSABLE];
-
-  // Desired payload size in the response from the server.
-  // If response_type is COMPRESSABLE, this denotes the size before compression.
-  optional int32 response_size = 2;
-
-  // Optional input payload sent along with the request.
-  optional Payload payload = 3;
-}
-
-message SimpleResponse {
-  optional Payload payload = 1;
-}
-
-message StreamingInputCallRequest {
-  // Optional input payload sent along with the request.
-  optional Payload payload = 1;
+import "protos/requests/r/test_requests.proto";
+import "protos/responses/test_responses.proto";
 
-  // Not expecting any payload from the response.
-}
-
-message StreamingInputCallResponse {
-  // Aggregated size of payloads received from the client.
-  optional int32 aggregated_payload_size = 1;
-}
-
-message ResponseParameters {
-  // Desired payload sizes in responses from the server.
-  // If response_type is COMPRESSABLE, this denotes the size before compression.
-  required int32 size = 1;
-
-  // Desired interval between consecutive responses in the response stream in
-  // microseconds.
-  required int32 interval_us = 2;
-}
-
-message StreamingOutputCallRequest {
-  // Desired payload type in the response from the server.
-  // If response_type is RANDOM, the payload from each response in the stream
-  // might be of different types. This is to simulate a mixed type of payload
-  // stream.
-  optional PayloadType response_type = 1 [default=COMPRESSABLE];
-
-  repeated ResponseParameters response_parameters = 2;
-
-  // Optional input payload sent along with the request.
-  optional Payload payload = 3;
-}
-
-message StreamingOutputCallResponse {
-  optional Payload payload = 1;
-}
+package grpc_protoc_plugin;
 
 service TestService {
   // One request followed by one response.
-- 
GitLab


From 6f0fe0f32728dfa781e49451a755d73df5fa6a88 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 6 May 2016 12:16:28 -0700
Subject: [PATCH 417/525] fix python distribtests with docker on overlay

---
 test/distrib/python/run_distrib_test.sh | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index 6196e540c8..a0324a92b1 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -48,7 +48,10 @@ which $PYTHON || PYTHON=python
 which $PIP || PIP=pip
 
 # TODO(jtattermusch): this shouldn't be required
-${PIP} install --upgrade six pip
+# TODO(jtattermusch): run the command twice to workaround docker-on-overlay
+# issue https://github.com/docker/docker/issues/12327
+# (first attempt will fail when using docker with overlayFS)
+${PIP} install --upgrade six pip || ${PIP} install --upgrade six pip
 
 # At least one of the bdist packages has to succeed (whichever one matches the
 # test machine, anyway).
-- 
GitLab


From 4e2f7727a9d39b58d6e3d083a7ed9a5aa6bb5fcc Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 6 May 2016 12:28:58 -0700
Subject: [PATCH 418/525] rename grpc.protoc.compiler to grpc.tools.protoc

---
 test/distrib/python/run_distrib_test.sh                     | 2 +-
 .../python/grpcio_tools/grpc/{protoc => tools}/__init__.py  | 0
 .../python/grpcio_tools/grpc/{protoc => tools}/main.cc      | 2 +-
 .../python/grpcio_tools/grpc/{protoc => tools}/main.h       | 0
 .../grpc/{protoc/compiler.py => tools/protoc.py}            | 2 +-
 .../grpcio_tools/grpc/{protoc => tools}/protoc_compiler.pyx | 2 +-
 tools/distrib/python/grpcio_tools/setup.py                  | 6 +++---
 7 files changed, 7 insertions(+), 7 deletions(-)
 rename tools/distrib/python/grpcio_tools/grpc/{protoc => tools}/__init__.py (100%)
 rename tools/distrib/python/grpcio_tools/grpc/{protoc => tools}/main.cc (98%)
 rename tools/distrib/python/grpcio_tools/grpc/{protoc => tools}/main.h (100%)
 rename tools/distrib/python/grpcio_tools/grpc/{protoc/compiler.py => tools/protoc.py} (97%)
 rename tools/distrib/python/grpcio_tools/grpc/{protoc => tools}/protoc_compiler.pyx (97%)

diff --git a/test/distrib/python/run_distrib_test.sh b/test/distrib/python/run_distrib_test.sh
index a0324a92b1..8a983bc248 100755
--- a/test/distrib/python/run_distrib_test.sh
+++ b/test/distrib/python/run_distrib_test.sh
@@ -61,6 +61,6 @@ done
 
 # TODO(jtattermusch): add a .proto file to the distribtest, generate python
 # code from it and then use the generated code from distribtest.py
-$PYTHON -m grpc.protoc.compiler
+$PYTHON -m grpc.tools.protoc
 
 $PYTHON distribtest.py
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/__init__.py b/tools/distrib/python/grpcio_tools/grpc/tools/__init__.py
similarity index 100%
rename from tools/distrib/python/grpcio_tools/grpc/protoc/__init__.py
rename to tools/distrib/python/grpcio_tools/grpc/tools/__init__.py
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc b/tools/distrib/python/grpcio_tools/grpc/tools/main.cc
similarity index 98%
rename from tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
rename to tools/distrib/python/grpcio_tools/grpc/tools/main.cc
index c9936a3a6b..81675b4e6f 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/main.cc
@@ -32,7 +32,7 @@
 
 #include "src/compiler/python_generator.h"
 
-#include "grpc/protoc/main.h"
+#include "grpc/tools/main.h"
 
 int protoc_main(int argc, char* argv[]) {
   google::protobuf::compiler::CommandLineInterface cli;
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/main.h b/tools/distrib/python/grpcio_tools/grpc/tools/main.h
similarity index 100%
rename from tools/distrib/python/grpcio_tools/grpc/protoc/main.h
rename to tools/distrib/python/grpcio_tools/grpc/tools/main.h
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py b/tools/distrib/python/grpcio_tools/grpc/tools/protoc.py
similarity index 97%
rename from tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py
rename to tools/distrib/python/grpcio_tools/grpc/tools/protoc.py
index caafc544b2..b4dd0ecae2 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/protoc.py
@@ -31,7 +31,7 @@
 
 import sys
 
-from grpc.protoc import protoc_compiler
+from grpc.tools import protoc_compiler
 
 
 if __name__ == '__main__':
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx b/tools/distrib/python/grpcio_tools/grpc/tools/protoc_compiler.pyx
similarity index 97%
rename from tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
rename to tools/distrib/python/grpcio_tools/grpc/tools/protoc_compiler.pyx
index af15f3db30..a6530127c0 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
+++ b/tools/distrib/python/grpcio_tools/grpc/tools/protoc_compiler.pyx
@@ -29,7 +29,7 @@
 
 from libc cimport stdlib
 
-cdef extern from "grpc/protoc/main.h":
+cdef extern from "grpc/tools/main.h":
   int protoc_main(int argc, char *argv[])
 
 def run_main(list args not None):
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index 0281c01796..1a77c430fa 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -45,13 +45,13 @@ import grpc_version
 
 def protoc_ext_module():
   plugin_sources = [
-      'grpc/protoc/main.cc',
+      'grpc/tools/main.cc',
       'grpc_root/src/compiler/python_generator.cc'] + [
       os.path.join('third_party/protobuf/src', cc_file)
       for cc_file in protoc_lib_deps.CC_FILES]
   plugin_ext = extension.Extension(
-      name='grpc.protoc.protoc_compiler',
-      sources=['grpc/protoc/protoc_compiler.pyx'] + plugin_sources,
+      name='grpc.tools.protoc_compiler',
+      sources=['grpc/tools/protoc_compiler.pyx'] + plugin_sources,
       include_dirs=[
           '.',
           'grpc_root',
-- 
GitLab


From 873e419cf73fa747a897cd8e06c8ffad6661efb0 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 6 May 2016 12:44:46 -0700
Subject: [PATCH 419/525] Added explanation about handling signals in C

---
 src/ruby/ext/grpc/rb_signal.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/ruby/ext/grpc/rb_signal.c b/src/ruby/ext/grpc/rb_signal.c
index dd60b0f251..a9e512374b 100644
--- a/src/ruby/ext/grpc/rb_signal.c
+++ b/src/ruby/ext/grpc/rb_signal.c
@@ -44,6 +44,10 @@ static void (*old_sigterm_handler)(int);
 
 static volatile bool signal_received = false;
 
+/* This has to be handled at the C level instead of Ruby, because Ruby signal
+ * handlers are constrained to run in the main interpreter thread. If that main
+ * thread is blocked on grpc_completion_queue_pluck, the signal handlers will
+ * never run */
 static void handle_signal(int signum) {
   signal_received = true;
   if (signum == SIGINT) {
-- 
GitLab


From 080528abb725702c7559c1be058eb8d3ea792fa8 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Fri, 6 May 2016 13:12:00 -0700
Subject: [PATCH 420/525] Add parsing back to protobuf example

---
 test/cpp/end2end/end2end_test.cc | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc
index bef1561b09..40ba0c0b43 100644
--- a/test/cpp/end2end/end2end_test.cc
+++ b/test/cpp/end2end/end2end_test.cc
@@ -998,6 +998,9 @@ TEST_P(End2endTest, BinaryTrailerTest) {
   EXPECT_EQ(1, trailers.count(kDebugInfoTrailerKey));
   auto iter = trailers.find(kDebugInfoTrailerKey);
   EXPECT_EQ(expected_string, iter->second);
+  // Parse the returned trailer into a DebugInfo proto.
+  DebugInfo returned_info;
+  EXPECT_TRUE(returned_info.ParseFromString(ToString(iter->second)));
 }
 
 //////////////////////////////////////////////////////////////////////////
-- 
GitLab


From 7d099a5c907d9ab164416ea875ae07a3074adedb Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Fri, 6 May 2016 13:21:36 -0700
Subject: [PATCH 421/525] Fix naming and comment problems

---
 include/grpc++/impl/server_builder_plugin.h    |  2 --
 include/grpc++/server_builder.h                |  1 +
 src/cpp/server/server_builder.cc               | 10 ++++++----
 test/cpp/end2end/server_builder_plugin_test.cc | 18 ++++++++----------
 4 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/include/grpc++/impl/server_builder_plugin.h b/include/grpc++/impl/server_builder_plugin.h
index f792c4b321..1e157efa11 100644
--- a/include/grpc++/impl/server_builder_plugin.h
+++ b/include/grpc++/impl/server_builder_plugin.h
@@ -64,6 +64,4 @@ class ServerBuilderPlugin {
 
 }  // namespace grpc
 
-
-
 #endif  // GRPCXX_IMPL_SERVER_BUILDER_PLUGIN_H
diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index 52064b1434..ad629521cb 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -113,6 +113,7 @@ class ServerBuilder {
   /// Return a running server which is ready for processing calls.
   std::unique_ptr<Server> BuildAndStart();
 
+  /// For internal use only: Register a ServerBuilderPlugin factory function.
   static void InternalAddPluginFactory(
       std::unique_ptr<ServerBuilderPlugin> (*CreatePlugin)());
 
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index b6e48efa8d..9658a56745 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -41,18 +41,20 @@
 
 namespace grpc {
 
-static std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>* plugin_list;
+static std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>*
+    g_plugin_factory_list;
 static gpr_once once_init_plugin_list = GPR_ONCE_INIT;
 
 static void do_plugin_list_init(void) {
-  plugin_list = new std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>();
+  g_plugin_factory_list =
+      new std::vector<std::unique_ptr<ServerBuilderPlugin> (*)()>();
 }
 
 ServerBuilder::ServerBuilder()
     : max_message_size_(-1), generic_service_(nullptr) {
   grpc_compression_options_init(&compression_options_);
   gpr_once_init(&once_init_plugin_list, do_plugin_list_init);
-  for (auto factory : (*plugin_list)) {
+  for (auto factory : (*g_plugin_factory_list)) {
     std::unique_ptr<ServerBuilderPlugin> plugin = factory();
     plugins_[plugin->name()] = std::move(plugin);
   }
@@ -171,7 +173,7 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
 void ServerBuilder::InternalAddPluginFactory(
     std::unique_ptr<ServerBuilderPlugin> (*CreatePlugin)()) {
   gpr_once_init(&once_init_plugin_list, do_plugin_list_init);
-  (*plugin_list).push_back(CreatePlugin);
+  (*g_plugin_factory_list).push_back(CreatePlugin);
 }
 
 }  // namespace grpc
diff --git a/test/cpp/end2end/server_builder_plugin_test.cc b/test/cpp/end2end/server_builder_plugin_test.cc
index 0d44999a08..87e3709d7d 100644
--- a/test/cpp/end2end/server_builder_plugin_test.cc
+++ b/test/cpp/end2end/server_builder_plugin_test.cc
@@ -115,10 +115,7 @@ class InsertPluginServerBuilderOption : public ServerBuilderOption {
   void UpdatePlugins(
       std::map<grpc::string, std::unique_ptr<ServerBuilderPlugin>>* plugins)
       GRPC_OVERRIDE {
-    auto it = plugins->begin();
-    while (it != plugins->end()) {
-      plugins->erase(it++);
-    }
+    plugins->clear();
 
     std::unique_ptr<TestServerBuilderPlugin> plugin(
         new TestServerBuilderPlugin());
@@ -136,7 +133,7 @@ std::unique_ptr<ServerBuilderPlugin> CreateTestServerBuilderPlugin() {
   return std::unique_ptr<ServerBuilderPlugin>(new TestServerBuilderPlugin());
 }
 
-void grpc_AddServerBuilderPlugin_reflection() {
+void AddTestServerBuilderPlugin() {
   static bool already_here = false;
   if (already_here) return;
   already_here = true;
@@ -145,12 +142,13 @@ void grpc_AddServerBuilderPlugin_reflection() {
 }
 
 // Force AddServerBuilderPlugin() to be called at static initialization time.
-struct StaticPluginInitializer_reflection {
-  StaticPluginInitializer_reflection() {
-    grpc_AddServerBuilderPlugin_reflection();
-  }
-} static_plugin_initializer_reflection_;
+struct StaticTestPluginInitializer {
+  StaticTestPluginInitializer() { AddTestServerBuilderPlugin(); }
+} static_plugin_initializer_test_;
 
+// When the param boolean is true, the ServerBuilder plugin will be added at the
+// time of static initialization. When it's false, the ServerBuilder plugin will
+// be added using ServerBuilder::SetOption().
 class ServerBuilderPluginTest : public ::testing::TestWithParam<bool> {
  public:
   ServerBuilderPluginTest() {}
-- 
GitLab


From 41fd37bbe38cb338b4d7350653658146b9012ae0 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 6 May 2016 13:43:26 -0700
Subject: [PATCH 422/525] Poll for signals more frequently, for greater
 responsiveness

---
 src/ruby/lib/grpc/signals.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/ruby/lib/grpc/signals.rb b/src/ruby/lib/grpc/signals.rb
index 7d2ec25dcb..2ab85c8bb1 100644
--- a/src/ruby/lib/grpc/signals.rb
+++ b/src/ruby/lib/grpc/signals.rb
@@ -52,7 +52,7 @@ module GRPC
 
     def wait_for_signals
       t = Thread.new do
-        sleep 1 until GRPC::Core.signal_received? || @interpreter_exiting
+        sleep 0.1 until GRPC::Core.signal_received? || @interpreter_exiting
         unless @interpreter_exiting
           @handlers_mutex.synchronize do
             @signal_handlers.each(&:call)
-- 
GitLab


From cf239e73093e0c9afe457b2b4b0fe45eae514b6f Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Fri, 6 May 2016 14:48:21 -0700
Subject: [PATCH 423/525] Add a default handler to Ruby services that returns
 UNIMPLEMENTED

---
 src/ruby/lib/grpc/generic/rpc_server.rb  |  6 +--
 src/ruby/lib/grpc/generic/service.rb     | 16 ++----
 src/ruby/spec/generic/rpc_server_spec.rb | 23 ++++++--
 src/ruby/spec/generic/service_spec.rb    | 69 ------------------------
 4 files changed, 24 insertions(+), 90 deletions(-)

diff --git a/src/ruby/lib/grpc/generic/rpc_server.rb b/src/ruby/lib/grpc/generic/rpc_server.rb
index a0f4071adc..60a8957251 100644
--- a/src/ruby/lib/grpc/generic/rpc_server.rb
+++ b/src/ruby/lib/grpc/generic/rpc_server.rb
@@ -503,10 +503,8 @@ module GRPC
       unless cls.include?(GenericService)
         fail "#{cls} must 'include GenericService'"
       end
-      if cls.rpc_descs.size.zero?
-        fail "#{cls} should specify some rpc descriptions"
-      end
-      cls.assert_rpc_descs_have_methods
+      fail "#{cls} should specify some rpc descriptions" if
+        cls.rpc_descs.size.zero?
     end
 
     # This should be called while holding @run_mutex
diff --git a/src/ruby/lib/grpc/generic/service.rb b/src/ruby/lib/grpc/generic/service.rb
index 8e940b5b13..0a166e823e 100644
--- a/src/ruby/lib/grpc/generic/service.rb
+++ b/src/ruby/lib/grpc/generic/service.rb
@@ -110,6 +110,9 @@ module GRPC
         rpc_descs[name] = RpcDesc.new(name, input, output,
                                       marshal_class_method,
                                       unmarshal_class_method)
+        define_method(name) do
+          fail GRPC::BadStatus, GRPC::Core::StatusCodes::UNIMPLEMENTED
+        end
       end
 
       def inherited(subclass)
@@ -199,19 +202,6 @@ module GRPC
           end
         end
       end
-
-      # Asserts that the appropriate methods are defined for each added rpc
-      # spec. Is intended to aid verifying that server classes are correctly
-      # implemented.
-      def assert_rpc_descs_have_methods
-        rpc_descs.each_pair do |m, spec|
-          mth_name = GenericService.underscore(m.to_s).to_sym
-          unless instance_methods.include?(mth_name)
-            fail "#{self} does not provide instance method '#{mth_name}'"
-          end
-          spec.assert_arity_matches(instance_method(mth_name))
-        end
-      end
     end
 
     def self.included(o)
diff --git a/src/ruby/spec/generic/rpc_server_spec.rb b/src/ruby/spec/generic/rpc_server_spec.rb
index e688057cb1..2a42736237 100644
--- a/src/ruby/spec/generic/rpc_server_spec.rb
+++ b/src/ruby/spec/generic/rpc_server_spec.rb
@@ -308,10 +308,6 @@ describe GRPC::RpcServer do
       expect { @srv.handle(EmptyService) }.to raise_error
     end
 
-    it 'raises if the service does not define its rpc methods' do
-      expect { @srv.handle(NoRpcImplementation) }.to raise_error
-    end
-
     it 'raises if a handler method is already registered' do
       @srv.handle(EchoService)
       expect { r.handle(EchoService) }.to raise_error
@@ -349,6 +345,25 @@ describe GRPC::RpcServer do
         t.join
       end
 
+      it 'should return UNIMPLEMENTED on unimplemented methods', server: true do
+        @srv.handle(NoRpcImplementation)
+        t = Thread.new { @srv.run }
+        @srv.wait_till_running
+        req = EchoMsg.new
+        blk = proc do
+          cq = GRPC::Core::CompletionQueue.new
+          stub = GRPC::ClientStub.new(@host, cq, :this_channel_is_insecure,
+                                      **client_opts)
+          stub.request_response('/an_rpc', req, marshal, unmarshal)
+        end
+        expect(&blk).to raise_error do |error|
+          expect(error).to be_a(GRPC::BadStatus)
+          expect(error.code).to be(GRPC::Core::StatusCodes::UNIMPLEMENTED)
+        end
+        @srv.stop
+        t.join
+      end
+
       it 'should handle multiple sequential requests', server: true do
         @srv.handle(EchoService)
         t = Thread.new { @srv.run }
diff --git a/src/ruby/spec/generic/service_spec.rb b/src/ruby/spec/generic/service_spec.rb
index 5e7b6c7aba..76034e4f74 100644
--- a/src/ruby/spec/generic/service_spec.rb
+++ b/src/ruby/spec/generic/service_spec.rb
@@ -273,73 +273,4 @@ describe GenericService do
       end
     end
   end
-
-  describe '#assert_rpc_descs_have_methods' do
-    it 'fails if there is no instance method for an rpc descriptor' do
-      c1 = Class.new do
-        include GenericService
-        rpc :AnRpc, GoodMsg, GoodMsg
-      end
-      expect { c1.assert_rpc_descs_have_methods }.to raise_error
-
-      c2 = Class.new do
-        include GenericService
-        rpc :AnRpc, GoodMsg, GoodMsg
-        rpc :AnotherRpc, GoodMsg, GoodMsg
-
-        def an_rpc
-        end
-      end
-      expect { c2.assert_rpc_descs_have_methods }.to raise_error
-    end
-
-    it 'passes if there are corresponding methods for each descriptor' do
-      c = Class.new do
-        include GenericService
-        rpc :AnRpc, GoodMsg, GoodMsg
-        rpc :AServerStreamer, GoodMsg, stream(GoodMsg)
-        rpc :AClientStreamer, stream(GoodMsg), GoodMsg
-        rpc :ABidiStreamer, stream(GoodMsg), stream(GoodMsg)
-
-        def an_rpc(_req, _call)
-        end
-
-        def a_server_streamer(_req, _call)
-        end
-
-        def a_client_streamer(_call)
-        end
-
-        def a_bidi_streamer(_call)
-        end
-      end
-      expect { c.assert_rpc_descs_have_methods }.to_not raise_error
-    end
-
-    it 'passes for subclasses of that include GenericService' do
-      base = Class.new do
-        include GenericService
-        rpc :AnRpc, GoodMsg, GoodMsg
-
-        def an_rpc(_req, _call)
-        end
-      end
-      c = Class.new(base)
-      expect { c.assert_rpc_descs_have_methods }.to_not raise_error
-      expect(c.include?(GenericService)).to be(true)
-    end
-
-    it 'passes if subclasses define the rpc methods' do
-      base = Class.new do
-        include GenericService
-        rpc :AnRpc, GoodMsg, GoodMsg
-      end
-      c = Class.new(base) do
-        def an_rpc(_req, _call)
-        end
-      end
-      expect { c.assert_rpc_descs_have_methods }.to_not raise_error
-      expect(c.include?(GenericService)).to be(true)
-    end
-  end
 end
-- 
GitLab


From ed4c3f17dd4fce0fa0cf6c310295e4ae5dff729b Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 6 May 2016 15:39:08 -0700
Subject: [PATCH 424/525] disable some C# scenarios

---
 .../run_tests/performance/scenario_config.py  | 20 ++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 8b23995149..746945b617 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -265,16 +265,18 @@ class CSharpLanguage:
         use_unconstrained_client=True,
         categories=[SMOKETEST])
 
-    yield _ping_pong_scenario(
-        'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
-        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-        use_unconstrained_client=True)
+    # TODO(jtattermusch): scenario works locally but fails on jenkins
+    #yield _ping_pong_scenario(
+    #    'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+    #    use_unconstrained_client=True)
 
-    yield _ping_pong_scenario(
-        'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
-        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
-        server_language='c++', server_core_limit=1, async_server_threads=1,
-        categories=[SMOKETEST])
+    # TODO(jtattermusch): scenario works locally but fails on jenkins
+    #yield _ping_pong_scenario(
+    #    'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+    #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+    #    server_language='c++', server_core_limit=1, async_server_threads=1,
+    #    categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'csharp_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
-- 
GitLab


From 111c95df790324bac3174b17a620c8d0e439adc2 Mon Sep 17 00:00:00 2001
From: Jorge Canizales <jcanizales@google.com>
Date: Thu, 28 Apr 2016 16:45:30 -0700
Subject: [PATCH 425/525] Move podspec to version 0.13

---
 gRPC.podspec                    | 2 +-
 templates/gRPC.podspec.template | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gRPC.podspec b/gRPC.podspec
index 018306ca64..05ead228de 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -36,7 +36,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC'
-  version = '0.12.0'
+  version = '0.13.0'
   s.version  = version
   s.summary  = 'gRPC client library for iOS/OSX'
   s.homepage = 'http://www.grpc.io'
diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template
index a9948a41df..316208b47b 100644
--- a/templates/gRPC.podspec.template
+++ b/templates/gRPC.podspec.template
@@ -54,7 +54,7 @@
   %>
   Pod::Spec.new do |s|
     s.name     = 'gRPC'
-    version = '0.12.0'
+    version = '0.13.0'
     s.version  = version
     s.summary  = 'gRPC client library for iOS/OSX'
     s.homepage = 'http://www.grpc.io'
-- 
GitLab


From f58b4f41ff671cd8f38ca524cfedfe454ff72aeb Mon Sep 17 00:00:00 2001
From: Jorge Canizales <jcanizales@google.com>
Date: Fri, 29 Apr 2016 03:07:23 -0700
Subject: [PATCH 426/525] Have Cocoapods read from submodules too, for nanopb

---
 gRPC.podspec                    | 3 ++-
 templates/gRPC.podspec.template | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/gRPC.podspec b/gRPC.podspec
index 05ead228de..20db5ccd28 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -44,7 +44,8 @@ Pod::Spec.new do |s|
   s.authors  = { 'The gRPC contributors' => 'grpc-packages@google.com' }
 
   s.source = { :git => 'https://github.com/grpc/grpc.git',
-               :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" }
+               :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}",
+               :submodules => true }
 
 
   s.ios.deployment_target = '7.1'
diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template
index 316208b47b..d822d6c64e 100644
--- a/templates/gRPC.podspec.template
+++ b/templates/gRPC.podspec.template
@@ -62,7 +62,8 @@
     s.authors  = { 'The gRPC contributors' => 'grpc-packages@google.com' }
 
     s.source = { :git => 'https://github.com/grpc/grpc.git',
-                 :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}" }
+                 :tag => "release-#{version.gsub(/\./, '_')}-objectivec-#{version}",
+                 :submodules => true }
 
   
     s.ios.deployment_target = '7.1'
-- 
GitLab


From 4c2056683437bfcd3eed5b76e99a75e8a40e42b4 Mon Sep 17 00:00:00 2001
From: Jorge Canizales <jcanizales@google.com>
Date: Fri, 29 Apr 2016 03:08:10 -0700
Subject: [PATCH 427/525] Depend on latest BoringSSL

---
 gRPC.podspec                    | 2 +-
 templates/gRPC.podspec.template | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gRPC.podspec b/gRPC.podspec
index 20db5ccd28..68d0fe480d 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -732,7 +732,7 @@ Pod::Spec.new do |s|
 
     ss.requires_arc = false
     ss.libraries = 'z'
-    ss.dependency 'BoringSSL', '~> 2.0'
+    ss.dependency 'BoringSSL', '~> 3.0'
 
     # ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
   end
diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template
index d822d6c64e..45b923c43e 100644
--- a/templates/gRPC.podspec.template
+++ b/templates/gRPC.podspec.template
@@ -98,7 +98,7 @@
 
       ss.requires_arc = false
       ss.libraries = 'z'
-      ss.dependency 'BoringSSL', '~> 2.0'
+      ss.dependency 'BoringSSL', '~> 3.0'
 
       # ss.compiler_flags = '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
     end
-- 
GitLab


From f742afccea93fdd4d274175a74805f36b524b951 Mon Sep 17 00:00:00 2001
From: Jorge Canizales <jcanizales@google.com>
Date: Fri, 29 Apr 2016 03:33:37 -0700
Subject: [PATCH 428/525] Update BoringSSL podspec version.

---
 src/objective-c/BoringSSL.podspec | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/objective-c/BoringSSL.podspec b/src/objective-c/BoringSSL.podspec
index 4a6df910a7..7d1de80716 100644
--- a/src/objective-c/BoringSSL.podspec
+++ b/src/objective-c/BoringSSL.podspec
@@ -31,7 +31,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'BoringSSL'
-  s.version  = '2.0'
+  s.version  = '3.0'
   s.summary  = 'BoringSSL is a fork of OpenSSL that is designed to meet Google’s needs.'
   # Adapted from the homepage:
   s.description = <<-DESC
@@ -67,7 +67,7 @@ Pod::Spec.new do |s|
   s.authors  = 'Adam Langley', 'David Benjamin', 'Matt Braithwaite'
 
   s.source = { :git => 'https://boringssl.googlesource.com/boringssl',
-               :tag => 'version_for_cocoapods_2.0' }
+               :tag => 'version_for_cocoapods_3.0' }
 
   s.source_files = 'ssl/*.{h,c}',
                    'ssl/**/*.{h,c}',
-- 
GitLab


From f4639d485892341e66ef24521600fb20496c10cf Mon Sep 17 00:00:00 2001
From: Jorge Canizales <jcanizales@google.com>
Date: Fri, 6 May 2016 16:41:36 -0700
Subject: [PATCH 429/525] Move podspec to version 0.14

---
 gRPC.podspec                    | 2 +-
 templates/gRPC.podspec.template | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gRPC.podspec b/gRPC.podspec
index 68d0fe480d..cfe7e57fb9 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -36,7 +36,7 @@
 
 Pod::Spec.new do |s|
   s.name     = 'gRPC'
-  version = '0.13.0'
+  version = '0.14.0'
   s.version  = version
   s.summary  = 'gRPC client library for iOS/OSX'
   s.homepage = 'http://www.grpc.io'
diff --git a/templates/gRPC.podspec.template b/templates/gRPC.podspec.template
index 45b923c43e..979cb1ef8e 100644
--- a/templates/gRPC.podspec.template
+++ b/templates/gRPC.podspec.template
@@ -54,7 +54,7 @@
   %>
   Pod::Spec.new do |s|
     s.name     = 'gRPC'
-    version = '0.13.0'
+    version = '0.14.0'
     s.version  = version
     s.summary  = 'gRPC client library for iOS/OSX'
     s.homepage = 'http://www.grpc.io'
-- 
GitLab


From b4e82f7897c8a840249f39f17bc9afb986206588 Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Fri, 6 May 2016 12:58:30 -0700
Subject: [PATCH 430/525] Fix windows linkage in Python grpcio-tools

---
 tools/distrib/python/grpcio_tools/README.rst |  4 ++-
 tools/distrib/python/grpcio_tools/setup.py   | 14 +++++++++-
 tools/run_tests/build_artifact_python.bat    | 29 +++++++++++++-------
 3 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/tools/distrib/python/grpcio_tools/README.rst b/tools/distrib/python/grpcio_tools/README.rst
index 3be564ef5b..10d2fe8c30 100644
--- a/tools/distrib/python/grpcio_tools/README.rst
+++ b/tools/distrib/python/grpcio_tools/README.rst
@@ -46,7 +46,9 @@ From Source
 ~~~~~~~~~~~
 
 Building from source requires that you have the Python headers (usually a
-package named :code:`python-dev`) and Cython installed.
+package named :code:`python-dev`) and Cython installed. It further requires a
+GCC-like compiler to go smoothly; you can probably get it to work without
+GCC-like stuff, but you may end up having a bad time.
 
 ::
 
diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index 0281c01796..98f03c8d64 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -30,6 +30,7 @@
 from distutils import extension
 import os
 import os.path
+import shlex
 import sys
 
 import setuptools
@@ -40,6 +41,16 @@ from setuptools.command import build_ext
 os.chdir(os.path.dirname(os.path.abspath(__file__)))
 sys.path.insert(0, os.path.abspath('.'))
 
+# There are some situations (like on Windows) where CC, CFLAGS, and LDFLAGS are
+# entirely ignored/dropped/forgotten by distutils and its Cygwin/MinGW support.
+# We use these environment variables to thus get around that without locking
+# ourselves in w.r.t. the multitude of operating systems this ought to build on.
+# By default we assume a GCC-like compiler.
+EXTRA_COMPILE_ARGS = shlex.split(os.environ.get('GRPC_PYTHON_CFLAGS',
+                                                '-frtti -std=c++11'))
+EXTRA_LINK_ARGS = shlex.split(os.environ.get('GRPC_PYTHON_LDFLAGS',
+                                             '-lpthread'))
+
 import protoc_lib_deps
 import grpc_version
 
@@ -60,7 +71,8 @@ def protoc_ext_module():
       ],
       language='c++',
       define_macros=[('HAVE_PTHREAD', 1)],
-      extra_compile_args=['-lpthread', '-frtti', '-std=c++11'],
+      extra_compile_args=EXTRA_COMPILE_ARGS,
+      extra_link_args=EXTRA_LINK_ARGS,
   )
   return plugin_ext
 
diff --git a/tools/run_tests/build_artifact_python.bat b/tools/run_tests/build_artifact_python.bat
index 342469bba8..fea0275426 100644
--- a/tools/run_tests/build_artifact_python.bat
+++ b/tools/run_tests/build_artifact_python.bat
@@ -41,7 +41,7 @@ copy /Y vsprojects\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\
 copy /Y vsprojects\x64\Release\grpc_dll.dll src\python\grpcio\grpc\_cython\_windows\grpc_c.64.python || goto :error
 
 
-set PATH=C:\%1;C:\%1\scripts;%PATH%
+set PATH=C:\%1;C:\%1\scripts;C:\msys64\mingw%2\bin;%PATH%
 
 pip install --upgrade six
 pip install --upgrade setuptools
@@ -55,19 +55,28 @@ set GRPC_PYTHON_BUILD_WITH_CYTHON=1
 python setup.py bdist_wheel
 
 @rem Build gRPC Python tools
-set PATH=C:\msys64\mingw%2\bin;%PATH%
-set CC=C:\msys64\mingw%2\bin\g++.exe
-set CFLAGS=-fno-wrapv
+@rem
+@rem Because this is windows and *everything seems to hate Windows* we have to
+@rem set all of these flags ourselves because Python won't help us (see the
+@rem setup.py of the grpcio_tools project).
+set GRPC_PYTHON_CFLAGS=-fno-wrapv -frtti -std=c++11
+@rem Further confusing things, MSYS2's mingw64 tries to dynamically link
+@rem libgcc, libstdc++, and winpthreads. We have to override this or our
+@rem extensions end up linking to MSYS2 DLLs, which the normal Python on
+@rem Windows user won't have... and ON TOP OF THIS, there's MinGW's GCC default
+@rem behavior of linking msvcrt.dll as the C runtime library, which we need to
+@rem override so that Python's distutils doesn't link us against multiple C
+@rem runtimes.
+python -c "from distutils.cygwinccompiler import get_msvcr; print(get_msvcr()[0])" > temp.txt
+set /p PYTHON_MSVCR=<temp.txt
+set GRPC_PYTHON_LDFLAGS=-static-libgcc -static-libstdc++ -mcrtdll=%PYTHON_MSVCR% -static -lpthread
 python tools\distrib\python\make_grpcio_tools.py
-@rem The following commands *must* be run with the right version of python
-@rem otherwise the build get SNAFU'd (so we use the .exe suffix to invoke the python
-@rem we set in the %PATH% variable above).
 if %2 == 32 (
-  python.exe tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32
+  python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32
 ) else (
-  python.exe tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64
+  python tools\distrib\python\grpcio_tools\setup.py build_ext -c mingw32 -DMS_WIN64
 )
-python.exe tools\distrib\python\grpcio_tools\setup.py bdist_wheel
+python tools\distrib\python\grpcio_tools\setup.py bdist_wheel
 
 mkdir artifacts
 xcopy /Y /I /S dist\* artifacts\ || goto :error
-- 
GitLab


From abd1b38885a171fe5f54293581e8f5f67680f358 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date: Sun, 8 May 2016 18:47:40 -0700
Subject: [PATCH 431/525] comment out the right scenario

---
 .../run_tests/performance/scenario_config.py  | 22 +++++++++----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 746945b617..d393709623 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -259,11 +259,12 @@ class CSharpLanguage:
         'csharp_protobuf_sync_to_async_unary_ping_pong', rpc_type='UNARY',
         client_type='SYNC_CLIENT', server_type='ASYNC_SERVER')
 
-    yield _ping_pong_scenario(
-        'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
-        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-        use_unconstrained_client=True,
-        categories=[SMOKETEST])
+    # TODO(jtattermusch): scenario works locally but fails on jenkins
+    #yield _ping_pong_scenario(
+    #    'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+    #    use_unconstrained_client=True,
+    #    categories=[SMOKETEST])
 
     # TODO(jtattermusch): scenario works locally but fails on jenkins
     #yield _ping_pong_scenario(
@@ -271,12 +272,11 @@ class CSharpLanguage:
     #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
     #    use_unconstrained_client=True)
 
-    # TODO(jtattermusch): scenario works locally but fails on jenkins
-    #yield _ping_pong_scenario(
-    #    'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
-    #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
-    #    server_language='c++', server_core_limit=1, async_server_threads=1,
-    #    categories=[SMOKETEST])
+    yield _ping_pong_scenario(
+        'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        server_language='c++', server_core_limit=1, async_server_threads=1,
+        categories=[SMOKETEST])
 
     yield _ping_pong_scenario(
         'csharp_to_cpp_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
-- 
GitLab


From 42342cbebb55ee168252accb0433b1bb6cc8e4a7 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 9 May 2016 08:12:35 -0700
Subject: [PATCH 432/525] Revert "cronet wrapper code"

---
 BUILD                                         |  80 ---
 Makefile                                      |   7 -
 binding.gyp                                   |   3 -
 build.yaml                                    |  59 --
 config.m4                                     |   5 -
 gRPC.podspec                                  |  76 ---
 grpc.def                                      |   1 -
 grpc.gemspec                                  |  40 --
 include/grpc/grpc_cronet.h                    |  51 --
 package.xml                                   |  40 --
 .../client/secure/cronet_channel_create.c     |  69 --
 .../cronet/transport/cronet_api_dummy.c       |  85 ---
 .../cronet/transport/cronet_transport.c       | 640 ------------------
 .../grpcio/grpc/_cython/imports.generated.c   |   2 -
 .../grpcio/grpc/_cython/imports.generated.h   |   4 -
 src/python/grpcio/grpc_core_dependencies.py   |   3 -
 src/ruby/ext/grpc/rb_grpc_imports.generated.c |   2 -
 src/ruby/ext/grpc/rb_grpc_imports.generated.h |   4 -
 .../core/surface/public_headers_must_be_c89.c |   1 -
 .../objective_c/Cronet/cronet_c_for_grpc.h    | 202 ------
 tools/doxygen/Doxyfile.core                   |   1 -
 tools/doxygen/Doxyfile.core.internal          |  40 --
 tools/run_tests/sources_and_headers.json      | 120 +---
 vsprojects/vcxproj/grpc/grpc.vcxproj          |  43 --
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters  | 144 ----
 25 files changed, 1 insertion(+), 1721 deletions(-)
 delete mode 100644 include/grpc/grpc_cronet.h
 delete mode 100644 src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
 delete mode 100644 src/core/ext/transport/cronet/transport/cronet_api_dummy.c
 delete mode 100644 src/core/ext/transport/cronet/transport/cronet_transport.c
 delete mode 100644 third_party/objective_c/Cronet/cronet_c_for_grpc.h

diff --git a/BUILD b/BUILD
index fae3596eec..1da1650438 100644
--- a/BUILD
+++ b/BUILD
@@ -285,42 +285,6 @@ cc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
-    "include/grpc/byte_buffer.h",
-    "include/grpc/grpc.h",
-    "include/grpc/impl/codegen/alloc.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_win32.h",
-    "include/grpc/impl/codegen/byte_buffer.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/log.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/slice_buffer.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_win32.h",
-    "include/grpc/impl/codegen/time.h",
-    "include/grpc/status.h",
-    "include/grpc/support/alloc.h",
-    "include/grpc/support/atm.h",
-    "include/grpc/support/host_port.h",
-    "include/grpc/support/log.h",
-    "include/grpc/support/port_platform.h",
-    "include/grpc/support/slice.h",
-    "include/grpc/support/slice_buffer.h",
-    "include/grpc/support/string_util.h",
-    "include/grpc/support/sync.h",
-    "include/grpc/support/time.h",
-    "include/grpc/support/useful.h",
-    "src/core/lib/support/string.h",
-    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
@@ -475,9 +439,6 @@ cc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
-    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
-    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
-    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -522,7 +483,6 @@ cc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
-    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1500,9 +1460,6 @@ objc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
-    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
-    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
-    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -1547,7 +1504,6 @@ objc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
-    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1675,42 +1631,6 @@ objc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
-    "include/grpc/byte_buffer.h",
-    "include/grpc/grpc.h",
-    "include/grpc/impl/codegen/alloc.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_win32.h",
-    "include/grpc/impl/codegen/byte_buffer.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/log.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/slice_buffer.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_win32.h",
-    "include/grpc/impl/codegen/time.h",
-    "include/grpc/status.h",
-    "include/grpc/support/alloc.h",
-    "include/grpc/support/atm.h",
-    "include/grpc/support/host_port.h",
-    "include/grpc/support/log.h",
-    "include/grpc/support/port_platform.h",
-    "include/grpc/support/slice.h",
-    "include/grpc/support/slice_buffer.h",
-    "include/grpc/support/string_util.h",
-    "include/grpc/support/sync.h",
-    "include/grpc/support/time.h",
-    "include/grpc/support/useful.h",
-    "src/core/lib/support/string.h",
-    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
diff --git a/Makefile b/Makefile
index a684ea8611..ffaf770144 100644
--- a/Makefile
+++ b/Makefile
@@ -2623,9 +2623,6 @@ LIBGRPC_SRC = \
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
-    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
-    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -2673,7 +2670,6 @@ PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/sync_posix.h \
     include/grpc/impl/codegen/sync_win32.h \
     include/grpc/impl/codegen/time.h \
-    include/grpc/grpc_cronet.h \
     include/grpc/grpc_security.h \
     include/grpc/grpc_security_constants.h \
     include/grpc/census.h \
@@ -14321,9 +14317,6 @@ ifneq ($(OPENSSL_DEP),)
 # otherwise parallel compilation will fail if a source is compiled first.
 src/core/ext/transport/chttp2/client/secure/secure_channel_create.c: $(OPENSSL_DEP)
 src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/client/secure/cronet_channel_create.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/transport/cronet_api_dummy.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/transport/cronet_transport.c: $(OPENSSL_DEP)
 src/core/lib/http/httpcli_security_connector.c: $(OPENSSL_DEP)
 src/core/lib/security/b64.c: $(OPENSSL_DEP)
 src/core/lib/security/client_auth_filter.c: $(OPENSSL_DEP)
diff --git a/binding.gyp b/binding.gyp
index 12a745ffb0..4314ab7243 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -709,9 +709,6 @@
         'src/core/ext/client_config/uri_parser.c',
         'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
         'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-        'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-        'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
-        'src/core/ext/transport/cronet/transport/cronet_transport.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
         'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
diff --git a/build.yaml b/build.yaml
index 13916830c1..5e47c08455 100644
--- a/build.yaml
+++ b/build.yaml
@@ -400,7 +400,6 @@ filegroups:
   - grpc_client_config
 - name: grpc_secure
   public_headers:
-  - include/grpc/grpc_cronet.h
   - include/grpc/grpc_security.h
   - include/grpc/grpc_security_constants.h
   headers:
@@ -548,63 +547,6 @@ filegroups:
   - grpc_transport_chttp2
   - grpc_base
   - grpc_secure
-- name: grpc_transport_cronet_client_secure
-  headers:
-  - include/grpc/byte_buffer.h
-  - include/grpc/grpc.h
-  - include/grpc/impl/codegen/alloc.h
-  - include/grpc/impl/codegen/atm.h
-  - include/grpc/impl/codegen/atm_gcc_atomic.h
-  - include/grpc/impl/codegen/atm_gcc_sync.h
-  - include/grpc/impl/codegen/atm_win32.h
-  - include/grpc/impl/codegen/byte_buffer.h
-  - include/grpc/impl/codegen/compression_types.h
-  - include/grpc/impl/codegen/connectivity_state.h
-  - include/grpc/impl/codegen/grpc_types.h
-  - include/grpc/impl/codegen/log.h
-  - include/grpc/impl/codegen/port_platform.h
-  - include/grpc/impl/codegen/propagation_bits.h
-  - include/grpc/impl/codegen/slice.h
-  - include/grpc/impl/codegen/slice_buffer.h
-  - include/grpc/impl/codegen/status.h
-  - include/grpc/impl/codegen/sync.h
-  - include/grpc/impl/codegen/sync_generic.h
-  - include/grpc/impl/codegen/sync_posix.h
-  - include/grpc/impl/codegen/sync_win32.h
-  - include/grpc/impl/codegen/time.h
-  - include/grpc/status.h
-  - include/grpc/support/alloc.h
-  - include/grpc/support/atm.h
-  - include/grpc/support/host_port.h
-  - include/grpc/support/log.h
-  - include/grpc/support/port_platform.h
-  - include/grpc/support/slice.h
-  - include/grpc/support/slice_buffer.h
-  - include/grpc/support/string_util.h
-  - include/grpc/support/sync.h
-  - include/grpc/support/time.h
-  - include/grpc/support/useful.h
-  - src/core/ext/transport/chttp2/transport/incoming_metadata.h
-  - src/core/lib/channel/channel_stack.h
-  - src/core/lib/channel/context.h
-  - src/core/lib/debug/trace.h
-  - src/core/lib/iomgr/closure.h
-  - src/core/lib/iomgr/exec_ctx.h
-  - src/core/lib/iomgr/pollset.h
-  - src/core/lib/iomgr/pollset_set.h
-  - src/core/lib/support/string.h
-  - src/core/lib/surface/channel.h
-  - src/core/lib/surface/channel_stack_type.h
-  - src/core/lib/transport/byte_stream.h
-  - src/core/lib/transport/metadata.h
-  - src/core/lib/transport/metadata_batch.h
-  - src/core/lib/transport/transport.h
-  - src/core/lib/transport/transport_impl.h
-  - third_party/objective_c/Cronet/cronet_c_for_grpc.h
-  src:
-  - src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
-  - src/core/ext/transport/cronet/transport/cronet_api_dummy.c
-  - src/core/ext/transport/cronet/transport/cronet_transport.c
 - name: nanopb
   headers:
   - third_party/nanopb/pb.h
@@ -792,7 +734,6 @@ libs:
   - grpc_transport_chttp2_client_secure
   - grpc_transport_chttp2_server_insecure
   - grpc_transport_chttp2_client_insecure
-  - grpc_transport_cronet_client_secure
   - grpc_lb_policy_grpclb
   - grpc_lb_policy_pick_first
   - grpc_lb_policy_round_robin
diff --git a/config.m4 b/config.m4
index 5259e679ba..74f9ad242a 100644
--- a/config.m4
+++ b/config.m4
@@ -228,9 +228,6 @@ if test "$PHP_GRPC" != "no"; then
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
-    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
-    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -569,8 +566,6 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/insecure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/secure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/transport)
-  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/client/secure)
-  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/transport)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/channel)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/compression)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/debug)
diff --git a/gRPC.podspec b/gRPC.podspec
index 018306ca64..569f89bf7c 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -287,42 +287,6 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/subchannel_call_holder.h',
                       'src/core/ext/client_config/subchannel_index.h',
                       'src/core/ext/client_config/uri_parser.h',
-                      'include/grpc/byte_buffer.h',
-                      'include/grpc/grpc.h',
-                      'include/grpc/impl/codegen/alloc.h',
-                      'include/grpc/impl/codegen/atm.h',
-                      'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                      'include/grpc/impl/codegen/atm_gcc_sync.h',
-                      'include/grpc/impl/codegen/atm_win32.h',
-                      'include/grpc/impl/codegen/byte_buffer.h',
-                      'include/grpc/impl/codegen/compression_types.h',
-                      'include/grpc/impl/codegen/connectivity_state.h',
-                      'include/grpc/impl/codegen/grpc_types.h',
-                      'include/grpc/impl/codegen/log.h',
-                      'include/grpc/impl/codegen/port_platform.h',
-                      'include/grpc/impl/codegen/propagation_bits.h',
-                      'include/grpc/impl/codegen/slice.h',
-                      'include/grpc/impl/codegen/slice_buffer.h',
-                      'include/grpc/impl/codegen/status.h',
-                      'include/grpc/impl/codegen/sync.h',
-                      'include/grpc/impl/codegen/sync_generic.h',
-                      'include/grpc/impl/codegen/sync_posix.h',
-                      'include/grpc/impl/codegen/sync_win32.h',
-                      'include/grpc/impl/codegen/time.h',
-                      'include/grpc/status.h',
-                      'include/grpc/support/alloc.h',
-                      'include/grpc/support/atm.h',
-                      'include/grpc/support/host_port.h',
-                      'include/grpc/support/log.h',
-                      'include/grpc/support/port_platform.h',
-                      'include/grpc/support/slice.h',
-                      'include/grpc/support/slice_buffer.h',
-                      'include/grpc/support/string_util.h',
-                      'include/grpc/support/sync.h',
-                      'include/grpc/support/time.h',
-                      'include/grpc/support/useful.h',
-                      'src/core/lib/support/string.h',
-                      'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                       'third_party/nanopb/pb.h',
@@ -361,7 +325,6 @@ Pod::Spec.new do |s|
                       'include/grpc/impl/codegen/sync_posix.h',
                       'include/grpc/impl/codegen/sync_win32.h',
                       'include/grpc/impl/codegen/time.h',
-                      'include/grpc/grpc_cronet.h',
                       'include/grpc/grpc_security.h',
                       'include/grpc/grpc_security_constants.h',
                       'include/grpc/census.h',
@@ -511,9 +474,6 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/uri_parser.c',
                       'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
                       'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-                      'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-                      'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
-                      'src/core/ext/transport/cronet/transport/cronet_transport.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
                       'third_party/nanopb/pb_common.c',
@@ -670,42 +630,6 @@ Pod::Spec.new do |s|
                               'src/core/ext/client_config/subchannel_call_holder.h',
                               'src/core/ext/client_config/subchannel_index.h',
                               'src/core/ext/client_config/uri_parser.h',
-                              'include/grpc/byte_buffer.h',
-                              'include/grpc/grpc.h',
-                              'include/grpc/impl/codegen/alloc.h',
-                              'include/grpc/impl/codegen/atm.h',
-                              'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                              'include/grpc/impl/codegen/atm_gcc_sync.h',
-                              'include/grpc/impl/codegen/atm_win32.h',
-                              'include/grpc/impl/codegen/byte_buffer.h',
-                              'include/grpc/impl/codegen/compression_types.h',
-                              'include/grpc/impl/codegen/connectivity_state.h',
-                              'include/grpc/impl/codegen/grpc_types.h',
-                              'include/grpc/impl/codegen/log.h',
-                              'include/grpc/impl/codegen/port_platform.h',
-                              'include/grpc/impl/codegen/propagation_bits.h',
-                              'include/grpc/impl/codegen/slice.h',
-                              'include/grpc/impl/codegen/slice_buffer.h',
-                              'include/grpc/impl/codegen/status.h',
-                              'include/grpc/impl/codegen/sync.h',
-                              'include/grpc/impl/codegen/sync_generic.h',
-                              'include/grpc/impl/codegen/sync_posix.h',
-                              'include/grpc/impl/codegen/sync_win32.h',
-                              'include/grpc/impl/codegen/time.h',
-                              'include/grpc/status.h',
-                              'include/grpc/support/alloc.h',
-                              'include/grpc/support/atm.h',
-                              'include/grpc/support/host_port.h',
-                              'include/grpc/support/log.h',
-                              'include/grpc/support/port_platform.h',
-                              'include/grpc/support/slice.h',
-                              'include/grpc/support/slice_buffer.h',
-                              'include/grpc/support/string_util.h',
-                              'include/grpc/support/sync.h',
-                              'include/grpc/support/time.h',
-                              'include/grpc/support/useful.h',
-                              'src/core/lib/support/string.h',
-                              'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                               'third_party/nanopb/pb.h',
diff --git a/grpc.def b/grpc.def
index 09a94a6cd0..61948ed1b8 100644
--- a/grpc.def
+++ b/grpc.def
@@ -87,7 +87,6 @@ EXPORTS
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
     grpc_call_error_to_string
-    grpc_cronet_secure_channel_create
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/grpc.gemspec b/grpc.gemspec
index ace28715dc..475fc990ad 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -169,7 +169,6 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/impl/codegen/sync_posix.h )
   s.files += %w( include/grpc/impl/codegen/sync_win32.h )
   s.files += %w( include/grpc/impl/codegen/time.h )
-  s.files += %w( include/grpc/grpc_cronet.h )
   s.files += %w( include/grpc/grpc_security.h )
   s.files += %w( include/grpc/grpc_security_constants.h )
   s.files += %w( include/grpc/census.h )
@@ -297,42 +296,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
   s.files += %w( src/core/ext/client_config/subchannel_index.h )
   s.files += %w( src/core/ext/client_config/uri_parser.h )
-  s.files += %w( include/grpc/byte_buffer.h )
-  s.files += %w( include/grpc/grpc.h )
-  s.files += %w( include/grpc/impl/codegen/alloc.h )
-  s.files += %w( include/grpc/impl/codegen/atm.h )
-  s.files += %w( include/grpc/impl/codegen/atm_gcc_atomic.h )
-  s.files += %w( include/grpc/impl/codegen/atm_gcc_sync.h )
-  s.files += %w( include/grpc/impl/codegen/atm_win32.h )
-  s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
-  s.files += %w( include/grpc/impl/codegen/compression_types.h )
-  s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
-  s.files += %w( include/grpc/impl/codegen/grpc_types.h )
-  s.files += %w( include/grpc/impl/codegen/log.h )
-  s.files += %w( include/grpc/impl/codegen/port_platform.h )
-  s.files += %w( include/grpc/impl/codegen/propagation_bits.h )
-  s.files += %w( include/grpc/impl/codegen/slice.h )
-  s.files += %w( include/grpc/impl/codegen/slice_buffer.h )
-  s.files += %w( include/grpc/impl/codegen/status.h )
-  s.files += %w( include/grpc/impl/codegen/sync.h )
-  s.files += %w( include/grpc/impl/codegen/sync_generic.h )
-  s.files += %w( include/grpc/impl/codegen/sync_posix.h )
-  s.files += %w( include/grpc/impl/codegen/sync_win32.h )
-  s.files += %w( include/grpc/impl/codegen/time.h )
-  s.files += %w( include/grpc/status.h )
-  s.files += %w( include/grpc/support/alloc.h )
-  s.files += %w( include/grpc/support/atm.h )
-  s.files += %w( include/grpc/support/host_port.h )
-  s.files += %w( include/grpc/support/log.h )
-  s.files += %w( include/grpc/support/port_platform.h )
-  s.files += %w( include/grpc/support/slice.h )
-  s.files += %w( include/grpc/support/slice_buffer.h )
-  s.files += %w( include/grpc/support/string_util.h )
-  s.files += %w( include/grpc/support/sync.h )
-  s.files += %w( include/grpc/support/time.h )
-  s.files += %w( include/grpc/support/useful.h )
-  s.files += %w( src/core/lib/support/string.h )
-  s.files += %w( third_party/objective_c/Cronet/cronet_c_for_grpc.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h )
   s.files += %w( third_party/nanopb/pb.h )
@@ -491,9 +454,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/uri_parser.c )
   s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
   s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
-  s.files += %w( src/core/ext/transport/cronet/client/secure/cronet_channel_create.c )
-  s.files += %w( src/core/ext/transport/cronet/transport/cronet_api_dummy.c )
-  s.files += %w( src/core/ext/transport/cronet/transport/cronet_transport.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c )
   s.files += %w( third_party/nanopb/pb_common.c )
diff --git a/include/grpc/grpc_cronet.h b/include/grpc/grpc_cronet.h
deleted file mode 100644
index 295e0f55e8..0000000000
--- a/include/grpc/grpc_cronet.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GRPC_GRPC_CRONET_H
-#define GRPC_GRPC_CRONET_H
-
-#include <grpc/grpc.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
-    void *engine, const char *target, const grpc_channel_args *args,
-    void *reserved);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GRPC_GRPC_CRONET_H */
diff --git a/package.xml b/package.xml
index 152d5d6190..feb27175a9 100644
--- a/package.xml
+++ b/package.xml
@@ -176,7 +176,6 @@
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/grpc_cronet.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security_constants.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/census.h" role="src" />
@@ -304,42 +303,6 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/byte_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/alloc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_win32.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/log.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_generic.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/alloc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/atm.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/host_port.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/log.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/port_platform.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/slice.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/slice_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/string_util.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/useful.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/string.h" role="src" />
-    <file baseinstalldir="/" name="third_party/objective_c/Cronet/cronet_c_for_grpc.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb.h" role="src" />
@@ -498,9 +461,6 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/cronet/client/secure/cronet_channel_create.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_api_dummy.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_transport.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
deleted file mode 100644
index df1acddcc0..0000000000
--- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <grpc/impl/codegen/port_platform.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/transport/transport_impl.h"
-
-// Cronet transport object
-typedef struct cronet_transport {
-  grpc_transport base;  // must be first element in this structure
-  void *engine;
-  char *host;
-} cronet_transport;
-
-extern grpc_transport_vtable grpc_cronet_vtable;
-
-GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
-    void *engine, const char *target, const grpc_channel_args *args,
-    void *reserved) {
-  cronet_transport *ct = gpr_malloc(sizeof(cronet_transport));
-  ct->base.vtable = &grpc_cronet_vtable;
-  ct->engine = engine;
-  ct->host = gpr_malloc(strlen(target) + 1);
-  strcpy(ct->host, target);
-  gpr_log(GPR_DEBUG,
-          "grpc_create_cronet_transport: cronet_engine = %p, target=%s", engine,
-          ct->host);
-
-  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  return grpc_channel_create(&exec_ctx, target, args,
-                             GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
-}
diff --git a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
deleted file mode 100644
index 687026c9fd..0000000000
--- a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/* This file has empty implementation of all the functions exposed by the cronet
-library, so we can build it in all environments */
-
-#include <stdbool.h>
-
-#include <grpc/support/log.h>
-
-#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
-
-#ifdef GRPC_COMPILE_WITH_CRONET
-/* link with the real CRONET library in the build system */
-#else
-/* Dummy implementation of cronet API just to test for build-ability */
-cronet_bidirectional_stream* cronet_bidirectional_stream_create(
-    cronet_engine* engine, void* annotation,
-    cronet_bidirectional_stream_callback* callback) {
-  GPR_ASSERT(0);
-  return NULL;
-}
-
-int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_start(
-    cronet_bidirectional_stream* stream, const char* url, int priority,
-    const char* method, const cronet_bidirectional_stream_header_array* headers,
-    bool end_of_stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
-                                     char* buffer, int capacity) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
-                                      const char* buffer, int count,
-                                      bool end_of_stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-#endif /* GRPC_COMPILE_WITH_CRONET */
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
deleted file mode 100644
index 5bb085195c..0000000000
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ /dev/null
@@ -1,640 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <string.h>
-
-#include <grpc/impl/codegen/port_platform.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/host_port.h>
-#include <grpc/support/log.h>
-#include <grpc/support/slice_buffer.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/useful.h>
-
-#include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/support/string.h"
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/transport/metadata_batch.h"
-#include "src/core/lib/transport/transport_impl.h"
-#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
-
-#define GRPC_HEADER_SIZE_IN_BYTES 5
-
-// Global flag that gets set with GRPC_TRACE env variable
-int grpc_cronet_trace = 1;
-
-// Cronet transport object
-struct grpc_cronet_transport {
-  grpc_transport base; /* must be first element in this structure */
-  cronet_engine *engine;
-  char *host;
-};
-
-typedef struct grpc_cronet_transport grpc_cronet_transport;
-
-enum send_state {
-  CRONET_SEND_IDLE = 0,
-  CRONET_REQ_STARTED,
-  CRONET_SEND_HEADER,
-  CRONET_WRITE,
-  CRONET_WRITE_COMPLETED,
-};
-
-enum recv_state {
-  CRONET_RECV_IDLE = 0,
-  CRONET_RECV_READ_LENGTH,
-  CRONET_RECV_READ_DATA,
-  CRONET_RECV_CLOSED,
-};
-
-static const char *recv_state_name[] = {
-    "CRONET_RECV_IDLE", "CRONET_RECV_READ_LENGTH", "CRONET_RECV_READ_DATA,",
-    "CRONET_RECV_CLOSED"};
-
-// Enum that identifies calling function.
-enum e_caller {
-  PERFORM_STREAM_OP,
-  ON_READ_COMPLETE,
-  ON_RESPONSE_HEADERS_RECEIVED,
-  ON_RESPONSE_TRAILERS_RECEIVED
-};
-
-enum callback_id {
-  CB_SEND_INITIAL_METADATA = 0,
-  CB_SEND_MESSAGE,
-  CB_SEND_TRAILING_METADATA,
-  CB_RECV_MESSAGE,
-  CB_RECV_INITIAL_METADATA,
-  CB_RECV_TRAILING_METADATA,
-  CB_NUM_CALLBACKS
-};
-
-struct stream_obj {
-  // we store received bytes here as they trickle in.
-  gpr_slice_buffer write_slice_buffer;
-  cronet_bidirectional_stream *cbs;
-  gpr_slice slice;
-  gpr_slice_buffer read_slice_buffer;
-  struct grpc_slice_buffer_stream sbs;
-  char *read_buffer;
-  int remaining_read_bytes;
-  int total_read_bytes;
-
-  char *write_buffer;
-  size_t write_buffer_size;
-
-  // Hold the URL
-  char *url;
-
-  bool response_headers_received;
-  bool read_requested;
-  bool response_trailers_received;
-  bool read_closed;
-
-  // Recv message stuff
-  grpc_byte_buffer **recv_message;
-  // Initial metadata stuff
-  grpc_metadata_batch *recv_initial_metadata;
-  // Trailing metadata stuff
-  grpc_metadata_batch *recv_trailing_metadata;
-  grpc_chttp2_incoming_metadata_buffer imb;
-
-  // This mutex protects receive state machine execution
-  gpr_mu recv_mu;
-  // we can queue up up to 2 callbacks for each OP
-  grpc_closure *callback_list[CB_NUM_CALLBACKS][2];
-
-  // storage for header
-  cronet_bidirectional_stream_header *headers;
-  uint32_t num_headers;
-  cronet_bidirectional_stream_header_array header_array;
-  // state tracking
-  enum recv_state cronet_recv_state;
-  enum send_state cronet_send_state;
-};
-
-typedef struct stream_obj stream_obj;
-
-static void next_send_step(stream_obj *s);
-static void next_recv_step(stream_obj *s, enum e_caller caller);
-
-static void set_pollset_do_nothing(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                                   grpc_stream *gs, grpc_pollset *pollset) {}
-
-static void enqueue_callbacks(grpc_closure *callback_list[]) {
-  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  if (callback_list[0]) {
-    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[0], true, NULL);
-    callback_list[0] = NULL;
-  }
-  if (callback_list[1]) {
-    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[1], true, NULL);
-    callback_list[1] = NULL;
-  }
-  grpc_exec_ctx_finish(&exec_ctx);
-}
-
-static void on_canceled(cronet_bidirectional_stream *stream) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "on_canceled %p", stream);
-  }
-}
-
-static void on_failed(cronet_bidirectional_stream *stream, int net_error) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "on_failed %p, error = %d", stream, net_error);
-  }
-}
-
-static void on_succeeded(cronet_bidirectional_stream *stream) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "on_succeeded %p", stream);
-  }
-}
-
-static void on_response_trailers_received(
-    cronet_bidirectional_stream *stream,
-    const cronet_bidirectional_stream_header_array *trailers) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "R: on_response_trailers_received");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-
-  memset(&s->imb, 0, sizeof(s->imb));
-  grpc_chttp2_incoming_metadata_buffer_init(&s->imb);
-  unsigned int i = 0;
-  for (i = 0; i < trailers->count; i++) {
-    grpc_chttp2_incoming_metadata_buffer_add(
-        &s->imb, grpc_mdelem_from_metadata_strings(
-                     grpc_mdstr_from_string(trailers->headers[i].key),
-                     grpc_mdstr_from_string(trailers->headers[i].value)));
-  }
-  s->response_trailers_received = true;
-  next_recv_step(s, ON_RESPONSE_TRAILERS_RECEIVED);
-}
-
-static void on_write_completed(cronet_bidirectional_stream *stream,
-                               const char *data) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "W: on_write_completed");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-  enqueue_callbacks(s->callback_list[CB_SEND_MESSAGE]);
-  s->cronet_send_state = CRONET_WRITE_COMPLETED;
-  next_send_step(s);
-}
-
-static void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
-  gpr_slice read_data_slice = gpr_slice_malloc((uint32_t)s->total_read_bytes);
-  uint8_t *dst_p = GPR_SLICE_START_PTR(read_data_slice);
-  memcpy(dst_p, recv_data, (size_t)s->total_read_bytes);
-  gpr_slice_buffer_add(&s->read_slice_buffer, read_data_slice);
-  grpc_slice_buffer_stream_init(&s->sbs, &s->read_slice_buffer, 0);
-  *s->recv_message = (grpc_byte_buffer *)&s->sbs;
-}
-
-static int parse_grpc_header(const uint8_t *data) {
-  const uint8_t *p = data + 1;
-  int length = 0;
-  length |= ((uint8_t)*p++) << 24;
-  length |= ((uint8_t)*p++) << 16;
-  length |= ((uint8_t)*p++) << 8;
-  length |= ((uint8_t)*p++);
-  return length;
-}
-
-static void on_read_completed(cronet_bidirectional_stream *stream, char *data,
-                              int count) {
-  stream_obj *s = (stream_obj *)stream->annotation;
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "R: on_read_completed count=%d, total=%d, remaining=%d",
-            count, s->total_read_bytes, s->remaining_read_bytes);
-  }
-  if (count > 0) {
-    GPR_ASSERT(s->recv_message);
-    s->remaining_read_bytes -= count;
-    next_recv_step(s, ON_READ_COMPLETE);
-  } else {
-    s->read_closed = true;
-    next_recv_step(s, ON_READ_COMPLETE);
-  }
-}
-
-static void on_response_headers_received(
-    cronet_bidirectional_stream *stream,
-    const cronet_bidirectional_stream_header_array *headers,
-    const char *negotiated_protocol) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "R: on_response_headers_received");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-  enqueue_callbacks(s->callback_list[CB_RECV_INITIAL_METADATA]);
-  s->response_headers_received = true;
-  next_recv_step(s, ON_RESPONSE_HEADERS_RECEIVED);
-}
-
-static void on_request_headers_sent(cronet_bidirectional_stream *stream) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "W: on_request_headers_sent");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-  enqueue_callbacks(s->callback_list[CB_SEND_INITIAL_METADATA]);
-  s->cronet_send_state = CRONET_SEND_HEADER;
-  next_send_step(s);
-}
-
-// Callback function pointers (invoked by cronet in response to events)
-static cronet_bidirectional_stream_callback callbacks = {
-    on_request_headers_sent,
-    on_response_headers_received,
-    on_read_completed,
-    on_write_completed,
-    on_response_trailers_received,
-    on_succeeded,
-    on_failed,
-    on_canceled};
-
-static void invoke_closing_callback(stream_obj *s) {
-  grpc_chttp2_incoming_metadata_buffer_publish(&s->imb,
-                                               s->recv_trailing_metadata);
-  if (s->callback_list[CB_RECV_TRAILING_METADATA]) {
-    enqueue_callbacks(s->callback_list[CB_RECV_TRAILING_METADATA]);
-  }
-}
-
-static void set_recv_state(stream_obj *s, enum recv_state state) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "next_state = %s", recv_state_name[state]);
-  }
-  s->cronet_recv_state = state;
-}
-
-// This is invoked from perform_stream_op, and all on_xxxx callbacks.
-static void next_recv_step(stream_obj *s, enum e_caller caller) {
-  gpr_mu_lock(&s->recv_mu);
-  switch (s->cronet_recv_state) {
-    case CRONET_RECV_IDLE:
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_IDLE");
-      }
-      if (caller == PERFORM_STREAM_OP ||
-          caller == ON_RESPONSE_HEADERS_RECEIVED) {
-        if (s->read_closed && s->response_trailers_received) {
-          invoke_closing_callback(s);
-          set_recv_state(s, CRONET_RECV_CLOSED);
-        } else if (s->response_headers_received == true &&
-                   s->read_requested == true) {
-          set_recv_state(s, CRONET_RECV_READ_LENGTH);
-          s->total_read_bytes = s->remaining_read_bytes =
-              GRPC_HEADER_SIZE_IN_BYTES;
-          GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {
-            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
-          }
-          cronet_bidirectional_stream_read(s->cbs, s->read_buffer,
-                                           s->remaining_read_bytes);
-        }
-      }
-      break;
-    case CRONET_RECV_READ_LENGTH:
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_LENGTH");
-      }
-      if (caller == ON_READ_COMPLETE) {
-        if (s->read_closed) {
-          invoke_closing_callback(s);
-          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
-          set_recv_state(s, CRONET_RECV_CLOSED);
-        } else {
-          GPR_ASSERT(s->remaining_read_bytes == 0);
-          set_recv_state(s, CRONET_RECV_READ_DATA);
-          s->total_read_bytes = s->remaining_read_bytes =
-              parse_grpc_header((const uint8_t *)s->read_buffer);
-          s->read_buffer =
-              gpr_realloc(s->read_buffer, (uint32_t)s->remaining_read_bytes);
-          GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {
-            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
-          }
-          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer,
-                                           s->remaining_read_bytes);
-        }
-      }
-      break;
-    case CRONET_RECV_READ_DATA:
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_DATA");
-      }
-      if (caller == ON_READ_COMPLETE) {
-        if (s->remaining_read_bytes > 0) {
-          int offset = s->total_read_bytes - s->remaining_read_bytes;
-          GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {
-            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
-          }
-          cronet_bidirectional_stream_read(
-              s->cbs, (char *)s->read_buffer + offset, s->remaining_read_bytes);
-        } else {
-          gpr_slice_buffer_init(&s->read_slice_buffer);
-          uint8_t *p = (uint8_t *)s->read_buffer;
-          process_recv_message(s, p);
-          set_recv_state(s, CRONET_RECV_IDLE);
-          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
-        }
-      }
-      break;
-    case CRONET_RECV_CLOSED:
-      break;
-    default:
-      GPR_ASSERT(0);  // Should not reach here
-      break;
-  }
-  gpr_mu_unlock(&s->recv_mu);
-}
-
-// This function takes the data from s->write_slice_buffer and assembles into
-// a contiguous byte stream with 5 byte gRPC header prepended.
-static void create_grpc_frame(stream_obj *s) {
-  gpr_slice slice = gpr_slice_buffer_take_first(&s->write_slice_buffer);
-  uint8_t *raw_data = GPR_SLICE_START_PTR(slice);
-  size_t length = GPR_SLICE_LENGTH(slice);
-  s->write_buffer_size = length + GRPC_HEADER_SIZE_IN_BYTES;
-  s->write_buffer = gpr_realloc(s->write_buffer, s->write_buffer_size);
-  uint8_t *p = (uint8_t *)s->write_buffer;
-  // Append 5 byte header
-  *p++ = 0;
-  *p++ = (uint8_t)(length >> 24);
-  *p++ = (uint8_t)(length >> 16);
-  *p++ = (uint8_t)(length >> 8);
-  *p++ = (uint8_t)(length);
-  // append actual data
-  memcpy(p, raw_data, length);
-}
-
-static void do_write(stream_obj *s) {
-  gpr_slice_buffer *sb = &s->write_slice_buffer;
-  GPR_ASSERT(sb->count <= 1);
-  if (sb->count > 0) {
-    create_grpc_frame(s);
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
-    }
-    cronet_bidirectional_stream_write(s->cbs, s->write_buffer,
-                                      (int)s->write_buffer_size, false);
-  }
-}
-
-//
-static void next_send_step(stream_obj *s) {
-  switch (s->cronet_send_state) {
-    case CRONET_SEND_IDLE:
-      GPR_ASSERT(
-          s->cbs);  // cronet_bidirectional_stream is not initialized yet.
-      s->cronet_send_state = CRONET_REQ_STARTED;
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_start to %s", s->url);
-      }
-      cronet_bidirectional_stream_start(s->cbs, s->url, 0, "POST",
-                                        &s->header_array, false);
-      // we no longer need the memory that was allocated earlier.
-      gpr_free(s->header_array.headers);
-      break;
-    case CRONET_SEND_HEADER:
-      do_write(s);
-      s->cronet_send_state = CRONET_WRITE;
-      break;
-    case CRONET_WRITE_COMPLETED:
-      do_write(s);
-      break;
-    default:
-      GPR_ASSERT(0);
-      break;
-  }
-}
-
-static void convert_metadata_to_cronet_headers(grpc_linked_mdelem *head,
-                                               const char *host,
-                                               stream_obj *s) {
-  grpc_linked_mdelem *curr = head;
-  // Walk the linked list and get number of header fields
-  uint32_t num_headers_available = 0;
-  while (curr != NULL) {
-    curr = curr->next;
-    num_headers_available++;
-  }
-  // Allocate enough memory
-  s->headers = (cronet_bidirectional_stream_header *)gpr_malloc(
-      sizeof(cronet_bidirectional_stream_header) * num_headers_available);
-
-  // Walk the linked list again, this time copying the header fields.
-  // s->num_headers
-  // can be less than num_headers_available, as some headers are not used for
-  // cronet
-  curr = head;
-  s->num_headers = 0;
-  while (s->num_headers < num_headers_available) {
-    grpc_mdelem *mdelem = curr->md;
-    curr = curr->next;
-    const char *key = grpc_mdstr_as_c_string(mdelem->key);
-    const char *value = grpc_mdstr_as_c_string(mdelem->value);
-    if (strcmp(key, ":scheme") == 0 || strcmp(key, ":method") == 0 ||
-        strcmp(key, ":authority") == 0) {
-      // Cronet populates these fields on its own.
-      continue;
-    }
-    if (strcmp(key, ":path") == 0) {
-      // Create URL by appending :path value to the hostname
-      gpr_asprintf(&s->url, "https://%s%s", host, value);
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "extracted URL = %s", s->url);
-      }
-      continue;
-    }
-    s->headers[s->num_headers].key = key;
-    s->headers[s->num_headers].value = value;
-    s->num_headers++;
-    if (curr == NULL) {
-      break;
-    }
-  }
-}
-
-static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                              grpc_stream *gs, grpc_transport_stream_op *op) {
-  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
-  GPR_ASSERT(ct->engine);
-  stream_obj *s = (stream_obj *)gs;
-  if (op->recv_trailing_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG,
-              "perform_stream_op - recv_trailing_metadata: on_complete=%p",
-              op->on_complete);
-    }
-    s->recv_trailing_metadata = op->recv_trailing_metadata;
-    GPR_ASSERT(!s->callback_list[CB_RECV_TRAILING_METADATA][0]);
-    s->callback_list[CB_RECV_TRAILING_METADATA][0] = op->on_complete;
-  }
-  if (op->recv_message) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "perform_stream_op - recv_message: on_complete=%p",
-              op->on_complete);
-    }
-    s->recv_message = (grpc_byte_buffer **)op->recv_message;
-    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][0]);
-    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][1]);
-    s->callback_list[CB_RECV_MESSAGE][0] = op->recv_message_ready;
-    s->callback_list[CB_RECV_MESSAGE][1] = op->on_complete;
-    s->read_requested = true;
-    next_recv_step(s, PERFORM_STREAM_OP);
-  }
-  if (op->recv_initial_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "perform_stream_op - recv_initial_metadata:=%p",
-              op->on_complete);
-    }
-    s->recv_initial_metadata = op->recv_initial_metadata;
-    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][0]);
-    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][1]);
-    s->callback_list[CB_RECV_INITIAL_METADATA][0] =
-        op->recv_initial_metadata_ready;
-    s->callback_list[CB_RECV_INITIAL_METADATA][1] = op->on_complete;
-  }
-  if (op->send_initial_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG,
-              "perform_stream_op - send_initial_metadata: on_complete=%p",
-              op->on_complete);
-    }
-    s->num_headers = 0;
-    convert_metadata_to_cronet_headers(op->send_initial_metadata->list.head,
-                                       ct->host, s);
-    s->header_array.count = s->num_headers;
-    s->header_array.capacity = s->num_headers;
-    s->header_array.headers = s->headers;
-    GPR_ASSERT(!s->callback_list[CB_SEND_INITIAL_METADATA][0]);
-    s->callback_list[CB_SEND_INITIAL_METADATA][0] = op->on_complete;
-  }
-  if (op->send_message) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "perform_stream_op - send_message: on_complete=%p",
-              op->on_complete);
-    }
-    grpc_byte_stream_next(exec_ctx, op->send_message, &s->slice,
-                          op->send_message->length, NULL);
-    // Check that compression flag is not ON. We don't support compression yet.
-    // TODO (makdharma): add compression support
-    GPR_ASSERT(op->send_message->flags == 0);
-    gpr_slice_buffer_add(&s->write_slice_buffer, s->slice);
-    if (s->cbs == NULL) {
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_create");
-      }
-      s->cbs = cronet_bidirectional_stream_create(ct->engine, s, &callbacks);
-      GPR_ASSERT(s->cbs);
-      s->read_closed = false;
-      s->response_trailers_received = false;
-      s->response_headers_received = false;
-      s->cronet_send_state = CRONET_SEND_IDLE;
-      s->cronet_recv_state = CRONET_RECV_IDLE;
-    }
-    GPR_ASSERT(!s->callback_list[CB_SEND_MESSAGE][0]);
-    s->callback_list[CB_SEND_MESSAGE][0] = op->on_complete;
-    next_send_step(s);
-  }
-  if (op->send_trailing_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG,
-              "perform_stream_op - send_trailing_metadata: on_complete=%p",
-              op->on_complete);
-    }
-    GPR_ASSERT(!s->callback_list[CB_SEND_TRAILING_METADATA][0]);
-    s->callback_list[CB_SEND_TRAILING_METADATA][0] = op->on_complete;
-    if (s->cbs) {
-      // Send an "empty" write to the far end to signal that we're done.
-      // This will induce the server to send down trailers.
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
-      }
-      cronet_bidirectional_stream_write(s->cbs, "abc", 0, true);
-    } else {
-      // We never created a stream. This was probably an empty request.
-      invoke_closing_callback(s);
-    }
-  }
-}
-
-static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                       grpc_stream *gs, grpc_stream_refcount *refcount,
-                       const void *server_data) {
-  stream_obj *s = (stream_obj *)gs;
-  memset(s->callback_list, 0, sizeof(s->callback_list));
-  s->cbs = NULL;
-  gpr_mu_init(&s->recv_mu);
-  s->read_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
-  s->write_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
-  gpr_slice_buffer_init(&s->write_slice_buffer);
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "cronet_transport - init_stream");
-  }
-  return 0;
-}
-
-static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                           grpc_stream *gs, void *and_free_memory) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "Destroy stream");
-  }
-  stream_obj *s = (stream_obj *)gs;
-  s->cbs = NULL;
-  gpr_free(s->read_buffer);
-  gpr_free(s->write_buffer);
-  gpr_free(s->url);
-  gpr_mu_destroy(&s->recv_mu);
-  if (and_free_memory) {
-    gpr_free(and_free_memory);
-  }
-}
-
-static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
-  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
-  gpr_free(ct->host);
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "Destroy transport");
-  }
-}
-
-const grpc_transport_vtable grpc_cronet_vtable = {
-    sizeof(stream_obj),     "cronet_http",     init_stream,
-    set_pollset_do_nothing, perform_stream_op, NULL,
-    destroy_stream,         destroy_transport, NULL};
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index 09551472b5..f0a40dbb35 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -125,7 +125,6 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
-grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -396,7 +395,6 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
-  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index 54c8aaad13..d5e810b7cf 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -43,7 +43,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -326,9 +325,6 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
-typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
-extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
-#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 5314329c2c..dab62530aa 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -222,9 +222,6 @@ CORE_SOURCE_FILES = [
   'src/core/ext/client_config/uri_parser.c',
   'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
   'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-  'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-  'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
-  'src/core/ext/transport/cronet/transport/cronet_transport.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
   'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
   'third_party/nanopb/pb_common.c',
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index cebbe8c40f..bc43f9d36b 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -125,7 +125,6 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
-grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -392,7 +391,6 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
-  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index d7ea6c574c..b67361ca25 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -43,7 +43,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -326,9 +325,6 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
-typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
-extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
-#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/test/core/surface/public_headers_must_be_c89.c b/test/core/surface/public_headers_must_be_c89.c
index fd6ff2c26f..3eeb55d033 100644
--- a/test/core/surface/public_headers_must_be_c89.c
+++ b/test/core/surface/public_headers_must_be_c89.c
@@ -36,7 +36,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/grpc_security_constants.h>
 #include <grpc/impl/codegen/alloc.h>
diff --git a/third_party/objective_c/Cronet/cronet_c_for_grpc.h b/third_party/objective_c/Cronet/cronet_c_for_grpc.h
deleted file mode 100644
index 15a511aebd..0000000000
--- a/third_party/objective_c/Cronet/cronet_c_for_grpc.h
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
-#define COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stddef.h>
-
-/* Cronet Engine API. */
-
-/* Opaque object representing Cronet Engine. Created and configured outside
- * of this API to facilitate sharing with other components */
-typedef struct cronet_engine { void* obj; } cronet_engine;
-
-void cronet_engine_add_quic_hint(cronet_engine* engine,
-                                 const char* host,
-                                 int port,
-                                 int alternate_port);
-
-/* Cronet Bidirectional Stream API */
-
-/* Opaque object representing Cronet Bidirectional Stream. */
-typedef struct cronet_bidirectional_stream {
-  void* obj;
-  void* annotation;
-} cronet_bidirectional_stream;
-
-/* A single request or response header element. */
-typedef struct cronet_bidirectional_stream_header {
-  const char* key;
-  const char* value;
-} cronet_bidirectional_stream_header;
-
-/* Array of request or response headers or trailers. */
-typedef struct cronet_bidirectional_stream_header_array {
-  size_t count;
-  size_t capacity;
-  cronet_bidirectional_stream_header* headers;
-} cronet_bidirectional_stream_header_array;
-
-/* Set of callbacks used to receive callbacks from bidirectional stream. */
-typedef struct cronet_bidirectional_stream_callback {
-  /* Invoked when request headers are sent. Indicates that stream has initiated
-   * the request. Consumer may call cronet_bidirectional_stream_write() to start
-   * writing data.
-   */
-  void (*on_request_headers_sent)(cronet_bidirectional_stream* stream);
-
-  /* Invoked when initial response headers are received.
-   * Consumer must call cronet_bidirectional_stream_read() to start reading.
-   * Consumer may call cronet_bidirectional_stream_write() to start writing or
-   * close the stream. Contents of |headers| is valid for duration of the call.
-   */
-  void (*on_response_headers_received)(
-      cronet_bidirectional_stream* stream,
-      const cronet_bidirectional_stream_header_array* headers,
-      const char* negotiated_protocol);
-
-  /* Invoked when data is read into the buffer passed to
-   * cronet_bidirectional_stream_read(). Only part of the buffer may be
-   * populated. To continue reading, call cronet_bidirectional_stream_read().
-   * It may be invoked after on_response_trailers_received()}, if there was
-   * pending read data before trailers were received.
-   *
-   * If count is 0, it means the remote side has signaled that it will send no
-   * more data; future calls to cronet_bidirectional_stream_read() will result
-   * in the on_data_read() callback or on_succeded() callback if
-   * cronet_bidirectional_stream_write() was invoked with end_of_stream set to
-   * true.
-   */
-  void (*on_read_completed)(cronet_bidirectional_stream* stream,
-                            char* data,
-                            int count);
-
-  /**
-   * Invoked when all data passed to cronet_bidirectional_stream_write() is
-   * sent.
-   * To continue writing, call cronet_bidirectional_stream_write().
-   */
-  void (*on_write_completed)(cronet_bidirectional_stream* stream,
-                             const char* data);
-
-  /* Invoked when trailers are received before closing the stream. Only invoked
-   * when server sends trailers, which it may not. May be invoked while there is
-   * read data remaining in local buffer. Contents of |trailers| is valid for
-   * duration of the call.
-   */
-  void (*on_response_trailers_received)(
-      cronet_bidirectional_stream* stream,
-      const cronet_bidirectional_stream_header_array* trailers);
-
-  /**
-   * Invoked when there is no data to be read or written and the stream is
-   * closed successfully remotely and locally. Once invoked, no further callback
-   * methods will be invoked.
-   */
-  void (*on_succeded)(cronet_bidirectional_stream* stream);
-
-  /**
-   * Invoked if the stream failed for any reason after
-   * cronet_bidirectional_stream_start(). HTTP/2 error codes are
-   * mapped to chrome net error codes. Once invoked, no further callback methods
-   * will be invoked.
-   */
-  void (*on_failed)(cronet_bidirectional_stream* stream, int net_error);
-
-  /**
-   * Invoked if the stream was canceled via
-   * cronet_bidirectional_stream_cancel(). Once invoked, no further callback
-   * methods will be invoked.
-   */
-  void (*on_canceled)(cronet_bidirectional_stream* stream);
-} cronet_bidirectional_stream_callback;
-
-/* Create a new stream object that uses |engine| and |callback|. All stream
- * tasks are performed asynchronously on the |engine| network thread. |callback|
- * methods are invoked synchronously on the |engine| network thread, but must
- * not run tasks on the current thread to prevent blocking networking operations
- * and causing exceptions during shutdown. The |annotation| is stored in
- * bidirectional stream for arbitrary use by application.
- *
- * Returned |cronet_bidirectional_stream*| is owned by the caller, and must be
- * destroyed using |cronet_bidirectional_stream_destroy|.
- *
- * Both |calback| and |engine| must remain valid until stream is destroyed.
- */
-cronet_bidirectional_stream* cronet_bidirectional_stream_create(
-    cronet_engine* engine,
-    void* annotation,
-    cronet_bidirectional_stream_callback* callback);
-
-/* TBD: The following methods return int. Should it be a custom type? */
-
-/* Destroy stream object. Destroy could be called from any thread, including
- * network thread, but is posted, so |stream| is valid until calling task is
- * complete.
- */
-int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream);
-
-/* Start the stream by sending request to |url| using |method| and |headers|. If
- * |end_of_stream| is true, then no data is expected to be written.
- */
-int cronet_bidirectional_stream_start(
-    cronet_bidirectional_stream* stream,
-    const char* url,
-    int priority,
-    const char* method,
-    const cronet_bidirectional_stream_header_array* headers,
-    bool end_of_stream);
-
-/* Read response data into |buffer| of |capacity| length. Must only be called at
- * most once in response to each invocation of the
- * on_response_headers_received() and on_read_completed() methods of the
- * cronet_bidirectional_stream_callback.
- * Each call will result in an invocation of one of the callback's
- * on_read_completed  method if data is read, its on_succeeded() method if
- * the stream is closed, or its on_failed() method if there's an error.
- */
-int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
-                                     char* buffer,
-                                     int capacity);
-
-/* Read response data into |buffer| of |capacity| length. Must only be called at
- * most once in response to each invocation of the
- * on_response_headers_received() and on_read_completed() methods of the
- * cronet_bidirectional_stream_callback.
- * Each call will result in an invocation of one of the callback's
- * on_read_completed  method if data is read, its on_succeeded() method if
- * the stream is closed, or its on_failed() method if there's an error.
- */
-int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
-                                      const char* buffer,
-                                      int count,
-                                      bool end_of_stream);
-
-/* Cancels the stream. Can be called at any time after
- * cronet_bidirectional_stream_start(). The on_canceled() method of
- * cronet_bidirectional_stream_callback will be invoked when cancelation
- * is complete and no further callback methods will be invoked. If the
- * stream has completed or has not started, calling
- * cronet_bidirectional_stream_cancel() has no effect and on_canceled() will not
- * be  invoked. At most one callback method may be invoked after
- * cronet_bidirectional_stream_cancel() has completed.
- */
-int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream);
-
-/* Returns true if the |stream| was successfully started and is now done
- * (succeeded, canceled, or failed).
- * Returns false if the |stream| stream is not yet started or is in progress.
- */
-bool cronet_bidirectional_stream_is_done(cronet_bidirectional_stream* stream);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index aabca410da..eed84252cc 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -786,7 +786,6 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
-include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 3ffc6174ed..1fcc1fa140 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -786,7 +786,6 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
-include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
@@ -914,42 +913,6 @@ src/core/ext/client_config/subchannel.h \
 src/core/ext/client_config/subchannel_call_holder.h \
 src/core/ext/client_config/subchannel_index.h \
 src/core/ext/client_config/uri_parser.h \
-include/grpc/byte_buffer.h \
-include/grpc/grpc.h \
-include/grpc/impl/codegen/alloc.h \
-include/grpc/impl/codegen/atm.h \
-include/grpc/impl/codegen/atm_gcc_atomic.h \
-include/grpc/impl/codegen/atm_gcc_sync.h \
-include/grpc/impl/codegen/atm_win32.h \
-include/grpc/impl/codegen/byte_buffer.h \
-include/grpc/impl/codegen/compression_types.h \
-include/grpc/impl/codegen/connectivity_state.h \
-include/grpc/impl/codegen/grpc_types.h \
-include/grpc/impl/codegen/log.h \
-include/grpc/impl/codegen/port_platform.h \
-include/grpc/impl/codegen/propagation_bits.h \
-include/grpc/impl/codegen/slice.h \
-include/grpc/impl/codegen/slice_buffer.h \
-include/grpc/impl/codegen/status.h \
-include/grpc/impl/codegen/sync.h \
-include/grpc/impl/codegen/sync_generic.h \
-include/grpc/impl/codegen/sync_posix.h \
-include/grpc/impl/codegen/sync_win32.h \
-include/grpc/impl/codegen/time.h \
-include/grpc/status.h \
-include/grpc/support/alloc.h \
-include/grpc/support/atm.h \
-include/grpc/support/host_port.h \
-include/grpc/support/log.h \
-include/grpc/support/port_platform.h \
-include/grpc/support/slice.h \
-include/grpc/support/slice_buffer.h \
-include/grpc/support/string_util.h \
-include/grpc/support/sync.h \
-include/grpc/support/time.h \
-include/grpc/support/useful.h \
-src/core/lib/support/string.h \
-third_party/objective_c/Cronet/cronet_c_for_grpc.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \
 third_party/nanopb/pb.h \
@@ -1108,9 +1071,6 @@ src/core/ext/client_config/subchannel_index.c \
 src/core/ext/client_config/uri_parser.c \
 src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
 src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
-src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
-src/core/ext/transport/cronet/transport/cronet_transport.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
 third_party/nanopb/pb_common.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 8c67d2f844..3b3a49a5b2 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -4140,8 +4140,7 @@
       "grpc_transport_chttp2_client_insecure", 
       "grpc_transport_chttp2_client_secure", 
       "grpc_transport_chttp2_server_insecure", 
-      "grpc_transport_chttp2_server_secure", 
-      "grpc_transport_cronet_client_secure"
+      "grpc_transport_chttp2_server_secure"
     ], 
     "headers": [], 
     "language": "c", 
@@ -6015,7 +6014,6 @@
       "tsi"
     ], 
     "headers": [
-      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/security/auth_filters.h", 
@@ -6031,7 +6029,6 @@
     "language": "c", 
     "name": "grpc_secure", 
     "src": [
-      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/http/httpcli_security_connector.c", 
@@ -6267,121 +6264,6 @@
     "third_party": false, 
     "type": "filegroup"
   }, 
-  {
-    "deps": [], 
-    "headers": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/status.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h", 
-      "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
-    ], 
-    "language": "c", 
-    "name": "grpc_transport_cronet_client_secure", 
-    "src": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/status.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c", 
-      "src/core/ext/transport/cronet/transport/cronet_api_dummy.c", 
-      "src/core/ext/transport/cronet/transport/cronet_transport.c", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h"
-    ], 
-    "third_party": false, 
-    "type": "filegroup"
-  }, 
   {
     "deps": [], 
     "headers": [
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 7f0e5a8339..03f4eaa5be 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -293,7 +293,6 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\census.h" />
@@ -423,42 +422,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h" />
-    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h" />
@@ -765,12 +728,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 6d1d69a913..4617e3de0d 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -439,15 +439,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
-      <Filter>src\core\ext\transport\cronet\client\secure</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
-      <Filter>src\core\ext\transport\cronet\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
-      <Filter>src\core\ext\transport\cronet\transport</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -585,9 +576,6 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h">
       <Filter>include\grpc</Filter>
     </ClInclude>
@@ -971,114 +959,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
       <Filter>src\core\ext\client_config</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h">
-      <Filter>src\core\lib\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h">
-      <Filter>third_party\objective_c\Cronet</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
@@ -1130,9 +1010,6 @@
     <Filter Include="include\grpc\impl\codegen">
       <UniqueIdentifier>{def748f5-ed2a-a9bb-40d9-c31d00f0e13b}</UniqueIdentifier>
     </Filter>
-    <Filter Include="include\grpc\support">
-      <UniqueIdentifier>{31de82ea-dc6c-73fb-a640-979b8a7b240c}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src">
       <UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
     </Filter>
@@ -1214,18 +1091,6 @@
     <Filter Include="src\core\ext\transport\chttp2\transport">
       <UniqueIdentifier>{6f34254e-e69f-c9b4-156d-5024bade5408}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\ext\transport\cronet">
-      <UniqueIdentifier>{1e9c85e9-5522-7ef8-0017-7e19990a6194}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\ext\transport\cronet\client">
-      <UniqueIdentifier>{d0530883-75d9-b5f7-d594-26735a70ac7b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\ext\transport\cronet\client\secure">
-      <UniqueIdentifier>{4fa6fe90-b7a8-5c8f-d629-db1e68d89eed}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\ext\transport\cronet\transport">
-      <UniqueIdentifier>{31518af8-5860-6d0d-ff78-4059fce29ec2}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib">
       <UniqueIdentifier>{5b2ded3f-84a5-f6b4-2060-286c7d1dc945}</UniqueIdentifier>
     </Filter>
@@ -1250,9 +1115,6 @@
     <Filter Include="src\core\lib\security">
       <UniqueIdentifier>{c4661d64-349f-01c1-1ba8-0602f9047595}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\support">
-      <UniqueIdentifier>{27f30339-d694-40f5-db07-4b89b9aeea73}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\surface">
       <UniqueIdentifier>{a21971fb-304f-da08-b1b2-7bd8df8ac373}</UniqueIdentifier>
     </Filter>
@@ -1271,12 +1133,6 @@
     <Filter Include="third_party\nanopb">
       <UniqueIdentifier>{93d6596d-330c-1d27-6f84-3c840e57869e}</UniqueIdentifier>
     </Filter>
-    <Filter Include="third_party\objective_c">
-      <UniqueIdentifier>{3a56a516-857e-d2aa-95cc-11685baf4e8c}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="third_party\objective_c\Cronet">
-      <UniqueIdentifier>{a165c6e3-0776-6f40-7351-d7865668e220}</UniqueIdentifier>
-    </Filter>
   </ItemGroup>
 </Project>
 
-- 
GitLab


From 0ddf46f10e3d114704bb2beac4f30718957581c3 Mon Sep 17 00:00:00 2001
From: Kirill Katsnelson <kkm@pobox.com>
Date: Tue, 19 Apr 2016 18:49:31 -0700
Subject: [PATCH 433/525] Fully qualify System.Threading.Tasks.Task

---
 src/compiler/csharp_generator.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index ac0fee1ec4..29c359c539 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -214,10 +214,10 @@ std::string GetMethodReturnTypeServer(const MethodDescriptor *method) {
   switch (GetMethodType(method)) {
     case METHODTYPE_NO_STREAMING:
     case METHODTYPE_CLIENT_STREAMING:
-      return "Task<" + GetClassName(method->output_type()) + ">";
+      return "global::System.Threading.Tasks.Task<" + GetClassName(method->output_type()) + ">";
     case METHODTYPE_SERVER_STREAMING:
     case METHODTYPE_BIDI_STREAMING:
-      return "Task";
+      return "global::System.Threading.Tasks.Task";
   }
   GOOGLE_LOG(FATAL)<< "Can't get here.";
   return "";
-- 
GitLab


From d83f791b11287d2ae960c94611a593afae7612d2 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jan.tattermusch@gmail.com>
Date: Mon, 9 May 2016 10:28:10 -0700
Subject: [PATCH 434/525] regenerate C# code

---
 src/csharp/Grpc.Examples/MathGrpc.cs          | 16 ++++-----
 src/csharp/Grpc.HealthCheck/HealthGrpc.cs     |  4 +--
 .../Grpc.IntegrationTesting/MetricsGrpc.cs    |  8 ++---
 .../Grpc.IntegrationTesting/ServicesGrpc.cs   | 24 ++++++-------
 .../Grpc.IntegrationTesting/TestGrpc.cs       | 36 +++++++++----------
 5 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index 2d3034d28b..d700a18778 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -151,25 +151,25 @@ namespace Math {
       ///  Div divides args.dividend by args.divisor and returns the quotient and
       ///  remainder.
       /// </summary>
-      Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context);
       /// <summary>
       ///  DivMany accepts an arbitrary number of division args from the client stream
       ///  and sends back the results in the reply stream.  The stream continues until
       ///  the client closes its end; the server does the same after sending all the
       ///  replies.  The stream ends immediately if either end aborts.
       /// </summary>
-      Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context);
       /// <summary>
       ///  Fib generates numbers in the Fibonacci sequence.  If args.limit > 0, Fib
       ///  generates up to limit numbers; otherwise it continues until the call is
       ///  canceled.  Unlike Fib above, Fib has no final FibReply.
       /// </summary>
-      Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context);
       /// <summary>
       ///  Sum sums a stream of numbers, returning the final result once the stream
       ///  is closed.
       /// </summary>
-      Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of Math</summary>
@@ -179,7 +179,7 @@ namespace Math {
       ///  Div divides args.dividend by args.divisor and returns the quotient and
       ///  remainder.
       /// </summary>
-      public virtual Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Math.DivReply> Div(global::Math.DivArgs request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -190,7 +190,7 @@ namespace Math {
       ///  the client closes its end; the server does the same after sending all the
       ///  replies.  The stream ends immediately if either end aborts.
       /// </summary>
-      public virtual Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task DivMany(IAsyncStreamReader<global::Math.DivArgs> requestStream, IServerStreamWriter<global::Math.DivReply> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -200,7 +200,7 @@ namespace Math {
       ///  generates up to limit numbers; otherwise it continues until the call is
       ///  canceled.  Unlike Fib above, Fib has no final FibReply.
       /// </summary>
-      public virtual Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task Fib(global::Math.FibArgs request, IServerStreamWriter<global::Math.Num> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -209,7 +209,7 @@ namespace Math {
       ///  Sum sums a stream of numbers, returning the final result once the stream
       ///  is closed.
       /// </summary>
-      public virtual Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Math.Num> Sum(IAsyncStreamReader<global::Math.Num> requestStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index 967d1170be..51c6a39b1d 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -72,13 +72,13 @@ namespace Grpc.Health.V1 {
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IHealth
     {
-      Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of Health</summary>
     public abstract class HealthBase
     {
-      public virtual Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Health.V1.HealthCheckResponse> Check(global::Grpc.Health.V1.HealthCheckRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index aa4f1c5c3e..9d31d1c514 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -112,11 +112,11 @@ namespace Grpc.Testing {
       ///  Returns the values of all the gauges that are currently being maintained by
       ///  the service
       /// </summary>
-      Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context);
       /// <summary>
       ///  Returns the value of one gauge
       /// </summary>
-      Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of MetricsService</summary>
@@ -126,7 +126,7 @@ namespace Grpc.Testing {
       ///  Returns the values of all the gauges that are currently being maintained by
       ///  the service
       /// </summary>
-      public virtual Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task GetAllGauges(global::Grpc.Testing.EmptyMessage request, IServerStreamWriter<global::Grpc.Testing.GaugeResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -134,7 +134,7 @@ namespace Grpc.Testing {
       /// <summary>
       ///  Returns the value of one gauge
       /// </summary>
-      public virtual Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.GaugeResponse> GetGauge(global::Grpc.Testing.GaugeRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index 42bf5e0b58..f7071ebf6b 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -111,12 +111,12 @@ namespace Grpc.Testing {
       ///  One request followed by one response.
       ///  The server returns the client payload as-is.
       /// </summary>
-      Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
       /// <summary>
       ///  One request followed by one response.
       ///  The server returns the client payload as-is.
       /// </summary>
-      Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of BenchmarkService</summary>
@@ -126,7 +126,7 @@ namespace Grpc.Testing {
       ///  One request followed by one response.
       ///  The server returns the client payload as-is.
       /// </summary>
-      public virtual Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -135,7 +135,7 @@ namespace Grpc.Testing {
       ///  One request followed by one response.
       ///  The server returns the client payload as-is.
       /// </summary>
-      public virtual Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task StreamingCall(IAsyncStreamReader<global::Grpc.Testing.SimpleRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.SimpleResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -375,7 +375,7 @@ namespace Grpc.Testing {
       ///  and once the shutdown has finished, the OK status is sent to terminate
       ///  this RPC.
       /// </summary>
-      Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context);
       /// <summary>
       ///  Start client with specified workload.
       ///  First request sent specifies the ClientConfig followed by ClientStatus
@@ -384,15 +384,15 @@ namespace Grpc.Testing {
       ///  and once the shutdown has finished, the OK status is sent to terminate
       ///  this RPC.
       /// </summary>
-      Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context);
       /// <summary>
       ///  Just return the core count - unary call
       /// </summary>
-      Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context);
       /// <summary>
       ///  Quit this worker
       /// </summary>
-      Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of WorkerService</summary>
@@ -406,7 +406,7 @@ namespace Grpc.Testing {
       ///  and once the shutdown has finished, the OK status is sent to terminate
       ///  this RPC.
       /// </summary>
-      public virtual Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task RunServer(IAsyncStreamReader<global::Grpc.Testing.ServerArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ServerStatus> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -419,7 +419,7 @@ namespace Grpc.Testing {
       ///  and once the shutdown has finished, the OK status is sent to terminate
       ///  this RPC.
       /// </summary>
-      public virtual Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task RunClient(IAsyncStreamReader<global::Grpc.Testing.ClientArgs> requestStream, IServerStreamWriter<global::Grpc.Testing.ClientStatus> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -427,7 +427,7 @@ namespace Grpc.Testing {
       /// <summary>
       ///  Just return the core count - unary call
       /// </summary>
-      public virtual Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.CoreResponse> CoreCount(global::Grpc.Testing.CoreRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -435,7 +435,7 @@ namespace Grpc.Testing {
       /// <summary>
       ///  Quit this worker
       /// </summary>
-      public virtual Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Void> QuitWorker(global::Grpc.Testing.Void request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index f1878cbb55..cf43a77118 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -196,34 +196,34 @@ namespace Grpc.Testing {
       /// <summary>
       ///  One empty request followed by one empty response.
       /// </summary>
-      Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context);
       /// <summary>
       ///  One request followed by one response.
       /// </summary>
-      Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context);
       /// <summary>
       ///  One request followed by a sequence of responses (streamed download).
       ///  The server returns the payload with client desired type and sizes.
       /// </summary>
-      Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
       /// <summary>
       ///  A sequence of requests followed by one response (streamed upload).
       ///  The server returns the aggregated size of client payload as the result.
       /// </summary>
-      Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context);
       /// <summary>
       ///  A sequence of requests with each request served by the server immediately.
       ///  As one request could lead to multiple responses, this interface
       ///  demonstrates the idea of full duplexing.
       /// </summary>
-      Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
       /// <summary>
       ///  A sequence of requests followed by a sequence of responses.
       ///  The server buffers all the client requests and then serves them in order. A
       ///  stream of responses are returned to the client when the server starts with
       ///  first request.
       /// </summary>
-      Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
+      global::System.Threading.Tasks.Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of TestService</summary>
@@ -232,7 +232,7 @@ namespace Grpc.Testing {
       /// <summary>
       ///  One empty request followed by one empty response.
       /// </summary>
-      public virtual Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> EmptyCall(global::Grpc.Testing.Empty request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -240,7 +240,7 @@ namespace Grpc.Testing {
       /// <summary>
       ///  One request followed by one response.
       /// </summary>
-      public virtual Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.SimpleResponse> UnaryCall(global::Grpc.Testing.SimpleRequest request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -249,7 +249,7 @@ namespace Grpc.Testing {
       ///  One request followed by a sequence of responses (streamed download).
       ///  The server returns the payload with client desired type and sizes.
       /// </summary>
-      public virtual Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task StreamingOutputCall(global::Grpc.Testing.StreamingOutputCallRequest request, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -258,7 +258,7 @@ namespace Grpc.Testing {
       ///  A sequence of requests followed by one response (streamed upload).
       ///  The server returns the aggregated size of client payload as the result.
       /// </summary>
-      public virtual Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<global::Grpc.Testing.StreamingInputCallRequest> requestStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -268,7 +268,7 @@ namespace Grpc.Testing {
       ///  As one request could lead to multiple responses, this interface
       ///  demonstrates the idea of full duplexing.
       /// </summary>
-      public virtual Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task FullDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -279,7 +279,7 @@ namespace Grpc.Testing {
       ///  stream of responses are returned to the client when the server starts with
       ///  first request.
       /// </summary>
-      public virtual Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task HalfDuplexCall(IAsyncStreamReader<global::Grpc.Testing.StreamingOutputCallRequest> requestStream, IServerStreamWriter<global::Grpc.Testing.StreamingOutputCallResponse> responseStream, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -525,7 +525,7 @@ namespace Grpc.Testing {
       /// <summary>
       ///  A call that no server should implement
       /// </summary>
-      Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of UnimplementedService</summary>
@@ -534,7 +534,7 @@ namespace Grpc.Testing {
       /// <summary>
       ///  A call that no server should implement
       /// </summary>
-      public virtual Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> UnimplementedCall(global::Grpc.Testing.Empty request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
@@ -669,19 +669,19 @@ namespace Grpc.Testing {
     [System.Obsolete("Service implementations should inherit from the generated abstract base class instead.")]
     public interface IReconnectService
     {
-      Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context);
-      Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context);
+      global::System.Threading.Tasks.Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context);
     }
 
     /// <summary>Base class for server-side implementations of ReconnectService</summary>
     public abstract class ReconnectServiceBase
     {
-      public virtual Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.Empty> Start(global::Grpc.Testing.ReconnectParams request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
 
-      public virtual Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::Grpc.Testing.ReconnectInfo> Stop(global::Grpc.Testing.Empty request, ServerCallContext context)
       {
         throw new RpcException(new Status(StatusCode.Unimplemented, ""));
       }
-- 
GitLab


From 0545d7fa6900b66dfd37de7a33fe5fdc655a378d Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Mon, 9 May 2016 19:28:17 +0200
Subject: [PATCH 435/525] Revert "Merge pull request #6214 from
 makdharma/master"

This reverts commit 48d833a9d8280216040ef731341502d7d0f157e4, reversing
changes made to 66e9d8e8a7717d7ccece629df4454fc546e19daa.
---
 BUILD                                         |  80 ---
 Makefile                                      |   7 -
 binding.gyp                                   |   3 -
 build.yaml                                    |  59 --
 config.m4                                     |   5 -
 gRPC.podspec                                  |  76 ---
 grpc.def                                      |   1 -
 grpc.gemspec                                  |  40 --
 include/grpc/grpc_cronet.h                    |  51 --
 package.xml                                   |  40 --
 .../client/secure/cronet_channel_create.c     |  69 --
 .../cronet/transport/cronet_api_dummy.c       |  85 ---
 .../cronet/transport/cronet_transport.c       | 640 ------------------
 .../grpcio/grpc/_cython/imports.generated.c   |   2 -
 .../grpcio/grpc/_cython/imports.generated.h   |   4 -
 src/python/grpcio/grpc_core_dependencies.py   |   3 -
 src/ruby/ext/grpc/rb_grpc_imports.generated.c |   2 -
 src/ruby/ext/grpc/rb_grpc_imports.generated.h |   4 -
 .../core/surface/public_headers_must_be_c89.c |   1 -
 .../objective_c/Cronet/cronet_c_for_grpc.h    | 202 ------
 tools/doxygen/Doxyfile.core                   |   1 -
 tools/doxygen/Doxyfile.core.internal          |  40 --
 tools/run_tests/sources_and_headers.json      | 120 +---
 vsprojects/vcxproj/grpc/grpc.vcxproj          |  43 --
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters  | 144 ----
 25 files changed, 1 insertion(+), 1721 deletions(-)
 delete mode 100644 include/grpc/grpc_cronet.h
 delete mode 100644 src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
 delete mode 100644 src/core/ext/transport/cronet/transport/cronet_api_dummy.c
 delete mode 100644 src/core/ext/transport/cronet/transport/cronet_transport.c
 delete mode 100644 third_party/objective_c/Cronet/cronet_c_for_grpc.h

diff --git a/BUILD b/BUILD
index fae3596eec..1da1650438 100644
--- a/BUILD
+++ b/BUILD
@@ -285,42 +285,6 @@ cc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
-    "include/grpc/byte_buffer.h",
-    "include/grpc/grpc.h",
-    "include/grpc/impl/codegen/alloc.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_win32.h",
-    "include/grpc/impl/codegen/byte_buffer.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/log.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/slice_buffer.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_win32.h",
-    "include/grpc/impl/codegen/time.h",
-    "include/grpc/status.h",
-    "include/grpc/support/alloc.h",
-    "include/grpc/support/atm.h",
-    "include/grpc/support/host_port.h",
-    "include/grpc/support/log.h",
-    "include/grpc/support/port_platform.h",
-    "include/grpc/support/slice.h",
-    "include/grpc/support/slice_buffer.h",
-    "include/grpc/support/string_util.h",
-    "include/grpc/support/sync.h",
-    "include/grpc/support/time.h",
-    "include/grpc/support/useful.h",
-    "src/core/lib/support/string.h",
-    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
@@ -475,9 +439,6 @@ cc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
-    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
-    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
-    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -522,7 +483,6 @@ cc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
-    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1500,9 +1460,6 @@ objc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
-    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
-    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
-    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -1547,7 +1504,6 @@ objc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
-    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1675,42 +1631,6 @@ objc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
-    "include/grpc/byte_buffer.h",
-    "include/grpc/grpc.h",
-    "include/grpc/impl/codegen/alloc.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_win32.h",
-    "include/grpc/impl/codegen/byte_buffer.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/log.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/slice_buffer.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_win32.h",
-    "include/grpc/impl/codegen/time.h",
-    "include/grpc/status.h",
-    "include/grpc/support/alloc.h",
-    "include/grpc/support/atm.h",
-    "include/grpc/support/host_port.h",
-    "include/grpc/support/log.h",
-    "include/grpc/support/port_platform.h",
-    "include/grpc/support/slice.h",
-    "include/grpc/support/slice_buffer.h",
-    "include/grpc/support/string_util.h",
-    "include/grpc/support/sync.h",
-    "include/grpc/support/time.h",
-    "include/grpc/support/useful.h",
-    "src/core/lib/support/string.h",
-    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
diff --git a/Makefile b/Makefile
index 635df30c20..45003ad8b5 100644
--- a/Makefile
+++ b/Makefile
@@ -2623,9 +2623,6 @@ LIBGRPC_SRC = \
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
-    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
-    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -2673,7 +2670,6 @@ PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/sync_posix.h \
     include/grpc/impl/codegen/sync_win32.h \
     include/grpc/impl/codegen/time.h \
-    include/grpc/grpc_cronet.h \
     include/grpc/grpc_security.h \
     include/grpc/grpc_security_constants.h \
     include/grpc/census.h \
@@ -14321,9 +14317,6 @@ ifneq ($(OPENSSL_DEP),)
 # otherwise parallel compilation will fail if a source is compiled first.
 src/core/ext/transport/chttp2/client/secure/secure_channel_create.c: $(OPENSSL_DEP)
 src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/client/secure/cronet_channel_create.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/transport/cronet_api_dummy.c: $(OPENSSL_DEP)
-src/core/ext/transport/cronet/transport/cronet_transport.c: $(OPENSSL_DEP)
 src/core/lib/http/httpcli_security_connector.c: $(OPENSSL_DEP)
 src/core/lib/security/b64.c: $(OPENSSL_DEP)
 src/core/lib/security/client_auth_filter.c: $(OPENSSL_DEP)
diff --git a/binding.gyp b/binding.gyp
index 12a745ffb0..4314ab7243 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -709,9 +709,6 @@
         'src/core/ext/client_config/uri_parser.c',
         'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
         'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-        'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-        'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
-        'src/core/ext/transport/cronet/transport/cronet_transport.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
         'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
diff --git a/build.yaml b/build.yaml
index 7a74e73c72..a21dc688ad 100644
--- a/build.yaml
+++ b/build.yaml
@@ -400,7 +400,6 @@ filegroups:
   - grpc_client_config
 - name: grpc_secure
   public_headers:
-  - include/grpc/grpc_cronet.h
   - include/grpc/grpc_security.h
   - include/grpc/grpc_security_constants.h
   headers:
@@ -548,63 +547,6 @@ filegroups:
   - grpc_transport_chttp2
   - grpc_base
   - grpc_secure
-- name: grpc_transport_cronet_client_secure
-  headers:
-  - include/grpc/byte_buffer.h
-  - include/grpc/grpc.h
-  - include/grpc/impl/codegen/alloc.h
-  - include/grpc/impl/codegen/atm.h
-  - include/grpc/impl/codegen/atm_gcc_atomic.h
-  - include/grpc/impl/codegen/atm_gcc_sync.h
-  - include/grpc/impl/codegen/atm_win32.h
-  - include/grpc/impl/codegen/byte_buffer.h
-  - include/grpc/impl/codegen/compression_types.h
-  - include/grpc/impl/codegen/connectivity_state.h
-  - include/grpc/impl/codegen/grpc_types.h
-  - include/grpc/impl/codegen/log.h
-  - include/grpc/impl/codegen/port_platform.h
-  - include/grpc/impl/codegen/propagation_bits.h
-  - include/grpc/impl/codegen/slice.h
-  - include/grpc/impl/codegen/slice_buffer.h
-  - include/grpc/impl/codegen/status.h
-  - include/grpc/impl/codegen/sync.h
-  - include/grpc/impl/codegen/sync_generic.h
-  - include/grpc/impl/codegen/sync_posix.h
-  - include/grpc/impl/codegen/sync_win32.h
-  - include/grpc/impl/codegen/time.h
-  - include/grpc/status.h
-  - include/grpc/support/alloc.h
-  - include/grpc/support/atm.h
-  - include/grpc/support/host_port.h
-  - include/grpc/support/log.h
-  - include/grpc/support/port_platform.h
-  - include/grpc/support/slice.h
-  - include/grpc/support/slice_buffer.h
-  - include/grpc/support/string_util.h
-  - include/grpc/support/sync.h
-  - include/grpc/support/time.h
-  - include/grpc/support/useful.h
-  - src/core/ext/transport/chttp2/transport/incoming_metadata.h
-  - src/core/lib/channel/channel_stack.h
-  - src/core/lib/channel/context.h
-  - src/core/lib/debug/trace.h
-  - src/core/lib/iomgr/closure.h
-  - src/core/lib/iomgr/exec_ctx.h
-  - src/core/lib/iomgr/pollset.h
-  - src/core/lib/iomgr/pollset_set.h
-  - src/core/lib/support/string.h
-  - src/core/lib/surface/channel.h
-  - src/core/lib/surface/channel_stack_type.h
-  - src/core/lib/transport/byte_stream.h
-  - src/core/lib/transport/metadata.h
-  - src/core/lib/transport/metadata_batch.h
-  - src/core/lib/transport/transport.h
-  - src/core/lib/transport/transport_impl.h
-  - third_party/objective_c/Cronet/cronet_c_for_grpc.h
-  src:
-  - src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
-  - src/core/ext/transport/cronet/transport/cronet_api_dummy.c
-  - src/core/ext/transport/cronet/transport/cronet_transport.c
 - name: nanopb
   headers:
   - third_party/nanopb/pb.h
@@ -792,7 +734,6 @@ libs:
   - grpc_transport_chttp2_client_secure
   - grpc_transport_chttp2_server_insecure
   - grpc_transport_chttp2_client_insecure
-  - grpc_transport_cronet_client_secure
   - grpc_lb_policy_grpclb
   - grpc_lb_policy_pick_first
   - grpc_lb_policy_round_robin
diff --git a/config.m4 b/config.m4
index 5259e679ba..74f9ad242a 100644
--- a/config.m4
+++ b/config.m4
@@ -228,9 +228,6 @@ if test "$PHP_GRPC" != "no"; then
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
-    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
-    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -569,8 +566,6 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/insecure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/secure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/transport)
-  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/client/secure)
-  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/transport)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/channel)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/compression)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/debug)
diff --git a/gRPC.podspec b/gRPC.podspec
index 018306ca64..569f89bf7c 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -287,42 +287,6 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/subchannel_call_holder.h',
                       'src/core/ext/client_config/subchannel_index.h',
                       'src/core/ext/client_config/uri_parser.h',
-                      'include/grpc/byte_buffer.h',
-                      'include/grpc/grpc.h',
-                      'include/grpc/impl/codegen/alloc.h',
-                      'include/grpc/impl/codegen/atm.h',
-                      'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                      'include/grpc/impl/codegen/atm_gcc_sync.h',
-                      'include/grpc/impl/codegen/atm_win32.h',
-                      'include/grpc/impl/codegen/byte_buffer.h',
-                      'include/grpc/impl/codegen/compression_types.h',
-                      'include/grpc/impl/codegen/connectivity_state.h',
-                      'include/grpc/impl/codegen/grpc_types.h',
-                      'include/grpc/impl/codegen/log.h',
-                      'include/grpc/impl/codegen/port_platform.h',
-                      'include/grpc/impl/codegen/propagation_bits.h',
-                      'include/grpc/impl/codegen/slice.h',
-                      'include/grpc/impl/codegen/slice_buffer.h',
-                      'include/grpc/impl/codegen/status.h',
-                      'include/grpc/impl/codegen/sync.h',
-                      'include/grpc/impl/codegen/sync_generic.h',
-                      'include/grpc/impl/codegen/sync_posix.h',
-                      'include/grpc/impl/codegen/sync_win32.h',
-                      'include/grpc/impl/codegen/time.h',
-                      'include/grpc/status.h',
-                      'include/grpc/support/alloc.h',
-                      'include/grpc/support/atm.h',
-                      'include/grpc/support/host_port.h',
-                      'include/grpc/support/log.h',
-                      'include/grpc/support/port_platform.h',
-                      'include/grpc/support/slice.h',
-                      'include/grpc/support/slice_buffer.h',
-                      'include/grpc/support/string_util.h',
-                      'include/grpc/support/sync.h',
-                      'include/grpc/support/time.h',
-                      'include/grpc/support/useful.h',
-                      'src/core/lib/support/string.h',
-                      'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                       'third_party/nanopb/pb.h',
@@ -361,7 +325,6 @@ Pod::Spec.new do |s|
                       'include/grpc/impl/codegen/sync_posix.h',
                       'include/grpc/impl/codegen/sync_win32.h',
                       'include/grpc/impl/codegen/time.h',
-                      'include/grpc/grpc_cronet.h',
                       'include/grpc/grpc_security.h',
                       'include/grpc/grpc_security_constants.h',
                       'include/grpc/census.h',
@@ -511,9 +474,6 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/uri_parser.c',
                       'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
                       'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-                      'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-                      'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
-                      'src/core/ext/transport/cronet/transport/cronet_transport.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
                       'third_party/nanopb/pb_common.c',
@@ -670,42 +630,6 @@ Pod::Spec.new do |s|
                               'src/core/ext/client_config/subchannel_call_holder.h',
                               'src/core/ext/client_config/subchannel_index.h',
                               'src/core/ext/client_config/uri_parser.h',
-                              'include/grpc/byte_buffer.h',
-                              'include/grpc/grpc.h',
-                              'include/grpc/impl/codegen/alloc.h',
-                              'include/grpc/impl/codegen/atm.h',
-                              'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                              'include/grpc/impl/codegen/atm_gcc_sync.h',
-                              'include/grpc/impl/codegen/atm_win32.h',
-                              'include/grpc/impl/codegen/byte_buffer.h',
-                              'include/grpc/impl/codegen/compression_types.h',
-                              'include/grpc/impl/codegen/connectivity_state.h',
-                              'include/grpc/impl/codegen/grpc_types.h',
-                              'include/grpc/impl/codegen/log.h',
-                              'include/grpc/impl/codegen/port_platform.h',
-                              'include/grpc/impl/codegen/propagation_bits.h',
-                              'include/grpc/impl/codegen/slice.h',
-                              'include/grpc/impl/codegen/slice_buffer.h',
-                              'include/grpc/impl/codegen/status.h',
-                              'include/grpc/impl/codegen/sync.h',
-                              'include/grpc/impl/codegen/sync_generic.h',
-                              'include/grpc/impl/codegen/sync_posix.h',
-                              'include/grpc/impl/codegen/sync_win32.h',
-                              'include/grpc/impl/codegen/time.h',
-                              'include/grpc/status.h',
-                              'include/grpc/support/alloc.h',
-                              'include/grpc/support/atm.h',
-                              'include/grpc/support/host_port.h',
-                              'include/grpc/support/log.h',
-                              'include/grpc/support/port_platform.h',
-                              'include/grpc/support/slice.h',
-                              'include/grpc/support/slice_buffer.h',
-                              'include/grpc/support/string_util.h',
-                              'include/grpc/support/sync.h',
-                              'include/grpc/support/time.h',
-                              'include/grpc/support/useful.h',
-                              'src/core/lib/support/string.h',
-                              'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                               'third_party/nanopb/pb.h',
diff --git a/grpc.def b/grpc.def
index 09a94a6cd0..61948ed1b8 100644
--- a/grpc.def
+++ b/grpc.def
@@ -87,7 +87,6 @@ EXPORTS
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
     grpc_call_error_to_string
-    grpc_cronet_secure_channel_create
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/grpc.gemspec b/grpc.gemspec
index ace28715dc..475fc990ad 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -169,7 +169,6 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/impl/codegen/sync_posix.h )
   s.files += %w( include/grpc/impl/codegen/sync_win32.h )
   s.files += %w( include/grpc/impl/codegen/time.h )
-  s.files += %w( include/grpc/grpc_cronet.h )
   s.files += %w( include/grpc/grpc_security.h )
   s.files += %w( include/grpc/grpc_security_constants.h )
   s.files += %w( include/grpc/census.h )
@@ -297,42 +296,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
   s.files += %w( src/core/ext/client_config/subchannel_index.h )
   s.files += %w( src/core/ext/client_config/uri_parser.h )
-  s.files += %w( include/grpc/byte_buffer.h )
-  s.files += %w( include/grpc/grpc.h )
-  s.files += %w( include/grpc/impl/codegen/alloc.h )
-  s.files += %w( include/grpc/impl/codegen/atm.h )
-  s.files += %w( include/grpc/impl/codegen/atm_gcc_atomic.h )
-  s.files += %w( include/grpc/impl/codegen/atm_gcc_sync.h )
-  s.files += %w( include/grpc/impl/codegen/atm_win32.h )
-  s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
-  s.files += %w( include/grpc/impl/codegen/compression_types.h )
-  s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
-  s.files += %w( include/grpc/impl/codegen/grpc_types.h )
-  s.files += %w( include/grpc/impl/codegen/log.h )
-  s.files += %w( include/grpc/impl/codegen/port_platform.h )
-  s.files += %w( include/grpc/impl/codegen/propagation_bits.h )
-  s.files += %w( include/grpc/impl/codegen/slice.h )
-  s.files += %w( include/grpc/impl/codegen/slice_buffer.h )
-  s.files += %w( include/grpc/impl/codegen/status.h )
-  s.files += %w( include/grpc/impl/codegen/sync.h )
-  s.files += %w( include/grpc/impl/codegen/sync_generic.h )
-  s.files += %w( include/grpc/impl/codegen/sync_posix.h )
-  s.files += %w( include/grpc/impl/codegen/sync_win32.h )
-  s.files += %w( include/grpc/impl/codegen/time.h )
-  s.files += %w( include/grpc/status.h )
-  s.files += %w( include/grpc/support/alloc.h )
-  s.files += %w( include/grpc/support/atm.h )
-  s.files += %w( include/grpc/support/host_port.h )
-  s.files += %w( include/grpc/support/log.h )
-  s.files += %w( include/grpc/support/port_platform.h )
-  s.files += %w( include/grpc/support/slice.h )
-  s.files += %w( include/grpc/support/slice_buffer.h )
-  s.files += %w( include/grpc/support/string_util.h )
-  s.files += %w( include/grpc/support/sync.h )
-  s.files += %w( include/grpc/support/time.h )
-  s.files += %w( include/grpc/support/useful.h )
-  s.files += %w( src/core/lib/support/string.h )
-  s.files += %w( third_party/objective_c/Cronet/cronet_c_for_grpc.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h )
   s.files += %w( third_party/nanopb/pb.h )
@@ -491,9 +454,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/uri_parser.c )
   s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
   s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
-  s.files += %w( src/core/ext/transport/cronet/client/secure/cronet_channel_create.c )
-  s.files += %w( src/core/ext/transport/cronet/transport/cronet_api_dummy.c )
-  s.files += %w( src/core/ext/transport/cronet/transport/cronet_transport.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c )
   s.files += %w( third_party/nanopb/pb_common.c )
diff --git a/include/grpc/grpc_cronet.h b/include/grpc/grpc_cronet.h
deleted file mode 100644
index 295e0f55e8..0000000000
--- a/include/grpc/grpc_cronet.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GRPC_GRPC_CRONET_H
-#define GRPC_GRPC_CRONET_H
-
-#include <grpc/grpc.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
-    void *engine, const char *target, const grpc_channel_args *args,
-    void *reserved);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GRPC_GRPC_CRONET_H */
diff --git a/package.xml b/package.xml
index 716d6ed289..ab6dee0631 100644
--- a/package.xml
+++ b/package.xml
@@ -176,7 +176,6 @@
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/grpc_cronet.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security_constants.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/census.h" role="src" />
@@ -304,42 +303,6 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/byte_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/alloc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_win32.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/log.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_generic.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/alloc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/atm.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/host_port.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/log.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/port_platform.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/slice.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/slice_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/string_util.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/useful.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/string.h" role="src" />
-    <file baseinstalldir="/" name="third_party/objective_c/Cronet/cronet_c_for_grpc.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb.h" role="src" />
@@ -498,9 +461,6 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/cronet/client/secure/cronet_channel_create.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_api_dummy.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_transport.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
deleted file mode 100644
index df1acddcc0..0000000000
--- a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <grpc/impl/codegen/port_platform.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/transport/transport_impl.h"
-
-// Cronet transport object
-typedef struct cronet_transport {
-  grpc_transport base;  // must be first element in this structure
-  void *engine;
-  char *host;
-} cronet_transport;
-
-extern grpc_transport_vtable grpc_cronet_vtable;
-
-GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
-    void *engine, const char *target, const grpc_channel_args *args,
-    void *reserved) {
-  cronet_transport *ct = gpr_malloc(sizeof(cronet_transport));
-  ct->base.vtable = &grpc_cronet_vtable;
-  ct->engine = engine;
-  ct->host = gpr_malloc(strlen(target) + 1);
-  strcpy(ct->host, target);
-  gpr_log(GPR_DEBUG,
-          "grpc_create_cronet_transport: cronet_engine = %p, target=%s", engine,
-          ct->host);
-
-  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  return grpc_channel_create(&exec_ctx, target, args,
-                             GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
-}
diff --git a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
deleted file mode 100644
index 687026c9fd..0000000000
--- a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/* This file has empty implementation of all the functions exposed by the cronet
-library, so we can build it in all environments */
-
-#include <stdbool.h>
-
-#include <grpc/support/log.h>
-
-#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
-
-#ifdef GRPC_COMPILE_WITH_CRONET
-/* link with the real CRONET library in the build system */
-#else
-/* Dummy implementation of cronet API just to test for build-ability */
-cronet_bidirectional_stream* cronet_bidirectional_stream_create(
-    cronet_engine* engine, void* annotation,
-    cronet_bidirectional_stream_callback* callback) {
-  GPR_ASSERT(0);
-  return NULL;
-}
-
-int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_start(
-    cronet_bidirectional_stream* stream, const char* url, int priority,
-    const char* method, const cronet_bidirectional_stream_header_array* headers,
-    bool end_of_stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
-                                     char* buffer, int capacity) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
-                                      const char* buffer, int count,
-                                      bool end_of_stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream) {
-  GPR_ASSERT(0);
-  return 0;
-}
-
-#endif /* GRPC_COMPILE_WITH_CRONET */
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
deleted file mode 100644
index 5bb085195c..0000000000
--- a/src/core/ext/transport/cronet/transport/cronet_transport.c
+++ /dev/null
@@ -1,640 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <string.h>
-
-#include <grpc/impl/codegen/port_platform.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/host_port.h>
-#include <grpc/support/log.h>
-#include <grpc/support/slice_buffer.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/useful.h>
-
-#include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/support/string.h"
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/transport/metadata_batch.h"
-#include "src/core/lib/transport/transport_impl.h"
-#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
-
-#define GRPC_HEADER_SIZE_IN_BYTES 5
-
-// Global flag that gets set with GRPC_TRACE env variable
-int grpc_cronet_trace = 1;
-
-// Cronet transport object
-struct grpc_cronet_transport {
-  grpc_transport base; /* must be first element in this structure */
-  cronet_engine *engine;
-  char *host;
-};
-
-typedef struct grpc_cronet_transport grpc_cronet_transport;
-
-enum send_state {
-  CRONET_SEND_IDLE = 0,
-  CRONET_REQ_STARTED,
-  CRONET_SEND_HEADER,
-  CRONET_WRITE,
-  CRONET_WRITE_COMPLETED,
-};
-
-enum recv_state {
-  CRONET_RECV_IDLE = 0,
-  CRONET_RECV_READ_LENGTH,
-  CRONET_RECV_READ_DATA,
-  CRONET_RECV_CLOSED,
-};
-
-static const char *recv_state_name[] = {
-    "CRONET_RECV_IDLE", "CRONET_RECV_READ_LENGTH", "CRONET_RECV_READ_DATA,",
-    "CRONET_RECV_CLOSED"};
-
-// Enum that identifies calling function.
-enum e_caller {
-  PERFORM_STREAM_OP,
-  ON_READ_COMPLETE,
-  ON_RESPONSE_HEADERS_RECEIVED,
-  ON_RESPONSE_TRAILERS_RECEIVED
-};
-
-enum callback_id {
-  CB_SEND_INITIAL_METADATA = 0,
-  CB_SEND_MESSAGE,
-  CB_SEND_TRAILING_METADATA,
-  CB_RECV_MESSAGE,
-  CB_RECV_INITIAL_METADATA,
-  CB_RECV_TRAILING_METADATA,
-  CB_NUM_CALLBACKS
-};
-
-struct stream_obj {
-  // we store received bytes here as they trickle in.
-  gpr_slice_buffer write_slice_buffer;
-  cronet_bidirectional_stream *cbs;
-  gpr_slice slice;
-  gpr_slice_buffer read_slice_buffer;
-  struct grpc_slice_buffer_stream sbs;
-  char *read_buffer;
-  int remaining_read_bytes;
-  int total_read_bytes;
-
-  char *write_buffer;
-  size_t write_buffer_size;
-
-  // Hold the URL
-  char *url;
-
-  bool response_headers_received;
-  bool read_requested;
-  bool response_trailers_received;
-  bool read_closed;
-
-  // Recv message stuff
-  grpc_byte_buffer **recv_message;
-  // Initial metadata stuff
-  grpc_metadata_batch *recv_initial_metadata;
-  // Trailing metadata stuff
-  grpc_metadata_batch *recv_trailing_metadata;
-  grpc_chttp2_incoming_metadata_buffer imb;
-
-  // This mutex protects receive state machine execution
-  gpr_mu recv_mu;
-  // we can queue up up to 2 callbacks for each OP
-  grpc_closure *callback_list[CB_NUM_CALLBACKS][2];
-
-  // storage for header
-  cronet_bidirectional_stream_header *headers;
-  uint32_t num_headers;
-  cronet_bidirectional_stream_header_array header_array;
-  // state tracking
-  enum recv_state cronet_recv_state;
-  enum send_state cronet_send_state;
-};
-
-typedef struct stream_obj stream_obj;
-
-static void next_send_step(stream_obj *s);
-static void next_recv_step(stream_obj *s, enum e_caller caller);
-
-static void set_pollset_do_nothing(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                                   grpc_stream *gs, grpc_pollset *pollset) {}
-
-static void enqueue_callbacks(grpc_closure *callback_list[]) {
-  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  if (callback_list[0]) {
-    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[0], true, NULL);
-    callback_list[0] = NULL;
-  }
-  if (callback_list[1]) {
-    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[1], true, NULL);
-    callback_list[1] = NULL;
-  }
-  grpc_exec_ctx_finish(&exec_ctx);
-}
-
-static void on_canceled(cronet_bidirectional_stream *stream) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "on_canceled %p", stream);
-  }
-}
-
-static void on_failed(cronet_bidirectional_stream *stream, int net_error) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "on_failed %p, error = %d", stream, net_error);
-  }
-}
-
-static void on_succeeded(cronet_bidirectional_stream *stream) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "on_succeeded %p", stream);
-  }
-}
-
-static void on_response_trailers_received(
-    cronet_bidirectional_stream *stream,
-    const cronet_bidirectional_stream_header_array *trailers) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "R: on_response_trailers_received");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-
-  memset(&s->imb, 0, sizeof(s->imb));
-  grpc_chttp2_incoming_metadata_buffer_init(&s->imb);
-  unsigned int i = 0;
-  for (i = 0; i < trailers->count; i++) {
-    grpc_chttp2_incoming_metadata_buffer_add(
-        &s->imb, grpc_mdelem_from_metadata_strings(
-                     grpc_mdstr_from_string(trailers->headers[i].key),
-                     grpc_mdstr_from_string(trailers->headers[i].value)));
-  }
-  s->response_trailers_received = true;
-  next_recv_step(s, ON_RESPONSE_TRAILERS_RECEIVED);
-}
-
-static void on_write_completed(cronet_bidirectional_stream *stream,
-                               const char *data) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "W: on_write_completed");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-  enqueue_callbacks(s->callback_list[CB_SEND_MESSAGE]);
-  s->cronet_send_state = CRONET_WRITE_COMPLETED;
-  next_send_step(s);
-}
-
-static void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
-  gpr_slice read_data_slice = gpr_slice_malloc((uint32_t)s->total_read_bytes);
-  uint8_t *dst_p = GPR_SLICE_START_PTR(read_data_slice);
-  memcpy(dst_p, recv_data, (size_t)s->total_read_bytes);
-  gpr_slice_buffer_add(&s->read_slice_buffer, read_data_slice);
-  grpc_slice_buffer_stream_init(&s->sbs, &s->read_slice_buffer, 0);
-  *s->recv_message = (grpc_byte_buffer *)&s->sbs;
-}
-
-static int parse_grpc_header(const uint8_t *data) {
-  const uint8_t *p = data + 1;
-  int length = 0;
-  length |= ((uint8_t)*p++) << 24;
-  length |= ((uint8_t)*p++) << 16;
-  length |= ((uint8_t)*p++) << 8;
-  length |= ((uint8_t)*p++);
-  return length;
-}
-
-static void on_read_completed(cronet_bidirectional_stream *stream, char *data,
-                              int count) {
-  stream_obj *s = (stream_obj *)stream->annotation;
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "R: on_read_completed count=%d, total=%d, remaining=%d",
-            count, s->total_read_bytes, s->remaining_read_bytes);
-  }
-  if (count > 0) {
-    GPR_ASSERT(s->recv_message);
-    s->remaining_read_bytes -= count;
-    next_recv_step(s, ON_READ_COMPLETE);
-  } else {
-    s->read_closed = true;
-    next_recv_step(s, ON_READ_COMPLETE);
-  }
-}
-
-static void on_response_headers_received(
-    cronet_bidirectional_stream *stream,
-    const cronet_bidirectional_stream_header_array *headers,
-    const char *negotiated_protocol) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "R: on_response_headers_received");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-  enqueue_callbacks(s->callback_list[CB_RECV_INITIAL_METADATA]);
-  s->response_headers_received = true;
-  next_recv_step(s, ON_RESPONSE_HEADERS_RECEIVED);
-}
-
-static void on_request_headers_sent(cronet_bidirectional_stream *stream) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "W: on_request_headers_sent");
-  }
-  stream_obj *s = (stream_obj *)stream->annotation;
-  enqueue_callbacks(s->callback_list[CB_SEND_INITIAL_METADATA]);
-  s->cronet_send_state = CRONET_SEND_HEADER;
-  next_send_step(s);
-}
-
-// Callback function pointers (invoked by cronet in response to events)
-static cronet_bidirectional_stream_callback callbacks = {
-    on_request_headers_sent,
-    on_response_headers_received,
-    on_read_completed,
-    on_write_completed,
-    on_response_trailers_received,
-    on_succeeded,
-    on_failed,
-    on_canceled};
-
-static void invoke_closing_callback(stream_obj *s) {
-  grpc_chttp2_incoming_metadata_buffer_publish(&s->imb,
-                                               s->recv_trailing_metadata);
-  if (s->callback_list[CB_RECV_TRAILING_METADATA]) {
-    enqueue_callbacks(s->callback_list[CB_RECV_TRAILING_METADATA]);
-  }
-}
-
-static void set_recv_state(stream_obj *s, enum recv_state state) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "next_state = %s", recv_state_name[state]);
-  }
-  s->cronet_recv_state = state;
-}
-
-// This is invoked from perform_stream_op, and all on_xxxx callbacks.
-static void next_recv_step(stream_obj *s, enum e_caller caller) {
-  gpr_mu_lock(&s->recv_mu);
-  switch (s->cronet_recv_state) {
-    case CRONET_RECV_IDLE:
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_IDLE");
-      }
-      if (caller == PERFORM_STREAM_OP ||
-          caller == ON_RESPONSE_HEADERS_RECEIVED) {
-        if (s->read_closed && s->response_trailers_received) {
-          invoke_closing_callback(s);
-          set_recv_state(s, CRONET_RECV_CLOSED);
-        } else if (s->response_headers_received == true &&
-                   s->read_requested == true) {
-          set_recv_state(s, CRONET_RECV_READ_LENGTH);
-          s->total_read_bytes = s->remaining_read_bytes =
-              GRPC_HEADER_SIZE_IN_BYTES;
-          GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {
-            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
-          }
-          cronet_bidirectional_stream_read(s->cbs, s->read_buffer,
-                                           s->remaining_read_bytes);
-        }
-      }
-      break;
-    case CRONET_RECV_READ_LENGTH:
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_LENGTH");
-      }
-      if (caller == ON_READ_COMPLETE) {
-        if (s->read_closed) {
-          invoke_closing_callback(s);
-          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
-          set_recv_state(s, CRONET_RECV_CLOSED);
-        } else {
-          GPR_ASSERT(s->remaining_read_bytes == 0);
-          set_recv_state(s, CRONET_RECV_READ_DATA);
-          s->total_read_bytes = s->remaining_read_bytes =
-              parse_grpc_header((const uint8_t *)s->read_buffer);
-          s->read_buffer =
-              gpr_realloc(s->read_buffer, (uint32_t)s->remaining_read_bytes);
-          GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {
-            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
-          }
-          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer,
-                                           s->remaining_read_bytes);
-        }
-      }
-      break;
-    case CRONET_RECV_READ_DATA:
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_DATA");
-      }
-      if (caller == ON_READ_COMPLETE) {
-        if (s->remaining_read_bytes > 0) {
-          int offset = s->total_read_bytes - s->remaining_read_bytes;
-          GPR_ASSERT(s->read_buffer);
-          if (grpc_cronet_trace) {
-            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
-          }
-          cronet_bidirectional_stream_read(
-              s->cbs, (char *)s->read_buffer + offset, s->remaining_read_bytes);
-        } else {
-          gpr_slice_buffer_init(&s->read_slice_buffer);
-          uint8_t *p = (uint8_t *)s->read_buffer;
-          process_recv_message(s, p);
-          set_recv_state(s, CRONET_RECV_IDLE);
-          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
-        }
-      }
-      break;
-    case CRONET_RECV_CLOSED:
-      break;
-    default:
-      GPR_ASSERT(0);  // Should not reach here
-      break;
-  }
-  gpr_mu_unlock(&s->recv_mu);
-}
-
-// This function takes the data from s->write_slice_buffer and assembles into
-// a contiguous byte stream with 5 byte gRPC header prepended.
-static void create_grpc_frame(stream_obj *s) {
-  gpr_slice slice = gpr_slice_buffer_take_first(&s->write_slice_buffer);
-  uint8_t *raw_data = GPR_SLICE_START_PTR(slice);
-  size_t length = GPR_SLICE_LENGTH(slice);
-  s->write_buffer_size = length + GRPC_HEADER_SIZE_IN_BYTES;
-  s->write_buffer = gpr_realloc(s->write_buffer, s->write_buffer_size);
-  uint8_t *p = (uint8_t *)s->write_buffer;
-  // Append 5 byte header
-  *p++ = 0;
-  *p++ = (uint8_t)(length >> 24);
-  *p++ = (uint8_t)(length >> 16);
-  *p++ = (uint8_t)(length >> 8);
-  *p++ = (uint8_t)(length);
-  // append actual data
-  memcpy(p, raw_data, length);
-}
-
-static void do_write(stream_obj *s) {
-  gpr_slice_buffer *sb = &s->write_slice_buffer;
-  GPR_ASSERT(sb->count <= 1);
-  if (sb->count > 0) {
-    create_grpc_frame(s);
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
-    }
-    cronet_bidirectional_stream_write(s->cbs, s->write_buffer,
-                                      (int)s->write_buffer_size, false);
-  }
-}
-
-//
-static void next_send_step(stream_obj *s) {
-  switch (s->cronet_send_state) {
-    case CRONET_SEND_IDLE:
-      GPR_ASSERT(
-          s->cbs);  // cronet_bidirectional_stream is not initialized yet.
-      s->cronet_send_state = CRONET_REQ_STARTED;
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_start to %s", s->url);
-      }
-      cronet_bidirectional_stream_start(s->cbs, s->url, 0, "POST",
-                                        &s->header_array, false);
-      // we no longer need the memory that was allocated earlier.
-      gpr_free(s->header_array.headers);
-      break;
-    case CRONET_SEND_HEADER:
-      do_write(s);
-      s->cronet_send_state = CRONET_WRITE;
-      break;
-    case CRONET_WRITE_COMPLETED:
-      do_write(s);
-      break;
-    default:
-      GPR_ASSERT(0);
-      break;
-  }
-}
-
-static void convert_metadata_to_cronet_headers(grpc_linked_mdelem *head,
-                                               const char *host,
-                                               stream_obj *s) {
-  grpc_linked_mdelem *curr = head;
-  // Walk the linked list and get number of header fields
-  uint32_t num_headers_available = 0;
-  while (curr != NULL) {
-    curr = curr->next;
-    num_headers_available++;
-  }
-  // Allocate enough memory
-  s->headers = (cronet_bidirectional_stream_header *)gpr_malloc(
-      sizeof(cronet_bidirectional_stream_header) * num_headers_available);
-
-  // Walk the linked list again, this time copying the header fields.
-  // s->num_headers
-  // can be less than num_headers_available, as some headers are not used for
-  // cronet
-  curr = head;
-  s->num_headers = 0;
-  while (s->num_headers < num_headers_available) {
-    grpc_mdelem *mdelem = curr->md;
-    curr = curr->next;
-    const char *key = grpc_mdstr_as_c_string(mdelem->key);
-    const char *value = grpc_mdstr_as_c_string(mdelem->value);
-    if (strcmp(key, ":scheme") == 0 || strcmp(key, ":method") == 0 ||
-        strcmp(key, ":authority") == 0) {
-      // Cronet populates these fields on its own.
-      continue;
-    }
-    if (strcmp(key, ":path") == 0) {
-      // Create URL by appending :path value to the hostname
-      gpr_asprintf(&s->url, "https://%s%s", host, value);
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "extracted URL = %s", s->url);
-      }
-      continue;
-    }
-    s->headers[s->num_headers].key = key;
-    s->headers[s->num_headers].value = value;
-    s->num_headers++;
-    if (curr == NULL) {
-      break;
-    }
-  }
-}
-
-static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                              grpc_stream *gs, grpc_transport_stream_op *op) {
-  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
-  GPR_ASSERT(ct->engine);
-  stream_obj *s = (stream_obj *)gs;
-  if (op->recv_trailing_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG,
-              "perform_stream_op - recv_trailing_metadata: on_complete=%p",
-              op->on_complete);
-    }
-    s->recv_trailing_metadata = op->recv_trailing_metadata;
-    GPR_ASSERT(!s->callback_list[CB_RECV_TRAILING_METADATA][0]);
-    s->callback_list[CB_RECV_TRAILING_METADATA][0] = op->on_complete;
-  }
-  if (op->recv_message) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "perform_stream_op - recv_message: on_complete=%p",
-              op->on_complete);
-    }
-    s->recv_message = (grpc_byte_buffer **)op->recv_message;
-    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][0]);
-    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][1]);
-    s->callback_list[CB_RECV_MESSAGE][0] = op->recv_message_ready;
-    s->callback_list[CB_RECV_MESSAGE][1] = op->on_complete;
-    s->read_requested = true;
-    next_recv_step(s, PERFORM_STREAM_OP);
-  }
-  if (op->recv_initial_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "perform_stream_op - recv_initial_metadata:=%p",
-              op->on_complete);
-    }
-    s->recv_initial_metadata = op->recv_initial_metadata;
-    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][0]);
-    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][1]);
-    s->callback_list[CB_RECV_INITIAL_METADATA][0] =
-        op->recv_initial_metadata_ready;
-    s->callback_list[CB_RECV_INITIAL_METADATA][1] = op->on_complete;
-  }
-  if (op->send_initial_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG,
-              "perform_stream_op - send_initial_metadata: on_complete=%p",
-              op->on_complete);
-    }
-    s->num_headers = 0;
-    convert_metadata_to_cronet_headers(op->send_initial_metadata->list.head,
-                                       ct->host, s);
-    s->header_array.count = s->num_headers;
-    s->header_array.capacity = s->num_headers;
-    s->header_array.headers = s->headers;
-    GPR_ASSERT(!s->callback_list[CB_SEND_INITIAL_METADATA][0]);
-    s->callback_list[CB_SEND_INITIAL_METADATA][0] = op->on_complete;
-  }
-  if (op->send_message) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG, "perform_stream_op - send_message: on_complete=%p",
-              op->on_complete);
-    }
-    grpc_byte_stream_next(exec_ctx, op->send_message, &s->slice,
-                          op->send_message->length, NULL);
-    // Check that compression flag is not ON. We don't support compression yet.
-    // TODO (makdharma): add compression support
-    GPR_ASSERT(op->send_message->flags == 0);
-    gpr_slice_buffer_add(&s->write_slice_buffer, s->slice);
-    if (s->cbs == NULL) {
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_create");
-      }
-      s->cbs = cronet_bidirectional_stream_create(ct->engine, s, &callbacks);
-      GPR_ASSERT(s->cbs);
-      s->read_closed = false;
-      s->response_trailers_received = false;
-      s->response_headers_received = false;
-      s->cronet_send_state = CRONET_SEND_IDLE;
-      s->cronet_recv_state = CRONET_RECV_IDLE;
-    }
-    GPR_ASSERT(!s->callback_list[CB_SEND_MESSAGE][0]);
-    s->callback_list[CB_SEND_MESSAGE][0] = op->on_complete;
-    next_send_step(s);
-  }
-  if (op->send_trailing_metadata) {
-    if (grpc_cronet_trace) {
-      gpr_log(GPR_DEBUG,
-              "perform_stream_op - send_trailing_metadata: on_complete=%p",
-              op->on_complete);
-    }
-    GPR_ASSERT(!s->callback_list[CB_SEND_TRAILING_METADATA][0]);
-    s->callback_list[CB_SEND_TRAILING_METADATA][0] = op->on_complete;
-    if (s->cbs) {
-      // Send an "empty" write to the far end to signal that we're done.
-      // This will induce the server to send down trailers.
-      if (grpc_cronet_trace) {
-        gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
-      }
-      cronet_bidirectional_stream_write(s->cbs, "abc", 0, true);
-    } else {
-      // We never created a stream. This was probably an empty request.
-      invoke_closing_callback(s);
-    }
-  }
-}
-
-static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                       grpc_stream *gs, grpc_stream_refcount *refcount,
-                       const void *server_data) {
-  stream_obj *s = (stream_obj *)gs;
-  memset(s->callback_list, 0, sizeof(s->callback_list));
-  s->cbs = NULL;
-  gpr_mu_init(&s->recv_mu);
-  s->read_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
-  s->write_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
-  gpr_slice_buffer_init(&s->write_slice_buffer);
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "cronet_transport - init_stream");
-  }
-  return 0;
-}
-
-static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
-                           grpc_stream *gs, void *and_free_memory) {
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "Destroy stream");
-  }
-  stream_obj *s = (stream_obj *)gs;
-  s->cbs = NULL;
-  gpr_free(s->read_buffer);
-  gpr_free(s->write_buffer);
-  gpr_free(s->url);
-  gpr_mu_destroy(&s->recv_mu);
-  if (and_free_memory) {
-    gpr_free(and_free_memory);
-  }
-}
-
-static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
-  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
-  gpr_free(ct->host);
-  if (grpc_cronet_trace) {
-    gpr_log(GPR_DEBUG, "Destroy transport");
-  }
-}
-
-const grpc_transport_vtable grpc_cronet_vtable = {
-    sizeof(stream_obj),     "cronet_http",     init_stream,
-    set_pollset_do_nothing, perform_stream_op, NULL,
-    destroy_stream,         destroy_transport, NULL};
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index 09551472b5..f0a40dbb35 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -125,7 +125,6 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
-grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -396,7 +395,6 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
-  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index 54c8aaad13..d5e810b7cf 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -43,7 +43,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -326,9 +325,6 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
-typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
-extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
-#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 5314329c2c..dab62530aa 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -222,9 +222,6 @@ CORE_SOURCE_FILES = [
   'src/core/ext/client_config/uri_parser.c',
   'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
   'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
-  'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
-  'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
-  'src/core/ext/transport/cronet/transport/cronet_transport.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
   'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
   'third_party/nanopb/pb_common.c',
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index cebbe8c40f..bc43f9d36b 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -125,7 +125,6 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
-grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -392,7 +391,6 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
-  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index d7ea6c574c..b67361ca25 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -43,7 +43,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -326,9 +325,6 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
-typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
-extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
-#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/test/core/surface/public_headers_must_be_c89.c b/test/core/surface/public_headers_must_be_c89.c
index fd6ff2c26f..3eeb55d033 100644
--- a/test/core/surface/public_headers_must_be_c89.c
+++ b/test/core/surface/public_headers_must_be_c89.c
@@ -36,7 +36,6 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
-#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/grpc_security_constants.h>
 #include <grpc/impl/codegen/alloc.h>
diff --git a/third_party/objective_c/Cronet/cronet_c_for_grpc.h b/third_party/objective_c/Cronet/cronet_c_for_grpc.h
deleted file mode 100644
index 15a511aebd..0000000000
--- a/third_party/objective_c/Cronet/cronet_c_for_grpc.h
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
-#define COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stddef.h>
-
-/* Cronet Engine API. */
-
-/* Opaque object representing Cronet Engine. Created and configured outside
- * of this API to facilitate sharing with other components */
-typedef struct cronet_engine { void* obj; } cronet_engine;
-
-void cronet_engine_add_quic_hint(cronet_engine* engine,
-                                 const char* host,
-                                 int port,
-                                 int alternate_port);
-
-/* Cronet Bidirectional Stream API */
-
-/* Opaque object representing Cronet Bidirectional Stream. */
-typedef struct cronet_bidirectional_stream {
-  void* obj;
-  void* annotation;
-} cronet_bidirectional_stream;
-
-/* A single request or response header element. */
-typedef struct cronet_bidirectional_stream_header {
-  const char* key;
-  const char* value;
-} cronet_bidirectional_stream_header;
-
-/* Array of request or response headers or trailers. */
-typedef struct cronet_bidirectional_stream_header_array {
-  size_t count;
-  size_t capacity;
-  cronet_bidirectional_stream_header* headers;
-} cronet_bidirectional_stream_header_array;
-
-/* Set of callbacks used to receive callbacks from bidirectional stream. */
-typedef struct cronet_bidirectional_stream_callback {
-  /* Invoked when request headers are sent. Indicates that stream has initiated
-   * the request. Consumer may call cronet_bidirectional_stream_write() to start
-   * writing data.
-   */
-  void (*on_request_headers_sent)(cronet_bidirectional_stream* stream);
-
-  /* Invoked when initial response headers are received.
-   * Consumer must call cronet_bidirectional_stream_read() to start reading.
-   * Consumer may call cronet_bidirectional_stream_write() to start writing or
-   * close the stream. Contents of |headers| is valid for duration of the call.
-   */
-  void (*on_response_headers_received)(
-      cronet_bidirectional_stream* stream,
-      const cronet_bidirectional_stream_header_array* headers,
-      const char* negotiated_protocol);
-
-  /* Invoked when data is read into the buffer passed to
-   * cronet_bidirectional_stream_read(). Only part of the buffer may be
-   * populated. To continue reading, call cronet_bidirectional_stream_read().
-   * It may be invoked after on_response_trailers_received()}, if there was
-   * pending read data before trailers were received.
-   *
-   * If count is 0, it means the remote side has signaled that it will send no
-   * more data; future calls to cronet_bidirectional_stream_read() will result
-   * in the on_data_read() callback or on_succeded() callback if
-   * cronet_bidirectional_stream_write() was invoked with end_of_stream set to
-   * true.
-   */
-  void (*on_read_completed)(cronet_bidirectional_stream* stream,
-                            char* data,
-                            int count);
-
-  /**
-   * Invoked when all data passed to cronet_bidirectional_stream_write() is
-   * sent.
-   * To continue writing, call cronet_bidirectional_stream_write().
-   */
-  void (*on_write_completed)(cronet_bidirectional_stream* stream,
-                             const char* data);
-
-  /* Invoked when trailers are received before closing the stream. Only invoked
-   * when server sends trailers, which it may not. May be invoked while there is
-   * read data remaining in local buffer. Contents of |trailers| is valid for
-   * duration of the call.
-   */
-  void (*on_response_trailers_received)(
-      cronet_bidirectional_stream* stream,
-      const cronet_bidirectional_stream_header_array* trailers);
-
-  /**
-   * Invoked when there is no data to be read or written and the stream is
-   * closed successfully remotely and locally. Once invoked, no further callback
-   * methods will be invoked.
-   */
-  void (*on_succeded)(cronet_bidirectional_stream* stream);
-
-  /**
-   * Invoked if the stream failed for any reason after
-   * cronet_bidirectional_stream_start(). HTTP/2 error codes are
-   * mapped to chrome net error codes. Once invoked, no further callback methods
-   * will be invoked.
-   */
-  void (*on_failed)(cronet_bidirectional_stream* stream, int net_error);
-
-  /**
-   * Invoked if the stream was canceled via
-   * cronet_bidirectional_stream_cancel(). Once invoked, no further callback
-   * methods will be invoked.
-   */
-  void (*on_canceled)(cronet_bidirectional_stream* stream);
-} cronet_bidirectional_stream_callback;
-
-/* Create a new stream object that uses |engine| and |callback|. All stream
- * tasks are performed asynchronously on the |engine| network thread. |callback|
- * methods are invoked synchronously on the |engine| network thread, but must
- * not run tasks on the current thread to prevent blocking networking operations
- * and causing exceptions during shutdown. The |annotation| is stored in
- * bidirectional stream for arbitrary use by application.
- *
- * Returned |cronet_bidirectional_stream*| is owned by the caller, and must be
- * destroyed using |cronet_bidirectional_stream_destroy|.
- *
- * Both |calback| and |engine| must remain valid until stream is destroyed.
- */
-cronet_bidirectional_stream* cronet_bidirectional_stream_create(
-    cronet_engine* engine,
-    void* annotation,
-    cronet_bidirectional_stream_callback* callback);
-
-/* TBD: The following methods return int. Should it be a custom type? */
-
-/* Destroy stream object. Destroy could be called from any thread, including
- * network thread, but is posted, so |stream| is valid until calling task is
- * complete.
- */
-int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream);
-
-/* Start the stream by sending request to |url| using |method| and |headers|. If
- * |end_of_stream| is true, then no data is expected to be written.
- */
-int cronet_bidirectional_stream_start(
-    cronet_bidirectional_stream* stream,
-    const char* url,
-    int priority,
-    const char* method,
-    const cronet_bidirectional_stream_header_array* headers,
-    bool end_of_stream);
-
-/* Read response data into |buffer| of |capacity| length. Must only be called at
- * most once in response to each invocation of the
- * on_response_headers_received() and on_read_completed() methods of the
- * cronet_bidirectional_stream_callback.
- * Each call will result in an invocation of one of the callback's
- * on_read_completed  method if data is read, its on_succeeded() method if
- * the stream is closed, or its on_failed() method if there's an error.
- */
-int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
-                                     char* buffer,
-                                     int capacity);
-
-/* Read response data into |buffer| of |capacity| length. Must only be called at
- * most once in response to each invocation of the
- * on_response_headers_received() and on_read_completed() methods of the
- * cronet_bidirectional_stream_callback.
- * Each call will result in an invocation of one of the callback's
- * on_read_completed  method if data is read, its on_succeeded() method if
- * the stream is closed, or its on_failed() method if there's an error.
- */
-int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
-                                      const char* buffer,
-                                      int count,
-                                      bool end_of_stream);
-
-/* Cancels the stream. Can be called at any time after
- * cronet_bidirectional_stream_start(). The on_canceled() method of
- * cronet_bidirectional_stream_callback will be invoked when cancelation
- * is complete and no further callback methods will be invoked. If the
- * stream has completed or has not started, calling
- * cronet_bidirectional_stream_cancel() has no effect and on_canceled() will not
- * be  invoked. At most one callback method may be invoked after
- * cronet_bidirectional_stream_cancel() has completed.
- */
-int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream);
-
-/* Returns true if the |stream| was successfully started and is now done
- * (succeeded, canceled, or failed).
- * Returns false if the |stream| stream is not yet started or is in progress.
- */
-bool cronet_bidirectional_stream_is_done(cronet_bidirectional_stream* stream);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index d1259e7aee..8b13e6e793 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -786,7 +786,6 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
-include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 6b7a8be861..b3b3477874 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -786,7 +786,6 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
-include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
@@ -914,42 +913,6 @@ src/core/ext/client_config/subchannel.h \
 src/core/ext/client_config/subchannel_call_holder.h \
 src/core/ext/client_config/subchannel_index.h \
 src/core/ext/client_config/uri_parser.h \
-include/grpc/byte_buffer.h \
-include/grpc/grpc.h \
-include/grpc/impl/codegen/alloc.h \
-include/grpc/impl/codegen/atm.h \
-include/grpc/impl/codegen/atm_gcc_atomic.h \
-include/grpc/impl/codegen/atm_gcc_sync.h \
-include/grpc/impl/codegen/atm_win32.h \
-include/grpc/impl/codegen/byte_buffer.h \
-include/grpc/impl/codegen/compression_types.h \
-include/grpc/impl/codegen/connectivity_state.h \
-include/grpc/impl/codegen/grpc_types.h \
-include/grpc/impl/codegen/log.h \
-include/grpc/impl/codegen/port_platform.h \
-include/grpc/impl/codegen/propagation_bits.h \
-include/grpc/impl/codegen/slice.h \
-include/grpc/impl/codegen/slice_buffer.h \
-include/grpc/impl/codegen/status.h \
-include/grpc/impl/codegen/sync.h \
-include/grpc/impl/codegen/sync_generic.h \
-include/grpc/impl/codegen/sync_posix.h \
-include/grpc/impl/codegen/sync_win32.h \
-include/grpc/impl/codegen/time.h \
-include/grpc/status.h \
-include/grpc/support/alloc.h \
-include/grpc/support/atm.h \
-include/grpc/support/host_port.h \
-include/grpc/support/log.h \
-include/grpc/support/port_platform.h \
-include/grpc/support/slice.h \
-include/grpc/support/slice_buffer.h \
-include/grpc/support/string_util.h \
-include/grpc/support/sync.h \
-include/grpc/support/time.h \
-include/grpc/support/useful.h \
-src/core/lib/support/string.h \
-third_party/objective_c/Cronet/cronet_c_for_grpc.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \
 third_party/nanopb/pb.h \
@@ -1108,9 +1071,6 @@ src/core/ext/client_config/subchannel_index.c \
 src/core/ext/client_config/uri_parser.c \
 src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
 src/core/ext/transport/chttp2/client/insecure/channel_create.c \
-src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
-src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
-src/core/ext/transport/cronet/transport/cronet_transport.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
 third_party/nanopb/pb_common.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 8c67d2f844..3b3a49a5b2 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -4140,8 +4140,7 @@
       "grpc_transport_chttp2_client_insecure", 
       "grpc_transport_chttp2_client_secure", 
       "grpc_transport_chttp2_server_insecure", 
-      "grpc_transport_chttp2_server_secure", 
-      "grpc_transport_cronet_client_secure"
+      "grpc_transport_chttp2_server_secure"
     ], 
     "headers": [], 
     "language": "c", 
@@ -6015,7 +6014,6 @@
       "tsi"
     ], 
     "headers": [
-      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/security/auth_filters.h", 
@@ -6031,7 +6029,6 @@
     "language": "c", 
     "name": "grpc_secure", 
     "src": [
-      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/http/httpcli_security_connector.c", 
@@ -6267,121 +6264,6 @@
     "third_party": false, 
     "type": "filegroup"
   }, 
-  {
-    "deps": [], 
-    "headers": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/status.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h", 
-      "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
-    ], 
-    "language": "c", 
-    "name": "grpc_transport_cronet_client_secure", 
-    "src": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/status.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c", 
-      "src/core/ext/transport/cronet/transport/cronet_api_dummy.c", 
-      "src/core/ext/transport/cronet/transport/cronet_transport.c", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h"
-    ], 
-    "third_party": false, 
-    "type": "filegroup"
-  }, 
   {
     "deps": [], 
     "headers": [
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 7f0e5a8339..03f4eaa5be 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -293,7 +293,6 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\census.h" />
@@ -423,42 +422,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h" />
-    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h" />
@@ -765,12 +728,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 6d1d69a913..4617e3de0d 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -439,15 +439,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
-      <Filter>src\core\ext\transport\cronet\client\secure</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
-      <Filter>src\core\ext\transport\cronet\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
-      <Filter>src\core\ext\transport\cronet\transport</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -585,9 +576,6 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h">
       <Filter>include\grpc</Filter>
     </ClInclude>
@@ -971,114 +959,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
       <Filter>src\core\ext\client_config</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h">
-      <Filter>src\core\lib\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h">
-      <Filter>third_party\objective_c\Cronet</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
@@ -1130,9 +1010,6 @@
     <Filter Include="include\grpc\impl\codegen">
       <UniqueIdentifier>{def748f5-ed2a-a9bb-40d9-c31d00f0e13b}</UniqueIdentifier>
     </Filter>
-    <Filter Include="include\grpc\support">
-      <UniqueIdentifier>{31de82ea-dc6c-73fb-a640-979b8a7b240c}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src">
       <UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
     </Filter>
@@ -1214,18 +1091,6 @@
     <Filter Include="src\core\ext\transport\chttp2\transport">
       <UniqueIdentifier>{6f34254e-e69f-c9b4-156d-5024bade5408}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\ext\transport\cronet">
-      <UniqueIdentifier>{1e9c85e9-5522-7ef8-0017-7e19990a6194}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\ext\transport\cronet\client">
-      <UniqueIdentifier>{d0530883-75d9-b5f7-d594-26735a70ac7b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\ext\transport\cronet\client\secure">
-      <UniqueIdentifier>{4fa6fe90-b7a8-5c8f-d629-db1e68d89eed}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\ext\transport\cronet\transport">
-      <UniqueIdentifier>{31518af8-5860-6d0d-ff78-4059fce29ec2}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib">
       <UniqueIdentifier>{5b2ded3f-84a5-f6b4-2060-286c7d1dc945}</UniqueIdentifier>
     </Filter>
@@ -1250,9 +1115,6 @@
     <Filter Include="src\core\lib\security">
       <UniqueIdentifier>{c4661d64-349f-01c1-1ba8-0602f9047595}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\support">
-      <UniqueIdentifier>{27f30339-d694-40f5-db07-4b89b9aeea73}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\surface">
       <UniqueIdentifier>{a21971fb-304f-da08-b1b2-7bd8df8ac373}</UniqueIdentifier>
     </Filter>
@@ -1271,12 +1133,6 @@
     <Filter Include="third_party\nanopb">
       <UniqueIdentifier>{93d6596d-330c-1d27-6f84-3c840e57869e}</UniqueIdentifier>
     </Filter>
-    <Filter Include="third_party\objective_c">
-      <UniqueIdentifier>{3a56a516-857e-d2aa-95cc-11685baf4e8c}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="third_party\objective_c\Cronet">
-      <UniqueIdentifier>{a165c6e3-0776-6f40-7351-d7865668e220}</UniqueIdentifier>
-    </Filter>
   </ItemGroup>
 </Project>
 
-- 
GitLab


From 82318676377aea1d2ad035681524584d1657711b Mon Sep 17 00:00:00 2001
From: Masood Malekghassemi <atash@google.com>
Date: Mon, 9 May 2016 11:21:20 -0700
Subject: [PATCH 436/525] Add explicit license to grpcio-tools setup.py

---
 tools/distrib/python/grpcio_tools/setup.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py
index 4cc1a1eaf8..576f7ae32a 100644
--- a/tools/distrib/python/grpcio_tools/setup.py
+++ b/tools/distrib/python/grpcio_tools/setup.py
@@ -83,7 +83,7 @@ def maybe_cythonize(exts):
 setuptools.setup(
   name='grpcio_tools',
   version=grpc_version.VERSION,
-  license='',
+  license='3-clause BSD',
   ext_modules=maybe_cythonize([
       protoc_ext_module(),
   ]),
-- 
GitLab


From 49beb933a7af096c2b775ff220d38d79c5eee46c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 11:22:04 -0700
Subject: [PATCH 437/525] upgrade linux worker setup scripts

---
 tools/gce/create_linux_worker.sh | 2 +-
 tools/gce/linux_worker_init.sh   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/gce/create_linux_worker.sh b/tools/gce/create_linux_worker.sh
index dff0b1ce5f..c41e4d299b 100755
--- a/tools/gce/create_linux_worker.sh
+++ b/tools/gce/create_linux_worker.sh
@@ -43,7 +43,7 @@ gcloud compute instances create $INSTANCE_NAME \
     --project="$CLOUD_PROJECT" \
     --zone "$ZONE" \
     --machine-type n1-standard-8 \
-    --image ubuntu-14-04 \
+    --image ubuntu-15-10 \
     --boot-disk-size 1000
 
 echo 'Created GCE instance, waiting 60 seconds for it to come online.'
diff --git a/tools/gce/linux_worker_init.sh b/tools/gce/linux_worker_init.sh
index ef6a5d175c..afcf7a52d9 100755
--- a/tools/gce/linux_worker_init.sh
+++ b/tools/gce/linux_worker_init.sh
@@ -37,7 +37,7 @@ set -ex
 sudo apt-get update
 
 # Install JRE
-sudo apt-get install -y openjdk-7-jre
+sudo apt-get install -y openjdk-8-jre
 sudo apt-get install -y unzip lsof
 
 # Install Docker
-- 
GitLab


From b293c953d9238d157279f97ef477c5ae7da8df0c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 12:44:11 -0700
Subject: [PATCH 438/525] add more tests

---
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 35 +++++++++++++++----
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index abe9d4a2e6..6f8668d143 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -181,13 +181,14 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void ClientStreaming_WriteFailure()
+        public void ClientStreaming_WriteCompletionFailure()
         {
             var resultTask = asyncCall.ClientStreamingCallAsync();
             var requestStream = new ClientRequestStream<string, string>(asyncCall);
 
             var writeTask = requestStream.WriteAsync("request1");
             fakeCall.SendCompletionHandler(false);
+            // TODO: maybe IOException or waiting for RPCException is more appropriate here.
             Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await writeTask);
 
             fakeCall.UnaryResponseClientHandler(true,
@@ -199,7 +200,7 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void ClientStreaming_WriteAfterReceivingStatusFails()
+        public void ClientStreaming_WriteAfterReceivingStatusThrowsRpcException()
         {
             var resultTask = asyncCall.ClientStreamingCallAsync();
             var requestStream = new ClientRequestStream<string, string>(asyncCall);
@@ -210,7 +211,28 @@ namespace Grpc.Core.Internal.Tests
                 new Metadata());
 
             AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
+            var ex = Assert.Throws<RpcException>(() => requestStream.WriteAsync("request1"));
+            //TODO: add assert.
+        }
+
+        [Test]
+        public void ClientStreaming_WriteAfterCompleteThrowsInvalidOperationException()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+            requestStream.CompleteAsync();
+
             Assert.Throws(typeof(InvalidOperationException), () => requestStream.WriteAsync("request1"));
+
+            fakeCall.SendCompletionHandler(true);
+
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(Status.DefaultSuccess, new Metadata()),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
         }
 
         [Test]
@@ -229,7 +251,7 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void ClientStreaming_WriteAfterCancellationRequestFails()
+        public void ClientStreaming_WriteAfterCancellationRequestThrowsOperationCancelledException()
         {
             var resultTask = asyncCall.ClientStreamingCallAsync();
             var requestStream = new ClientRequestStream<string, string>(asyncCall);
@@ -340,7 +362,7 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void DuplexStreaming_WriteAfterReceivingStatusFails()
+        public void DuplexStreaming_WriteAfterReceivingStatusThrowsRpcException()
         {
             asyncCall.StartDuplexStreamingCall();
             var requestStream = new ClientRequestStream<string, string>(asyncCall);
@@ -352,7 +374,8 @@ namespace Grpc.Core.Internal.Tests
 
             AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
 
-            Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await requestStream.WriteAsync("request1"));
+            var ex = Assert.ThrowsAsync<RpcException>(async () => await requestStream.WriteAsync("request1"));
+            //TODO: add assert.
         }
 
         [Test]
@@ -372,7 +395,7 @@ namespace Grpc.Core.Internal.Tests
         }
 
         [Test]
-        public void DuplexStreaming_WriteAfterCancellationRequestFails()
+        public void DuplexStreaming_WriteAfterCancellationRequestThrowsOperationCancelledException()
         {
             asyncCall.StartDuplexStreamingCall();
             var requestStream = new ClientRequestStream<string, string>(asyncCall);
-- 
GitLab


From 19c7bf7871aa86814a56b6eb7053b55920b8e0c6 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 13:03:59 -0700
Subject: [PATCH 439/525] fixup tests

---
 .../Grpc.Core.Tests/Internal/AsyncCallTest.cs | 20 +++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
index 6f8668d143..777a1c8c50 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallTest.cs
@@ -212,7 +212,23 @@ namespace Grpc.Core.Internal.Tests
 
             AssertUnaryResponseSuccess(asyncCall, fakeCall, resultTask);
             var ex = Assert.Throws<RpcException>(() => requestStream.WriteAsync("request1"));
-            //TODO: add assert.
+            Assert.AreEqual(Status.DefaultSuccess, ex.Status);
+        }
+
+        [Test]
+        public void ClientStreaming_WriteAfterReceivingStatusThrowsRpcException2()
+        {
+            var resultTask = asyncCall.ClientStreamingCallAsync();
+            var requestStream = new ClientRequestStream<string, string>(asyncCall);
+
+            fakeCall.UnaryResponseClientHandler(true,
+                new ClientSideStatus(new Status(StatusCode.OutOfRange, ""), new Metadata()),
+                CreateResponsePayload(),
+                new Metadata());
+
+            AssertUnaryResponseError(asyncCall, fakeCall, resultTask, StatusCode.OutOfRange);
+            var ex = Assert.Throws<RpcException>(() => requestStream.WriteAsync("request1"));
+            Assert.AreEqual(StatusCode.OutOfRange, ex.Status.StatusCode);
         }
 
         [Test]
@@ -375,7 +391,7 @@ namespace Grpc.Core.Internal.Tests
             AssertStreamingResponseSuccess(asyncCall, fakeCall, readTask);
 
             var ex = Assert.ThrowsAsync<RpcException>(async () => await requestStream.WriteAsync("request1"));
-            //TODO: add assert.
+            Assert.AreEqual(Status.DefaultSuccess, ex.Status);
         }
 
         [Test]
-- 
GitLab


From 6220033e7df811e7b38afb7c9bd39887dd549e23 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 12:45:27 -0700
Subject: [PATCH 440/525] change typo in the comment

---
 src/csharp/Grpc.Core/Internal/AsyncCall.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index f522174bd0..da1e6592d1 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -57,7 +57,7 @@ namespace Grpc.Core.Internal
         // Completion of a pending unary response if not null.
         TaskCompletionSource<TResponse> unaryResponseTcs;
 
-        // Indicates that steaming call has finished.
+        // Indicates that response streaming call has finished.
         TaskCompletionSource<object> streamingCallFinishedTcs = new TaskCompletionSource<object>();
 
         // Response headers set here once received.
-- 
GitLab


From 98f2430d2d02ceff46b42f4e7e88786e04deb2d6 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 13:04:30 -0700
Subject: [PATCH 441/525] throw RpcException from writes after finishing

---
 src/csharp/Grpc.Core/Internal/AsyncCall.cs     | 13 +++++++++++++
 src/csharp/Grpc.Core/Internal/AsyncCallBase.cs |  2 +-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index da1e6592d1..55351869b5 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -443,6 +443,19 @@ namespace Grpc.Core.Internal
             }
         }
 
+        protected override void CheckSendingAllowed(bool allowFinished)
+        {
+            base.CheckSendingAllowed(true);
+
+            // throwing RpcException if we already received status on client
+            // side makes the most sense.
+            // Note that this throws even for StatusCode.OK.
+            if (!allowFinished && finishedStatus.HasValue)
+            {
+                throw new RpcException(finishedStatus.Value.Status);
+            }
+        }
+
         /// <summary>
         /// Handles receive status completion for calls with streaming response.
         /// </summary>
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
index 42234dcac2..4de23706b2 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
@@ -213,7 +213,7 @@ namespace Grpc.Core.Internal
         {
         }
 
-        protected void CheckSendingAllowed(bool allowFinished)
+        protected virtual void CheckSendingAllowed(bool allowFinished)
         {
             GrpcPreconditions.CheckState(started);
             CheckNotCancelled();
-- 
GitLab


From 12fd55587d6bbba788f0601a4e106fc27b4cc8d0 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 9 May 2016 14:00:36 -0700
Subject: [PATCH 442/525] Build Node 6 artifacts

---
 tools/run_tests/build_artifact_node.bat | 2 +-
 tools/run_tests/build_artifact_node.sh  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/run_tests/build_artifact_node.bat b/tools/run_tests/build_artifact_node.bat
index 84c63c28a2..3c23ac1dae 100644
--- a/tools/run_tests/build_artifact_node.bat
+++ b/tools/run_tests/build_artifact_node.bat
@@ -27,7 +27,7 @@
 @rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 @rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-set node_versions=0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0
+set node_versions=0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0
 
 set PATH=%PATH%;C:\Program Files\nodejs\;%APPDATA%\npm
 
diff --git a/tools/run_tests/build_artifact_node.sh b/tools/run_tests/build_artifact_node.sh
index ef3476a038..9d06472aa4 100755
--- a/tools/run_tests/build_artifact_node.sh
+++ b/tools/run_tests/build_artifact_node.sh
@@ -42,7 +42,7 @@ mkdir -p artifacts
 
 npm update
 
-node_versions=( 0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 )
+node_versions=( 0.12.0 1.0.0 1.1.0 2.0.0 3.0.0 4.0.0 5.0.0 6.0.0 )
 
 for version in ${node_versions[@]}
 do
-- 
GitLab


From 3080ede82c5ac0ba8b5df80f180c1b4aaef9b4ae Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 9 May 2016 14:55:34 -0700
Subject: [PATCH 443/525] Allow Ruby client code to set a user agent

---
 src/ruby/lib/grpc/generic/client_stub.rb | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/ruby/lib/grpc/generic/client_stub.rb b/src/ruby/lib/grpc/generic/client_stub.rb
index 68e167a69f..12946fe819 100644
--- a/src/ruby/lib/grpc/generic/client_stub.rb
+++ b/src/ruby/lib/grpc/generic/client_stub.rb
@@ -49,7 +49,12 @@ module GRPC
         fail(TypeError, '!Channel') unless alt_chan.is_a?(Core::Channel)
         return alt_chan
       end
-      kw['grpc.primary_user_agent'] = "grpc-ruby/#{VERSION}"
+      if kw['grpc.primary_user_agent'].nil?
+        kw['grpc.primary_user_agent'] = ''
+      else
+        kw['grpc.primary_user_agent'] += ' '
+      end
+      kw['grpc.primary_user_agent'] += "grpc-ruby/#{VERSION}"
       unless creds.is_a?(Core::ChannelCredentials) || creds.is_a?(Symbol)
         fail(TypeError, '!ChannelCredentials or Symbol')
       end
-- 
GitLab


From 019a76e300f0170c4ecc09bdc008734ba75c6e6e Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 9 May 2016 14:57:29 -0700
Subject: [PATCH 444/525] Use local copy of node-pre-gyp on Windows to ensure
 that it is up to date

---
 tools/run_tests/build_artifact_node.bat | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/run_tests/build_artifact_node.bat b/tools/run_tests/build_artifact_node.bat
index 3c23ac1dae..4f18985a12 100644
--- a/tools/run_tests/build_artifact_node.bat
+++ b/tools/run_tests/build_artifact_node.bat
@@ -38,12 +38,12 @@ call npm update || goto :error
 mkdir artifacts
 
 for %%v in (%node_versions%) do (
-  call node-pre-gyp configure build --target=%%v --target_arch=%1
+  call .\node_modules\.bin\node-pre-gyp.cmd configure build --target=%%v --target_arch=%1
 
 @rem Try again after removing openssl headers
   rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\%%v\include\node\openssl" /S /Q
   rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\iojs-%%v\include\node\openssl" /S /Q
-  call node-pre-gyp build package testpackage --target=%%v --target_arch=%1 || goto :error
+  call .\node_modules\.bin\node-pre-gyp.cmd configure build --target=%%v --target_arch=%1 || goto :error
 
   xcopy /Y /I /S build\stage\* artifacts\ || goto :error
 )
-- 
GitLab


From 33b3b2a3f0fac6105dca46adfe4d68b79fe00aca Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Mon, 9 May 2016 14:59:49 -0700
Subject: [PATCH 445/525] Fixed earlier fix with the right command

---
 tools/run_tests/build_artifact_node.bat | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/build_artifact_node.bat b/tools/run_tests/build_artifact_node.bat
index 4f18985a12..c5bd726db7 100644
--- a/tools/run_tests/build_artifact_node.bat
+++ b/tools/run_tests/build_artifact_node.bat
@@ -43,7 +43,7 @@ for %%v in (%node_versions%) do (
 @rem Try again after removing openssl headers
   rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\%%v\include\node\openssl" /S /Q
   rmdir "%HOMEDRIVE%%HOMEPATH%\.node-gyp\iojs-%%v\include\node\openssl" /S /Q
-  call .\node_modules\.bin\node-pre-gyp.cmd configure build --target=%%v --target_arch=%1 || goto :error
+  call .\node_modules\.bin\node-pre-gyp.cmd build package testpackage --target=%%v --target_arch=%1 || goto :error
 
   xcopy /Y /I /S build\stage\* artifacts\ || goto :error
 )
-- 
GitLab


From 585ceca2143d4261c28fd244bfbefbe409cc0315 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 4 May 2016 12:54:14 -0700
Subject: [PATCH 446/525] Make namespacing of executables exposed by grpc-tools
 packages consistent between Node and Ruby

---
 src/node/tools/package.json                                   | 4 ++--
 src/ruby/tools/bin/{protoc.rb => grpc_tools_ruby_protoc.rb}   | 0
 ...c_grpc_ruby_plugin.rb => grpc_tools_ruby_protoc_plugin.rb} | 0
 3 files changed, 2 insertions(+), 2 deletions(-)
 rename src/ruby/tools/bin/{protoc.rb => grpc_tools_ruby_protoc.rb} (100%)
 rename src/ruby/tools/bin/{protoc_grpc_ruby_plugin.rb => grpc_tools_ruby_protoc_plugin.rb} (100%)

diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index 9bca5eab6f..b8b4c9aea1 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -16,8 +16,8 @@
     }
   ],
   "bin": {
-    "grpc-tools-protoc": "./bin/protoc.js",
-    "grpc-tools-plugin": "./bin/protoc_plugin.js"
+    "grpc_tools_node_protoc": "./bin/protoc.js",
+    "grpc_tools_node_protoc_plugin": "./bin/protoc_plugin.js"
   },
   "scripts": {
     "install": "./node_modules/.bin/node-pre-gyp install"
diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/grpc_tools_ruby_protoc.rb
similarity index 100%
rename from src/ruby/tools/bin/protoc.rb
rename to src/ruby/tools/bin/grpc_tools_ruby_protoc.rb
diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb
similarity index 100%
rename from src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb
rename to src/ruby/tools/bin/grpc_tools_ruby_protoc_plugin.rb
-- 
GitLab


From f08d3af2077447f9b3161a529f4b35bb93f06fc7 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 4 May 2016 17:43:07 -0700
Subject: [PATCH 447/525] Updated template file

---
 templates/src/node/tools/package.json.template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/templates/src/node/tools/package.json.template b/templates/src/node/tools/package.json.template
index 4f673c48d1..69ad71a3b8 100644
--- a/templates/src/node/tools/package.json.template
+++ b/templates/src/node/tools/package.json.template
@@ -18,8 +18,8 @@
       }
     ],
     "bin": {
-      "grpc-tools-protoc": "./bin/protoc.js",
-      "grpc-tools-plugin": "./bin/protoc_plugin.js"
+      "grpc_tools_node_protoc": "./bin/protoc.js",
+      "grpc_tools_node_protoc_plugin": "./bin/protoc_plugin.js"
     },
     "scripts": {
       "install": "./node_modules/.bin/node-pre-gyp install"
-- 
GitLab


From 65ca9dcabc464a1ea9ea74b8891c77c27008dacd Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 4 May 2016 14:23:48 -0700
Subject: [PATCH 448/525] eliminate a thread switch when invoking server-side
 handler

---
 src/csharp/Grpc.Core/Server.cs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs
index 5b61b7f060..9b0895d855 100644
--- a/src/csharp/Grpc.Core/Server.cs
+++ b/src/csharp/Grpc.Core/Server.cs
@@ -283,6 +283,8 @@ namespace Grpc.Core
         /// </summary>
         private void HandleNewServerRpc(bool success, BatchContextSafeHandle ctx)
         {
+            Task.Run(AllowOneRpc);
+
             if (success)
             {
                 ServerRpcNew newRpc = ctx.GetServerRpcNew(this);
@@ -290,11 +292,9 @@ namespace Grpc.Core
                 // after server shutdown, the callback returns with null call
                 if (!newRpc.Call.IsInvalid)
                 {
-                    Task.Run(async () => await HandleCallAsync(newRpc)).ConfigureAwait(false);
+                    HandleCallAsync(newRpc);  // we don't need to await.
                 }
             }
-
-            AllowOneRpc();
         }
 
         /// <summary>
-- 
GitLab


From 26cc1427e93e5f65a5a1a07edd275fdf713e7309 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 4 May 2016 17:21:17 -0700
Subject: [PATCH 449/525] start server with more than one allowed RPCs

---
 src/csharp/Grpc.Core/Server.cs | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs
index 9b0895d855..fea76d557a 100644
--- a/src/csharp/Grpc.Core/Server.cs
+++ b/src/csharp/Grpc.Core/Server.cs
@@ -48,6 +48,7 @@ namespace Grpc.Core
     /// </summary>
     public class Server
     {
+        const int InitialAllowRpcTokenCount = 10;
         static readonly ILogger Logger = GrpcEnvironment.Logger.ForType<Server>();
 
         readonly AtomicCounter activeCallCounter = new AtomicCounter();
@@ -129,7 +130,13 @@ namespace Grpc.Core
                 startRequested = true;
                 
                 handle.Start();
-                AllowOneRpc();
+
+                // Starting with more than one AllowOneRpc tokens can significantly increase
+                // unary RPC throughput.
+                for (int i = 0; i < InitialAllowRpcTokenCount; i++)
+                {
+                    AllowOneRpc();
+                }
             }
         }
 
-- 
GitLab


From e458d8463548ff09acb4bdbe953f0e8baae2187b Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 14:21:52 -0700
Subject: [PATCH 450/525] dont create dedicated threads for async client

---
 .../Grpc.IntegrationTesting/ClientRunners.cs  | 23 ++++++-------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs
index b4572756f2..9eaf6bf7ce 100644
--- a/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ClientRunners.cs
@@ -142,8 +142,7 @@ namespace Grpc.IntegrationTesting
                 for (int i = 0; i < outstandingRpcsPerChannel; i++)
                 {
                     var timer = CreateTimer(loadParams, 1.0 / this.channels.Count / outstandingRpcsPerChannel);
-                    var threadBody = GetThreadBody(channel, timer);
-                    this.runnerTasks.Add(Task.Factory.StartNew(threadBody, TaskCreationOptions.LongRunning));
+                    this.runnerTasks.Add(RunClientAsync(channel, timer));
                 }
             }
         }
@@ -269,38 +268,30 @@ namespace Grpc.IntegrationTesting
             }
         }
 
-        private Action GetThreadBody(Channel channel, IInterarrivalTimer timer)
+        private Task RunClientAsync(Channel channel, IInterarrivalTimer timer)
         {
             if (payloadConfig.PayloadCase == PayloadConfig.PayloadOneofCase.BytebufParams)
             {
                 GrpcPreconditions.CheckArgument(clientType == ClientType.ASYNC_CLIENT, "Generic client only supports async API");
                 GrpcPreconditions.CheckArgument(rpcType == RpcType.STREAMING, "Generic client only supports streaming calls");
-                return () =>
-                {
-                    RunGenericStreamingAsync(channel, timer).Wait();
-                };
+                return RunGenericStreamingAsync(channel, timer);
             }
 
             GrpcPreconditions.CheckNotNull(payloadConfig.SimpleParams);
             if (clientType == ClientType.SYNC_CLIENT)
             {
                 GrpcPreconditions.CheckArgument(rpcType == RpcType.UNARY, "Sync client can only be used for Unary calls in C#");
-                return () => RunUnary(channel, timer);
+                // create a dedicated thread for the synchronous client
+                return Task.Factory.StartNew(() => RunUnary(channel, timer), TaskCreationOptions.LongRunning);
             }
             else if (clientType == ClientType.ASYNC_CLIENT)
             {
                 switch (rpcType)
                 {
                     case RpcType.UNARY:
-                        return () =>
-                        {
-                            RunUnaryAsync(channel, timer).Wait();
-                        };
+                        return RunUnaryAsync(channel, timer);
                     case RpcType.STREAMING:
-                        return () =>
-                        {
-                            RunStreamingPingPongAsync(channel, timer).Wait();
-                        };
+                        return RunStreamingPingPongAsync(channel, timer);
                 }
             }
             throw new ArgumentException("Unsupported configuration.");
-- 
GitLab


From 16713b91ccfabd5fd904051df17db86dae37b206 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 14:34:11 -0700
Subject: [PATCH 451/525] enable previously disabled C# scenarios

---
 .../run_tests/performance/scenario_config.py  | 20 +++++++++----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index d393709623..8b23995149 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -259,18 +259,16 @@ class CSharpLanguage:
         'csharp_protobuf_sync_to_async_unary_ping_pong', rpc_type='UNARY',
         client_type='SYNC_CLIENT', server_type='ASYNC_SERVER')
 
-    # TODO(jtattermusch): scenario works locally but fails on jenkins
-    #yield _ping_pong_scenario(
-    #    'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
-    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-    #    use_unconstrained_client=True,
-    #    categories=[SMOKETEST])
+    yield _ping_pong_scenario(
+        'csharp_protobuf_async_unary_qps_unconstrained', rpc_type='UNARY',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        use_unconstrained_client=True,
+        categories=[SMOKETEST])
 
-    # TODO(jtattermusch): scenario works locally but fails on jenkins
-    #yield _ping_pong_scenario(
-    #    'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
-    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-    #    use_unconstrained_client=True)
+    yield _ping_pong_scenario(
+        'csharp_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+        use_unconstrained_client=True)
 
     yield _ping_pong_scenario(
         'csharp_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
-- 
GitLab


From df0872f2a609c9fc448923ad6a466f9b9033a63a Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 15:03:05 -0700
Subject: [PATCH 452/525] expose experimental API to set GrpcThreadPool size.

---
 src/csharp/Grpc.Core/GrpcEnvironment.cs | 34 +++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/csharp/Grpc.Core/GrpcEnvironment.cs b/src/csharp/Grpc.Core/GrpcEnvironment.cs
index a5c78cc9d7..bee0ef1d62 100644
--- a/src/csharp/Grpc.Core/GrpcEnvironment.cs
+++ b/src/csharp/Grpc.Core/GrpcEnvironment.cs
@@ -45,11 +45,12 @@ namespace Grpc.Core
     /// </summary>
     public class GrpcEnvironment
     {
-        const int THREAD_POOL_SIZE = 4;
+        const int MinDefaultThreadPoolSize = 4;
 
         static object staticLock = new object();
         static GrpcEnvironment instance;
         static int refCount;
+        static int? customThreadPoolSize;
 
         static ILogger logger = new ConsoleLogger();
 
@@ -122,6 +123,23 @@ namespace Grpc.Core
             logger = customLogger;
         }
 
+        /// <summary>
+        /// Sets the number of threads in the gRPC thread pool that polls for internal RPC events.
+        /// Can be only invoke before the <c>GrpcEnviroment</c> is started and cannot be changed afterwards.
+        /// Setting thread pool size is an advanced setting and you should only use it if you know what you are doing.
+        /// Most users should rely on the default value provided by gRPC library.
+        /// Note: this method is part of an experimental API that can change or be removed without any prior notice.
+        /// </summary>
+        public static void SetThreadPoolSize(int threadCount)
+        {
+            lock (staticLock)
+            {
+                GrpcPreconditions.CheckState(instance == null, "Can only be set before GrpcEnvironment is initialized");
+                GrpcPreconditions.CheckArgument(threadCount > 0, "threadCount needs to be a positive number");
+                customThreadPoolSize = threadCount;
+            }
+        }
+
         /// <summary>
         /// Creates gRPC environment.
         /// </summary>
@@ -129,7 +147,7 @@ namespace Grpc.Core
         {
             GrpcNativeInit();
             completionRegistry = new CompletionRegistry(this);
-            threadPool = new GrpcThreadPool(this, THREAD_POOL_SIZE);
+            threadPool = new GrpcThreadPool(this, GetThreadPoolSizeOrDefault());
             threadPool.Start();
         }
 
@@ -200,5 +218,17 @@ namespace Grpc.Core
 
             debugStats.CheckOK();
         }
+
+        private int GetThreadPoolSizeOrDefault()
+        {
+            if (customThreadPoolSize.HasValue)
+            {
+                return customThreadPoolSize.Value;
+            }
+            // In systems with many cores, use half of the cores for GrpcThreadPool
+            // and the other half for .NET thread pool. This heuristic definitely needs
+            // more work, but seems to work reasonably well for a start.
+            return Math.Max(MinDefaultThreadPoolSize, Environment.ProcessorCount / 2);
+        }
     }
 }
-- 
GitLab


From 1e1fa0870f60b1c0d23da17b2aa7db9a3ca7f1ae Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Mon, 9 May 2016 15:18:11 -0700
Subject: [PATCH 453/525] dont lock to run server_request_call

---
 src/csharp/Grpc.Core/Server.cs | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs
index fea76d557a..3a337ba831 100644
--- a/src/csharp/Grpc.Core/Server.cs
+++ b/src/csharp/Grpc.Core/Server.cs
@@ -66,7 +66,7 @@ namespace Grpc.Core
         readonly TaskCompletionSource<object> shutdownTcs = new TaskCompletionSource<object>();
 
         bool startRequested;
-        bool shutdownRequested;
+        volatile bool shutdownRequested;
 
         /// <summary>
         /// Create a new server.
@@ -246,12 +246,9 @@ namespace Grpc.Core
         /// </summary>
         private void AllowOneRpc()
         {
-            lock (myLock)
+            if (!shutdownRequested)
             {
-                if (!shutdownRequested)
-                {
-                    handle.RequestCall(HandleNewServerRpc, environment);
-                }
+                handle.RequestCall(HandleNewServerRpc, environment);
             }
         }
 
-- 
GitLab


From dae51b0fe5fcc85d2ab698d417d711e39286b380 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jan.tattermusch@gmail.com>
Date: Mon, 9 May 2016 19:30:04 -0700
Subject: [PATCH 454/525] fix compilation on windows

---
 src/csharp/Grpc.Core/Server.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs
index 3a337ba831..d538a4671f 100644
--- a/src/csharp/Grpc.Core/Server.cs
+++ b/src/csharp/Grpc.Core/Server.cs
@@ -287,7 +287,7 @@ namespace Grpc.Core
         /// </summary>
         private void HandleNewServerRpc(bool success, BatchContextSafeHandle ctx)
         {
-            Task.Run(AllowOneRpc);
+			Task.Run(() => AllowOneRpc());
 
             if (success)
             {
-- 
GitLab


From 15d2979b7d1e73a4af8123b7e9fe73c15273d00d Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jan.tattermusch@gmail.com>
Date: Mon, 9 May 2016 23:27:05 -0700
Subject: [PATCH 455/525] update_perf_scripts

---
 tools/gce/create_linux_performance_worker.sh | 5 +++--
 tools/gce/linux_performance_worker_init.sh   | 1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/gce/create_linux_performance_worker.sh b/tools/gce/create_linux_performance_worker.sh
index 8c9cc46a75..96d5558d9a 100755
--- a/tools/gce/create_linux_performance_worker.sh
+++ b/tools/gce/create_linux_performance_worker.sh
@@ -42,14 +42,15 @@ CLOUD_PROJECT=grpc-testing
 ZONE=us-central1-b  # this zone allows 32core machines
 
 INSTANCE_NAME="${1:-grpc-performance-server1}"
-MACHINE_TYPE=n1-standard-32
+MACHINE_TYPE=n1-standard-8
 
 gcloud compute instances create $INSTANCE_NAME \
     --project="$CLOUD_PROJECT" \
     --zone "$ZONE" \
     --machine-type $MACHINE_TYPE \
     --image ubuntu-15-10 \
-    --boot-disk-size 300
+    --boot-disk-size 300 \
+    --scope https://www.googleapis.com/auth/bigquery
 
 echo 'Created GCE instance, waiting 60 seconds for it to come online.'
 sleep 60
diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh
index df29581e69..90aa527a3e 100755
--- a/tools/gce/linux_performance_worker_init.sh
+++ b/tools/gce/linux_performance_worker_init.sh
@@ -94,6 +94,7 @@ sudo pip install tox
 # Node dependencies (nvm has to be installed under user jenkins)
 touch .profile
 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
+source ~/.nvm/nvm.sh
 nvm install 0.12 && npm config set cache /tmp/npm-cache
 nvm install 4 && npm config set cache /tmp/npm-cache
 nvm install 5 && npm config set cache /tmp/npm-cache
-- 
GitLab


From 5ecdda759a9b1c8cb1b10ad08d50bb1be7b9e332 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Tue, 10 May 2016 08:29:53 +0200
Subject: [PATCH 456/525] Processing the 0.14 release.

---
 Makefile                                          | 2 +-
 build.yaml                                        | 2 +-
 package.json                                      | 2 +-
 src/core/lib/surface/version.c                    | 2 +-
 src/csharp/Grpc.Core/VersionInfo.cs               | 2 +-
 src/csharp/build_packages.bat                     | 2 +-
 src/node/tools/package.json                       | 2 +-
 src/python/grpcio/grpc_version.py                 | 2 +-
 src/ruby/lib/grpc/version.rb                      | 2 +-
 src/ruby/tools/version.rb                         | 2 +-
 tools/distrib/python/grpcio_tools/grpc_version.py | 2 +-
 tools/doxygen/Doxyfile.c++                        | 2 +-
 tools/doxygen/Doxyfile.c++.internal               | 2 +-
 tools/doxygen/Doxyfile.core                       | 2 +-
 tools/doxygen/Doxyfile.core.internal              | 2 +-
 15 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile
index 45003ad8b5..29fbb69b62 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ E = @echo
 Q = @
 endif
 
-VERSION = 0.14.0-pre1
+VERSION = 0.14.0
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index a21dc688ad..dac4a5c10a 100644
--- a/build.yaml
+++ b/build.yaml
@@ -7,7 +7,7 @@ settings:
   '#3': Use "-preN" suffixes to identify pre-release versions
   '#4': Per-language overrides are possible with (eg) ruby_version tag here
   '#5': See the expand_version.py for all the quirks here
-  version: 0.14.0-pre1
+  version: 0.14.0
 filegroups:
 - name: census
   public_headers:
diff --git a/package.json b/package.json
index b22cfc1f93..a9107e82cf 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc",
-  "version": "0.14.0-pre1",
+  "version": "0.14.0",
   "author": "Google Inc.",
   "description": "gRPC Library for Node",
   "homepage": "http://www.grpc.io/",
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index 0f4b1111f4..2a0bc5a47d 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -36,4 +36,4 @@
 
 #include <grpc/grpc.h>
 
-const char *grpc_version_string(void) { return "0.14.0-pre1"; }
+const char *grpc_version_string(void) { return "0.14.0"; }
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index 70ce9a18df..a22e287c6a 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -53,6 +53,6 @@ namespace Grpc.Core
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "0.14.0-pre1";
+        public const string CurrentVersion = "0.14.0";
     }
 }
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index 9c7b877fea..68b52e211f 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,7 +1,7 @@
 @rem Builds gRPC NuGet packages
 
 @rem Current package versions
-set VERSION=0.14.0-pre1
+set VERSION=0.14.0
 set PROTOBUF_VERSION=3.0.0-beta2
 
 @rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well.
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index b8b4c9aea1..25dadcd4cd 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-tools",
-  "version": "0.14.0-pre1",
+  "version": "0.14.0",
   "author": "Google Inc.",
   "description": "Tools for developing with gRPC on Node.js",
   "homepage": "http://www.grpc.io/",
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index 87fadf9a97..f1d07120c0 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION='0.14.0rc1'
+VERSION='0.14.0'
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 5117c85cea..7a0a81bf00 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '0.14.0.pre1'
+  VERSION = '0.14.0'
 end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index ec085d2655..80d109f82c 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -29,6 +29,6 @@
 
 module GRPC
   module Tools
-    VERSION = '0.14.0.pre1'
+    VERSION = '0.14.0'
   end
 end
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index ee522a0bc3..6c37bc3d8b 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION='0.14.0rc1'
+VERSION='0.14.0'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index f58f7e7281..d08a676a11 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-pre1
+PROJECT_NUMBER         = 0.14.0
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index a7a17bac3f..38fdbe9858 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-pre1
+PROJECT_NUMBER         = 0.14.0
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 8b13e6e793..917200ed5a 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-pre1
+PROJECT_NUMBER         = 0.14.0
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index b3b3477874..b79f395128 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0-pre1
+PROJECT_NUMBER         = 0.14.0
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
-- 
GitLab


From 2c75731b689ad2fa569668468dfae684a6be9458 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Tue, 10 May 2016 09:26:34 +0200
Subject: [PATCH 457/525] The release branch is now 0.14.1-pre1.

---
 Makefile                                          | 2 +-
 build.yaml                                        | 2 +-
 composer.json                                     | 2 +-
 package.json                                      | 2 +-
 package.xml                                       | 8 ++++----
 src/core/lib/surface/version.c                    | 2 +-
 src/csharp/Grpc.Core/VersionInfo.cs               | 4 ++--
 src/csharp/build_packages.bat                     | 2 +-
 src/node/tools/package.json                       | 2 +-
 src/python/grpcio/grpc_version.py                 | 2 +-
 src/ruby/lib/grpc/version.rb                      | 2 +-
 src/ruby/tools/version.rb                         | 2 +-
 tools/distrib/python/grpcio_tools/grpc_version.py | 2 +-
 tools/doxygen/Doxyfile.c++                        | 2 +-
 tools/doxygen/Doxyfile.c++.internal               | 2 +-
 tools/doxygen/Doxyfile.core                       | 2 +-
 tools/doxygen/Doxyfile.core.internal              | 2 +-
 17 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/Makefile b/Makefile
index 29fbb69b62..0547faf5bb 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ E = @echo
 Q = @
 endif
 
-VERSION = 0.14.0
+VERSION = 0.14.1-pre1
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index dac4a5c10a..1b7d4e03ab 100644
--- a/build.yaml
+++ b/build.yaml
@@ -7,7 +7,7 @@ settings:
   '#3': Use "-preN" suffixes to identify pre-release versions
   '#4': Per-language overrides are possible with (eg) ruby_version tag here
   '#5': See the expand_version.py for all the quirks here
-  version: 0.14.0
+  version: 0.14.1-pre1
 filegroups:
 - name: census
   public_headers:
diff --git a/composer.json b/composer.json
index 97b1a5cb49..0bf0ff4b45 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
   "name": "grpc/grpc",
   "type": "library",
   "description": "gRPC library for PHP",
-  "version": "0.14.0",
+  "version": "0.14.1",
   "keywords": ["rpc"],
   "homepage": "http://grpc.io",
   "license": "BSD-3-Clause",
diff --git a/package.json b/package.json
index a9107e82cf..ae5fb0c657 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc",
-  "version": "0.14.0",
+  "version": "0.14.1-pre1",
   "author": "Google Inc.",
   "description": "gRPC Library for Node",
   "homepage": "http://www.grpc.io/",
diff --git a/package.xml b/package.xml
index ab6dee0631..c90d6f6b4b 100644
--- a/package.xml
+++ b/package.xml
@@ -13,8 +13,8 @@
  <date>2016-04-19</date>
  <time>16:06:07</time>
  <version>
-  <release>0.14.0</release>
-  <api>0.14.0</api>
+  <release>0.14.1</release>
+  <api>0.14.1</api>
  </version>
  <stability>
   <release>beta</release>
@@ -1014,8 +1014,8 @@ Update to wrap gRPC C Core version 0.10.0
   </release>
   <release>
    <version>
-    <release>0.14.0</release>
-    <api>0.14.0</api>
+    <release>0.14.1</release>
+    <api>0.14.1</api>
    </version>
    <stability>
     <release>beta</release>
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index 2a0bc5a47d..a7fa0f3565 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -36,4 +36,4 @@
 
 #include <grpc/grpc.h>
 
-const char *grpc_version_string(void) { return "0.14.0"; }
+const char *grpc_version_string(void) { return "0.14.1-pre1"; }
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index a22e287c6a..6c6a08775d 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -48,11 +48,11 @@ namespace Grpc.Core
         /// <summary>
         /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
         /// </summary>
-        public const string CurrentAssemblyFileVersion = "0.14.0.0";
+        public const string CurrentAssemblyFileVersion = "0.14.1.0";
 
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "0.14.0";
+        public const string CurrentVersion = "0.14.1-pre1";
     }
 }
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index 68b52e211f..cf700d7581 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,7 +1,7 @@
 @rem Builds gRPC NuGet packages
 
 @rem Current package versions
-set VERSION=0.14.0
+set VERSION=0.14.1-pre1
 set PROTOBUF_VERSION=3.0.0-beta2
 
 @rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well.
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index 25dadcd4cd..da85b6455b 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-tools",
-  "version": "0.14.0",
+  "version": "0.14.1-pre1",
   "author": "Google Inc.",
   "description": "Tools for developing with gRPC on Node.js",
   "homepage": "http://www.grpc.io/",
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index f1d07120c0..e688e32c5f 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION='0.14.0'
+VERSION='0.14.1rc1'
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 7a0a81bf00..d8c2578c70 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '0.14.0'
+  VERSION = '0.14.1.pre1'
 end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index 80d109f82c..6dd5c339e2 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -29,6 +29,6 @@
 
 module GRPC
   module Tools
-    VERSION = '0.14.0'
+    VERSION = '0.14.1.pre1'
   end
 end
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index 6c37bc3d8b..cfd27d45c2 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION='0.14.0'
+VERSION='0.14.1rc1'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index d08a676a11..8ea1019f40 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0
+PROJECT_NUMBER         = 0.14.1-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 38fdbe9858..cb444ef137 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0
+PROJECT_NUMBER         = 0.14.1-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 917200ed5a..34002354cf 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0
+PROJECT_NUMBER         = 0.14.1-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index b79f395128..434f6c92a3 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.0
+PROJECT_NUMBER         = 0.14.1-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
-- 
GitLab


From 03b44ab74118cbaa7acc5fb04e5dd3aede28b787 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date: Tue, 10 May 2016 09:20:59 -0700
Subject: [PATCH 458/525] Install go

---
 tools/gce/linux_performance_worker_init.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh
index 90aa527a3e..27f53cb077 100755
--- a/tools/gce/linux_performance_worker_init.sh
+++ b/tools/gce/linux_performance_worker_init.sh
@@ -116,3 +116,6 @@ source ~/.rvm/scripts/rvm
 gem install bundler
 
 # Java dependencies - nothing as we already have Java JDK 8
+
+# Go dependencies
+sudo apt-get install golang-go
-- 
GitLab


From 7573dfc16ba6b10b95d354d60f6183907546096b Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 10 May 2016 09:33:23 -0700
Subject: [PATCH 459/525] Fixed references in grpc-tools gemspec

---
 src/ruby/tools/grpc-tools.gemspec | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/ruby/tools/grpc-tools.gemspec b/src/ruby/tools/grpc-tools.gemspec
index af904de4a9..9fa4b66392 100644
--- a/src/ruby/tools/grpc-tools.gemspec
+++ b/src/ruby/tools/grpc-tools.gemspec
@@ -18,5 +18,5 @@ Gem::Specification.new do |s|
 
   s.platform = Gem::Platform::RUBY
 
-  s.executables = %w( protoc.rb protoc_grpc_ruby_plugin.rb )
+  s.executables = %w( grpc_tools_ruby_protoc.rb grpc_tools_ruby_protoc_plugin.rb )
 end
-- 
GitLab


From 25665aa78ab1132031305c52330fd79de8ce436f Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date: Tue, 10 May 2016 09:47:05 -0700
Subject: [PATCH 460/525] Update linux_performance_worker_init.sh

---
 tools/gce/linux_performance_worker_init.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh
index 27f53cb077..96e8a1353c 100755
--- a/tools/gce/linux_performance_worker_init.sh
+++ b/tools/gce/linux_performance_worker_init.sh
@@ -118,4 +118,4 @@ gem install bundler
 # Java dependencies - nothing as we already have Java JDK 8
 
 # Go dependencies
-sudo apt-get install golang-go
+sudo apt-get install -y golang-go
-- 
GitLab


From 78222f73830b6f52ab110ead8637075371c927fd Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Tue, 10 May 2016 09:55:38 -0700
Subject: [PATCH 461/525] Enable -Wextra-semi on compilers that support it

Use some template magic to make warning detection much easier in the future.
---
 Makefile                                 | 175 ++++++++++++-----------
 build.yaml                               |   2 +-
 templates/Makefile.template              |  34 +++--
 test/build/extra-semi.c                  |  34 +++++
 test/build/no-shift-negative-value.c     |  34 +++++
 test/core/end2end/fixtures/h2_ssl_cert.c |  18 +--
 6 files changed, 191 insertions(+), 106 deletions(-)
 create mode 100644 test/build/extra-semi.c
 create mode 100644 test/build/no-shift-negative-value.c

diff --git a/Makefile b/Makefile
index dfd8461ea9..0a7584f53b 100644
--- a/Makefile
+++ b/Makefile
@@ -319,12 +319,19 @@ CHECK_SHADOW_WORKS_CMD = $(CC) -std=c99 -Werror -Wshadow -o $(TMPOUT) -c test/bu
 HAS_WORKING_SHADOW = $(shell $(CHECK_SHADOW_WORKS_CMD) 2> /dev/null && echo true || echo false)
 ifeq ($(HAS_WORKING_SHADOW),true)
 W_SHADOW=-Wshadow
+NO_W_SHADOW=-Wno-shadow
 endif
-
-CHECK_NO_SHIFT_NEGATIVE_VALUE_CMD = $(CC) -std=c99 -Werror -Wno-shift-negative-value -o $(TMPOUT) -c test/build/empty.c
-HAS_NO_SHIFT_NEGATIVE_VALUE = $(shell $(CHECK_NO_SHIFT_NEGATIVE_VALUE_CMD) 2> /dev/null && echo true || echo false)
-ifeq ($(HAS_NO_SHIFT_NEGATIVE_VALUE),true)
+CHECK_EXTRA_SEMI_WORKS_CMD = $(CC) -std=c99 -Werror -Wextra-semi -o $(TMPOUT) -c test/build/extra-semi.c
+HAS_WORKING_EXTRA_SEMI = $(shell $(CHECK_EXTRA_SEMI_WORKS_CMD) 2> /dev/null && echo true || echo false)
+ifeq ($(HAS_WORKING_EXTRA_SEMI),true)
+W_EXTRA_SEMI=-Wextra-semi
+NO_W_EXTRA_SEMI=-Wno-extra-semi
+endif
+CHECK_NO_SHIFT_NEGATIVE_VALUE_WORKS_CMD = $(CC) -std=c99 -Werror -Wno-shift-negative-value -o $(TMPOUT) -c test/build/no-shift-negative-value.c
+HAS_WORKING_NO_SHIFT_NEGATIVE_VALUE = $(shell $(CHECK_NO_SHIFT_NEGATIVE_VALUE_WORKS_CMD) 2> /dev/null && echo true || echo false)
+ifeq ($(HAS_WORKING_NO_SHIFT_NEGATIVE_VALUE),true)
 W_NO_SHIFT_NEGATIVE_VALUE=-Wno-shift-negative-value
+NO_W_NO_SHIFT_NEGATIVE_VALUE=-Wshift-negative-value
 endif
 
 # The HOST compiler settings are used to compile the protoc plugins.
@@ -341,7 +348,7 @@ ifdef EXTRA_DEFINES
 DEFINES += $(EXTRA_DEFINES)
 endif
 
-CFLAGS += -std=c99 -Wsign-conversion -Wconversion $(W_SHADOW)
+CFLAGS += -std=c99 -Wsign-conversion -Wconversion $(W_SHADOW) $(W_EXTRA_SEMI)
 ifeq ($(HAS_CXX11),true)
 CXXFLAGS += -std=c++11
 else
@@ -472,7 +479,7 @@ endif
 
 OPENSSL_ALPN_CHECK_CMD = $(CC) $(CPPFLAGS) $(CFLAGS) -o $(TMPOUT) test/build/openssl-alpn.c $(addprefix -l, $(OPENSSL_LIBS)) $(LDFLAGS)
 OPENSSL_NPN_CHECK_CMD = $(CC) $(CPPFLAGS) $(CFLAGS) -o $(TMPOUT) test/build/openssl-npn.c $(addprefix -l, $(OPENSSL_LIBS)) $(LDFLAGS)
-BORINGSSL_COMPILE_CHECK_CMD = $(CC) $(CPPFLAGS) -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare -o $(TMPOUT) test/build/boringssl.c $(LDFLAGS)
+BORINGSSL_COMPILE_CHECK_CMD = $(CC) $(CPPFLAGS) -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI) -o $(TMPOUT) test/build/boringssl.c $(LDFLAGS)
 ZLIB_CHECK_CMD = $(CC) $(CPPFLAGS) $(CFLAGS) -o $(TMPOUT) test/build/zlib.c -lz $(LDFLAGS)
 PROTOBUF_CHECK_CMD = $(CXX) $(CPPFLAGS) $(CXXFLAGS) -o $(TMPOUT) test/build/protobuf.cc -lprotobuf $(LDFLAGS)
 
@@ -4330,7 +4337,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_SRC))))
 
 $(LIBBORINGSSL_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl.a: $(ZLIB_DEP)  $(LIBBORINGSSL_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -4359,7 +4366,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_TEST_UTIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_TEST_UTIL_SRC))))
 
 $(LIBBORINGSSL_TEST_UTIL_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_TEST_UTIL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_TEST_UTIL_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4397,7 +4404,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_AES_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_AES_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_AES_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_AES_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_AES_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4435,7 +4442,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_ASN1_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ASN1_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_ASN1_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_ASN1_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_ASN1_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4473,7 +4480,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_BASE64_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BASE64_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_BASE64_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_BASE64_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_BASE64_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4511,7 +4518,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_BIO_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BIO_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_BIO_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_BIO_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_BIO_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4549,7 +4556,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_BN_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BN_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_BN_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_BN_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_BN_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4587,7 +4594,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_BYTESTRING_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_BYTESTRING_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4625,7 +4632,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_AEAD_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_AEAD_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_AEAD_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_AEAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_AEAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4663,7 +4670,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_CIPHER_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_CIPHER_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_CIPHER_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4701,7 +4708,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_CMAC_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_CMAC_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_CMAC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_CMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_CMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4739,7 +4746,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_constant_time_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_CONSTANT_TIME_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -4766,7 +4773,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_ED25519_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ED25519_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_ED25519_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_ED25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_ED25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4804,7 +4811,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_X25519_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_X25519_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_X25519_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_X25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_X25519_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4842,7 +4849,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_DH_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_DH_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_DH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_DH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_DH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4880,7 +4887,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_DIGEST_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_DIGEST_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_DIGEST_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4918,7 +4925,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_DSA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_DSA_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_DSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_dsa_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_DSA_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -4945,7 +4952,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_EC_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EC_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_EC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_EC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_EC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -4983,7 +4990,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EXAMPLE_MUL_LIB_SRC))))
 
 $(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_example_mul_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_EXAMPLE_MUL_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5010,7 +5017,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_ECDSA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ECDSA_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_ECDSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5048,7 +5055,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_ERR_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ERR_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_ERR_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_ERR_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_ERR_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5086,7 +5093,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_EVP_EXTRA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5124,7 +5131,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_EVP_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_EVP_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_EVP_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_EVP_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_EVP_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5162,7 +5169,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_PBKDF_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PBKDF_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_PBKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5200,7 +5207,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_HKDF_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_HKDF_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_HKDF_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_hkdf_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_HKDF_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5227,7 +5234,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_HMAC_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_HMAC_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_HMAC_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_HMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_HMAC_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5265,7 +5272,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_LHASH_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_LHASH_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_LHASH_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_lhash_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_LHASH_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5292,7 +5299,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_GCM_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_GCM_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_GCM_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5319,7 +5326,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_PKCS12_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PKCS12_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_PKCS12_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5357,7 +5364,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_PKCS8_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PKCS8_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_PKCS8_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5395,7 +5402,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_POLY1305_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_POLY1305_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_POLY1305_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5433,7 +5440,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_REFCOUNT_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_refcount_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_REFCOUNT_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5460,7 +5467,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_RSA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_RSA_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_RSA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_RSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_RSA_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5498,7 +5505,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_THREAD_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_THREAD_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_THREAD_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_thread_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_THREAD_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5525,7 +5532,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_PKCS7_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PKCS7_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_pkcs7_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_PKCS7_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5552,7 +5559,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_X509_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_X509_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_X509_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_X509_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_X509_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -5590,7 +5597,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_TAB_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_TAB_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_TAB_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_tab_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_TAB_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5617,7 +5624,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_V3NAME_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_V3NAME_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_v3name_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_V3NAME_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5644,7 +5651,7 @@ PUBLIC_HEADERS_C += \
 LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PQUEUE_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 $(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a: $(ZLIB_DEP)  $(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS) 
 	$(E) "[AR]      Creating $@"
@@ -5671,7 +5678,7 @@ PUBLIC_HEADERS_CXX += \
 LIBBORINGSSL_SSL_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_SSL_TEST_LIB_SRC))))
 
 $(LIBBORINGSSL_SSL_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_SSL_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+$(LIBBORINGSSL_SSL_TEST_LIB_OBJS): CFLAGS += -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
 
 ifeq ($(NO_PROTOBUF),true)
 
@@ -11986,7 +11993,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_AES_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_AES_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_AES_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_AES_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12013,7 +12020,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_ASN1_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_ASN1_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_ASN1_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_ASN1_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12040,7 +12047,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_BASE64_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_BASE64_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_BASE64_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_BASE64_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12067,7 +12074,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_BIO_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_BIO_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_BIO_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_BIO_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12094,7 +12101,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_BN_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_BN_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_BN_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_BN_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12121,7 +12128,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_BYTESTRING_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_BYTESTRING_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_BYTESTRING_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_BYTESTRING_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12148,7 +12155,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_AEAD_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_AEAD_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_AEAD_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_AEAD_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12175,7 +12182,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_CIPHER_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_CIPHER_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_CIPHER_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_CIPHER_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12202,7 +12209,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_CMAC_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_CMAC_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_CMAC_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_CMAC_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12229,7 +12236,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_CONSTANT_TIME_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_CONSTANT_TIME_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_CONSTANT_TIME_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_CONSTANT_TIME_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12256,7 +12263,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_ED25519_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_ED25519_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_ED25519_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_ED25519_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12283,7 +12290,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_X25519_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_X25519_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_X25519_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_X25519_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12310,7 +12317,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_DH_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_DH_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_DH_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_DH_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12337,7 +12344,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_DIGEST_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_DIGEST_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_DIGEST_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_DIGEST_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12364,7 +12371,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_DSA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_DSA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_DSA_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_DSA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12391,7 +12398,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_EC_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_EC_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_EC_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_EC_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12418,7 +12425,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_EXAMPLE_MUL_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_EXAMPLE_MUL_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_EXAMPLE_MUL_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_EXAMPLE_MUL_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12445,7 +12452,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_ECDSA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_ECDSA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_ECDSA_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_ECDSA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12472,7 +12479,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_ERR_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_ERR_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_ERR_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_ERR_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12499,7 +12506,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_EVP_EXTRA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_EVP_EXTRA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_EVP_EXTRA_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_EVP_EXTRA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12526,7 +12533,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_EVP_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_EVP_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_EVP_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_EVP_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12553,7 +12560,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_PBKDF_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_PBKDF_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_PBKDF_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_PBKDF_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12580,7 +12587,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_HKDF_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_HKDF_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_HKDF_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_HKDF_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12607,7 +12614,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_HMAC_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_HMAC_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_HMAC_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_HMAC_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12634,7 +12641,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_LHASH_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_LHASH_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_LHASH_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_LHASH_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12661,7 +12668,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_GCM_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_GCM_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_GCM_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_GCM_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12688,7 +12695,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_PKCS12_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_PKCS12_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_PKCS12_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_PKCS12_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12715,7 +12722,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_PKCS8_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_PKCS8_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_PKCS8_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_PKCS8_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12742,7 +12749,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_POLY1305_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_POLY1305_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_POLY1305_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_POLY1305_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12769,7 +12776,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_REFCOUNT_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_REFCOUNT_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_REFCOUNT_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_REFCOUNT_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12796,7 +12803,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_RSA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_RSA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_RSA_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_RSA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12823,7 +12830,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_THREAD_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_THREAD_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_THREAD_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_THREAD_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12850,7 +12857,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_PKCS7_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_PKCS7_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_PKCS7_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_PKCS7_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12877,7 +12884,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_X509_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_X509_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_X509_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_X509_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12904,7 +12911,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_TAB_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_TAB_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_TAB_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_TAB_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12931,7 +12938,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_V3NAME_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_V3NAME_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_V3NAME_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_V3NAME_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12958,7 +12965,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_PQUEUE_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_PQUEUE_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_PQUEUE_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_PQUEUE_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
@@ -12985,7 +12992,7 @@ endif
 # boringssl needs an override to ensure that it does not include
 # system openssl headers regardless of other configuration
 # we do so here with a target specific variable assignment
-$(BORINGSSL_SSL_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+$(BORINGSSL_SSL_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
 $(BORINGSSL_SSL_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
 $(BORINGSSL_SSL_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
 
diff --git a/build.yaml b/build.yaml
index 5e47c08455..65e80a99ad 100644
--- a/build.yaml
+++ b/build.yaml
@@ -3252,7 +3252,7 @@ configs:
 defaults:
   boringssl:
     CFLAGS: -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas
-      -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare
+      -Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
     CPPFLAGS: -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM
       -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
   global:
diff --git a/templates/Makefile.template b/templates/Makefile.template
index e84ceebf22..0d5f0ec5b5 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -49,6 +49,19 @@
 
     sources_that_need_openssl = set()
     sources_that_don_t_need_openssl = set()
+
+    # warnings we'd like, but that dont exist in all compilers
+    PREFERRED_WARNINGS=['shadow', 'extra-semi']
+    CHECK_WARNINGS=PREFERRED_WARNINGS + ['no-shift-negative-value']
+
+    def warning_var(fmt, warning):
+      return fmt % warning.replace('-', '_').upper()
+
+    def neg_warning(warning):
+      if warning[0:3] == 'no-':
+        return warning[3:]
+      else:
+        return 'no-' + warning
   %>
 
 
@@ -187,17 +200,14 @@
   CXX11_CHECK_CMD = $(CXX) -std=c++11 -o $(TMPOUT) -c test/build/c++11.cc
   HAS_CXX11 = $(shell $(CXX11_CHECK_CMD) 2> /dev/null && echo true || echo false)
 
-  CHECK_SHADOW_WORKS_CMD = $(CC) -std=c99 -Werror -Wshadow -o $(TMPOUT) -c test/build/shadow.c
-  HAS_WORKING_SHADOW = $(shell $(CHECK_SHADOW_WORKS_CMD) 2> /dev/null && echo true || echo false)
-  ifeq ($(HAS_WORKING_SHADOW),true)
-  W_SHADOW=-Wshadow
-  endif
-
-  CHECK_NO_SHIFT_NEGATIVE_VALUE_CMD = $(CC) -std=c99 -Werror -Wno-shift-negative-value -o $(TMPOUT) -c test/build/empty.c
-  HAS_NO_SHIFT_NEGATIVE_VALUE = $(shell $(CHECK_NO_SHIFT_NEGATIVE_VALUE_CMD) 2> /dev/null && echo true || echo false)
-  ifeq ($(HAS_NO_SHIFT_NEGATIVE_VALUE),true)
-  W_NO_SHIFT_NEGATIVE_VALUE=-Wno-shift-negative-value
+  %for warning in CHECK_WARNINGS:
+  ${warning_var('CHECK_%s_WORKS_CMD', warning)} = $(CC) -std=c99 -Werror -W${warning} -o $(TMPOUT) -c test/build/${warning}.c
+  ${warning_var('HAS_WORKING_%s', warning)} = $(shell $(${warning_var('CHECK_%s_WORKS_CMD', warning)}) 2> /dev/null && echo true || echo false)
+  ifeq ($(${warning_var('HAS_WORKING_%s', warning)}),true)
+  ${warning_var('W_%s', warning)}=-W${warning}
+  ${warning_var('NO_W_%s', warning)}=-W${neg_warning(warning)}
   endif
+  %endfor
 
   # The HOST compiler settings are used to compile the protoc plugins.
   # In most cases, you won't have to change anything, but if you are
@@ -213,7 +223,7 @@
   DEFINES += $(EXTRA_DEFINES)
   endif
 
-  CFLAGS += -std=c99 -Wsign-conversion -Wconversion $(W_SHADOW)
+  CFLAGS += -std=c99 -Wsign-conversion -Wconversion ${' '.join(warning_var('$(W_%s)', warning) for warning in PREFERRED_WARNINGS)}
   ifeq ($(HAS_CXX11),true)
   CXXFLAGS += -std=c++11
   else
@@ -1698,7 +1708,7 @@
   # boringssl needs an override to ensure that it does not include
   # system openssl headers regardless of other configuration
   # we do so here with a target specific variable assignment
-  $(${tgt.name.upper()}_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
+  $(${tgt.name.upper()}_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
   $(${tgt.name.upper()}_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
   $(${tgt.name.upper()}_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
   % else:
diff --git a/test/build/extra-semi.c b/test/build/extra-semi.c
new file mode 100644
index 0000000000..60466dda78
--- /dev/null
+++ b/test/build/extra-semi.c
@@ -0,0 +1,34 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+int main(void) {}
diff --git a/test/build/no-shift-negative-value.c b/test/build/no-shift-negative-value.c
new file mode 100644
index 0000000000..58e4698aee
--- /dev/null
+++ b/test/build/no-shift-negative-value.c
@@ -0,0 +1,34 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+int main(void) {}
diff --git a/test/core/end2end/fixtures/h2_ssl_cert.c b/test/core/end2end/fixtures/h2_ssl_cert.c
index cd031ca482..f4dea2cc01 100644
--- a/test/core/end2end/fixtures/h2_ssl_cert.c
+++ b/test/core/end2end/fixtures/h2_ssl_cert.c
@@ -143,11 +143,11 @@ static int fail_server_auth_check(grpc_channel_args *server_args) {
     chttp2_init_server_secure_fullstack(f, server_args, ssl_creds);         \
   }
 
-SERVER_INIT(GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE);
-SERVER_INIT(GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_BUT_DONT_VERIFY);
-SERVER_INIT(GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_AND_VERIFY);
-SERVER_INIT(GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_BUT_DONT_VERIFY);
-SERVER_INIT(GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY);
+SERVER_INIT(GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE)
+SERVER_INIT(GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_BUT_DONT_VERIFY)
+SERVER_INIT(GRPC_SSL_REQUEST_CLIENT_CERTIFICATE_AND_VERIFY)
+SERVER_INIT(GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_BUT_DONT_VERIFY)
+SERVER_INIT(GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY)
 
 #define CLIENT_INIT_NAME(cert_type) \
   chttp2_init_client_simple_ssl_secure_fullstack_##cert_type
@@ -189,10 +189,10 @@ typedef enum { NONE, SELF_SIGNED, SIGNED, BAD_CERT_PAIR } certtype;
     grpc_channel_args_destroy(new_client_args);                              \
   }
 
-CLIENT_INIT(NONE);
-CLIENT_INIT(SELF_SIGNED);
-CLIENT_INIT(SIGNED);
-CLIENT_INIT(BAD_CERT_PAIR);
+CLIENT_INIT(NONE)
+CLIENT_INIT(SELF_SIGNED)
+CLIENT_INIT(SIGNED)
+CLIENT_INIT(BAD_CERT_PAIR)
 
 #define TEST_NAME(enum_name, cert_type, result) \
   "chttp2/ssl_" #enum_name "_" #cert_type "_" #result "_"
-- 
GitLab


From a46d21de37c60554dd455104dbbec37854515253 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 10 May 2016 09:57:51 -0700
Subject: [PATCH 462/525] fix TimeoutOnSleepingServer interop test

---
 src/csharp/Grpc.IntegrationTesting/InteropClient.cs | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
index b3b1abf1bc..cff8508631 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
@@ -492,6 +492,10 @@ namespace Grpc.IntegrationTesting
                 {
                     // Deadline was reached before write has started. Eat the exception and continue.
                 }
+                catch (RpcException)
+                {
+                    // Deadline was reached before write has started. Eat the exception and continue.
+                }
 
                 var ex = Assert.ThrowsAsync<RpcException>(async () => await call.ResponseStream.MoveNext());
                 // We can't guarantee the status code always DeadlineExceeded. See issue #2685.
-- 
GitLab


From 39e71c33d1a15b85af7c36f08736124a2537896f Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Tue, 10 May 2016 10:21:41 -0700
Subject: [PATCH 463/525] fix compiling error

---
 test/cpp/end2end/end2end_test.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc
index 40ba0c0b43..e3408bff75 100644
--- a/test/cpp/end2end/end2end_test.cc
+++ b/test/cpp/end2end/end2end_test.cc
@@ -995,7 +995,7 @@ TEST_P(End2endTest, BinaryTrailerTest) {
   Status s = stub_->Echo(&context, request, &response);
   EXPECT_FALSE(s.ok());
   auto trailers = context.GetServerTrailingMetadata();
-  EXPECT_EQ(1, trailers.count(kDebugInfoTrailerKey));
+  EXPECT_EQ(1u, trailers.count(kDebugInfoTrailerKey));
   auto iter = trailers.find(kDebugInfoTrailerKey);
   EXPECT_EQ(expected_string, iter->second);
   // Parse the returned trailer into a DebugInfo proto.
-- 
GitLab


From 92d9106a35615101907cbf74e66f65768e2b5fa9 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 10 May 2016 11:53:19 -0700
Subject: [PATCH 464/525] dont use corelimit for throughput tests

---
 tools/run_tests/performance/scenario_config.py | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 8b23995149..8f76d0a02e 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -29,7 +29,6 @@
 
 # performance scenario configuration for various languages
 
-SINGLE_MACHINE_CORES=8
 WARMUP_SECONDS=5
 JAVA_WARMUP_SECONDS=15  # Java needs more warmup time for JIT to kick in.
 BENCHMARK_SECONDS=30
@@ -197,7 +196,6 @@ class CXXLanguage:
       yield _ping_pong_scenario(
           'cpp_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
           client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-          server_core_limit=SINGLE_MACHINE_CORES/2,
           use_unconstrained_client=True,
           secure=secure,
           categories=smoketest_categories)
@@ -205,7 +203,6 @@ class CXXLanguage:
       yield _ping_pong_scenario(
           'cpp_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
           client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-          server_core_limit=SINGLE_MACHINE_CORES/2,
           use_unconstrained_client=True,
           secure=secure)
 
@@ -213,7 +210,6 @@ class CXXLanguage:
           'cpp_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
           client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
           use_unconstrained_client=True, use_generic_payload=True,
-          server_core_limit=SINGLE_MACHINE_CORES/2,
           secure=secure,
           categories=smoketest_categories)
 
-- 
GitLab


From c5943093b517c8672299307ac826e166509d1a6f Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Tue, 10 May 2016 11:40:46 -0700
Subject: [PATCH 465/525] Change argument type to avoid undefined behavior

---
 test/core/client_config/lb_policies_test.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/test/core/client_config/lb_policies_test.c b/test/core/client_config/lb_policies_test.c
index e766672cf5..2ec46124a8 100644
--- a/test/core/client_config/lb_policies_test.c
+++ b/test/core/client_config/lb_policies_test.c
@@ -438,9 +438,9 @@ static grpc_call **perform_multirequest(servers_fixture *f,
   return calls;
 }
 
-static void assert_channel_connectivity(
-    grpc_channel *ch, size_t num_accepted_conn_states,
-    grpc_connectivity_state accepted_conn_state, ...) {
+static void assert_channel_connectivity(grpc_channel *ch,
+                                        size_t num_accepted_conn_states,
+                                        int accepted_conn_state, ...) {
   size_t i;
   grpc_channel_stack *client_stack;
   grpc_channel_element *client_channel_filter;
@@ -456,7 +456,7 @@ static void assert_channel_connectivity(
   grpc_exec_ctx_finish(&exec_ctx);
   va_start(ap, accepted_conn_state);
   for (i = 0; i < num_accepted_conn_states; i++) {
-    if (actual_conn_state == accepted_conn_state) {
+    if ((int)actual_conn_state == accepted_conn_state) {
       break;
     }
     accepted_conn_state = va_arg(ap, grpc_connectivity_state);
-- 
GitLab


From 6ab85d0c00cc60505991660afe40a20d936b14ff Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 10 May 2016 11:55:54 -0700
Subject: [PATCH 466/525] regenerate tests.json

---
 tools/run_tests/tests.json | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 1939da7aec..f1d302f2ef 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -23105,7 +23105,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 0, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23131,7 +23131,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 0, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23157,7 +23157,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_secure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 0, \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": {\"use_test_ca\": true, \"server_host_override\": \"foo.test.google.fr\"}, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23313,7 +23313,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_unary_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 0, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"UNARY\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23339,7 +23339,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_protobuf_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 0, \"security_params\": null, \"server_type\": \"ASYNC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"simple_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
@@ -23365,7 +23365,7 @@
   {
     "args": [
       "--scenario_json", 
-      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 4, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
+      "'{\"name\": \"cpp_generic_async_streaming_qps_unconstrained_insecure\", \"warmup_seconds\": 5, \"benchmark_seconds\": 30, \"num_servers\": 1, \"server_config\": {\"async_server_threads\": 0, \"core_limit\": 0, \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"server_type\": \"ASYNC_GENERIC_SERVER\"}, \"client_config\": {\"client_type\": \"ASYNC_CLIENT\", \"security_params\": null, \"payload_config\": {\"bytebuf_params\": {\"resp_size\": 0, \"req_size\": 0}}, \"client_channels\": 64, \"async_client_threads\": 0, \"outstanding_rpcs_per_channel\": 100, \"rpc_type\": \"STREAMING\", \"load_params\": {\"closed_loop\": {}}, \"histogram_params\": {\"max_possible\": 60000000000.0, \"resolution\": 0.01}}, \"num_clients\": 0}'"
     ], 
     "boringssl": true, 
     "ci_platforms": [
-- 
GitLab


From 08eae3ddab24fb1168e0a5f7fce83b8c3788768f Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 10 May 2016 12:50:05 -0700
Subject: [PATCH 467/525] Make Node build_package script consistent with
 grpc-tools package.json file

---
 tools/run_tests/build_package_node.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/build_package_node.sh b/tools/run_tests/build_package_node.sh
index 6bc9466b63..4646072a54 100755
--- a/tools/run_tests/build_package_node.sh
+++ b/tools/run_tests/build_package_node.sh
@@ -55,7 +55,7 @@ npm pack
 cp grpc-tools-*.tgz $artifacts/
 tools_version=$(npm list | grep -oP '(?<=grpc-tools@)\S+')
 
-output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/$tools_version
+output_dir=$artifacts/grpc-precompiled-binaries/node/grpc-tools/v$tools_version
 mkdir -p $output_dir
 
 for arch in {x86,x64}; do
-- 
GitLab


From 1128019d578e67040465cf1c187ccff3bda5a467 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 6 May 2016 13:28:46 -0700
Subject: [PATCH 468/525] add netperf to init script

---
 tools/gce/linux_performance_worker_init.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh
index 96e8a1353c..dc4784262e 100755
--- a/tools/gce/linux_performance_worker_init.sh
+++ b/tools/gce/linux_performance_worker_init.sh
@@ -77,6 +77,9 @@ sudo apt-get install -y \
 # perftools
 sudo apt-get install -y google-perftools libgoogle-perftools-dev
 
+# netperf
+sudo apt-get install -y netperf
+
 # C++ dependencies
 sudo apt-get install -y libgflags-dev libgtest-dev libc++-dev clang
 
-- 
GitLab


From 4de2c3254bf9af853249d3ffc905dea8e982453c Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 10 May 2016 14:33:07 -0700
Subject: [PATCH 469/525] add support for running netperf scenario

---
 tools/gce/create_linux_performance_worker.sh  |  2 +-
 .../run_tests/performance/bq_upload_result.py | 43 +++++++++++++++--
 tools/run_tests/performance/run_netperf.sh    | 45 ++++++++++++++++++
 tools/run_tests/run_performance_tests.py      | 47 ++++++++++++++++++-
 4 files changed, 130 insertions(+), 7 deletions(-)
 create mode 100755 tools/run_tests/performance/run_netperf.sh

diff --git a/tools/gce/create_linux_performance_worker.sh b/tools/gce/create_linux_performance_worker.sh
index 96d5558d9a..c9a0ffa4e1 100755
--- a/tools/gce/create_linux_performance_worker.sh
+++ b/tools/gce/create_linux_performance_worker.sh
@@ -50,7 +50,7 @@ gcloud compute instances create $INSTANCE_NAME \
     --machine-type $MACHINE_TYPE \
     --image ubuntu-15-10 \
     --boot-disk-size 300 \
-    --scope https://www.googleapis.com/auth/bigquery
+    --scopes https://www.googleapis.com/auth/bigquery
 
 echo 'Created GCE instance, waiting 60 seconds for it to come online.'
 sleep 60
diff --git a/tools/run_tests/performance/bq_upload_result.py b/tools/run_tests/performance/bq_upload_result.py
index ebd28f7591..fbccf3bdca 100755
--- a/tools/run_tests/performance/bq_upload_result.py
+++ b/tools/run_tests/performance/bq_upload_result.py
@@ -48,20 +48,47 @@ import big_query_utils
 _PROJECT_ID='grpc-testing'
 
 
-def _upload_scenario_result_to_bigquery(dataset_id, table_id, result_file):
+def _upload_netperf_latency_csv_to_bigquery(dataset_id, table_id, result_file):
+  with open(result_file, 'r') as f:
+    (col1, col2, col3) = f.read().split(',')
+    latency50 = float(col1.strip()) * 1000
+    latency90 = float(col2.strip()) * 1000
+    latency99 = float(col3.strip()) * 1000
+
+    scenario_result = {
+        'scenario': {
+          'name': 'netperf_tcp_rr'
+        },
+        'summary': {
+          'latency50': latency50,
+          'latency90': latency90,
+          'latency99': latency99
+        }
+    }
+
   bq = big_query_utils.create_big_query()
   _create_results_table(bq, dataset_id, table_id)
 
+  if not _insert_result(bq, dataset_id, table_id, scenario_result, flatten=False):
+    print 'Error uploading result to bigquery.'
+    sys.exit(1)
+
+
+def _upload_scenario_result_to_bigquery(dataset_id, table_id, result_file):
   with open(result_file, 'r') as f:
     scenario_result = json.loads(f.read())
 
+  bq = big_query_utils.create_big_query()
+  _create_results_table(bq, dataset_id, table_id)
+
   if not _insert_result(bq, dataset_id, table_id, scenario_result):
     print 'Error uploading result to bigquery.'
     sys.exit(1)
 
 
-def _insert_result(bq, dataset_id, table_id, scenario_result):
-  _flatten_result_inplace(scenario_result)
+def _insert_result(bq, dataset_id, table_id, scenario_result, flatten=True):
+  if flatten:
+    _flatten_result_inplace(scenario_result)
   _populate_metadata_inplace(scenario_result)
   row = big_query_utils.make_row(str(uuid.uuid4()), scenario_result)
   return big_query_utils.insert_rows(bq,
@@ -127,9 +154,17 @@ argp.add_argument('--bq_result_table', required=True, default=None, type=str,
                   help='Bigquery "dataset.table" to upload results to.')
 argp.add_argument('--file_to_upload', default='scenario_result.json', type=str,
                   help='Report file to upload.')
+argp.add_argument('--file_format',
+                  choices=['scenario_result','netperf_latency_csv'],
+                  default='scenario_result',
+                  help='Format of the file to upload.')
 
 args = argp.parse_args()
 
 dataset_id, table_id = args.bq_result_table.split('.', 2)
-_upload_scenario_result_to_bigquery(dataset_id, table_id, args.file_to_upload)
+
+if args.file_format == 'netperf_latency_csv':
+  _upload_netperf_latency_csv_to_bigquery(dataset_id, table_id, args.file_to_upload)
+else:
+  _upload_scenario_result_to_bigquery(dataset_id, table_id, args.file_to_upload)
 print 'Successfully uploaded %s to BigQuery.\n' % args.file_to_upload
diff --git a/tools/run_tests/performance/run_netperf.sh b/tools/run_tests/performance/run_netperf.sh
new file mode 100755
index 0000000000..55a0c31bd2
--- /dev/null
+++ b/tools/run_tests/performance/run_netperf.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+cd $(dirname $0)/../../..
+
+netperf >netperf_latency.txt -P 0 -t TCP_RR -H "$NETPERF_SERVER_HOST" -- -o P50_LATENCY,P90_LATENCY,P99_LATENCY
+
+cat netperf_latency.txt
+
+if [ "$BQ_RESULT_TABLE" != "" ]
+then
+  tools/run_tests/performance/bq_upload_result.py \
+      --file_to_upload=netperf_latency.txt \
+      --file_format=netperf_latency_csv \
+      --bq_result_table="$BQ_RESULT_TABLE"
+fi
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index b1f5889e54..674d864539 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -131,6 +131,25 @@ def create_quit_jobspec(workers, remote_host=None):
       verbose_success=True)
 
 
+def create_netperf_jobspec(server_host='localhost', client_host=None,
+                           bq_result_table=None):
+  """Runs netperf benchmark."""
+  cmd = 'NETPERF_SERVER_HOST="%s" ' % server_host
+  if bq_result_table:
+    cmd += 'BQ_RESULT_TABLE="%s" ' % bq_result_table
+  cmd += 'tools/run_tests/performance/run_netperf.sh'
+  if client_host:
+    user_at_host = '%s@%s' % (_REMOTE_HOST_USERNAME, client_host)
+    cmd = 'ssh %s "cd ~/performance_workspace/grpc/ && "%s' % (user_at_host, pipes.quote(cmd))
+
+  return jobset.JobSpec(
+      cmdline=[cmd],
+      shortname='netperf',
+      timeout_seconds=60,
+      shell=True,
+      verbose_success=True)
+
+
 def archive_repo(languages):
   """Archives local version of repo including submodules."""
   cmdline=['tar', '-cf', '../grpc.tar', '../grpc/']
@@ -244,12 +263,28 @@ def start_qpsworkers(languages, worker_hosts):
 
 
 def create_scenarios(languages, workers_by_lang, remote_host=None, regex='.*',
-                     category='all', bq_result_table=None):
+                     category='all', bq_result_table=None,
+                     netperf=False, netperf_hosts=[]):
   """Create jobspecs for scenarios to run."""
   all_workers = [worker
                  for workers in workers_by_lang.values()
                  for worker in workers]
   scenarios = []
+
+  if netperf:
+    if not netperf_hosts:
+      netperf_server='localhost'
+      netperf_client=None
+    elif len(netperf_hosts) == 1:
+      netperf_server=netperf_hosts[0]
+      netperf_client=netperf_hosts[0]
+    else:
+      netperf_server=netperf_hosts[0]
+      netperf_client=netperf_hosts[1]
+    scenarios.append(create_netperf_jobspec(server_host=netperf_server,
+                                            client_host=netperf_client,
+                                            bq_result_table=bq_result_table))
+
   for language in languages:
     for scenario_json in language.scenarios():
       if re.search(args.regex, scenario_json['name']):
@@ -316,6 +351,11 @@ argp.add_argument('--category',
                   choices=['smoketest','all'],
                   default='smoketest',
                   help='Select a category of tests to run. Smoketest runs by default.')
+argp.add_argument('--netperf',
+                  default=False,
+                  action='store_const',
+                  const=True,
+                  help='Run netperf benchmark as one of the scenarios.')
 
 args = argp.parse_args()
 
@@ -360,7 +400,10 @@ try:
                                remote_host=args.remote_driver_host,
                                regex=args.regex,
                                category=args.category,
-                               bq_result_table=args.bq_result_table)
+                               bq_result_table=args.bq_result_table,
+                               netperf=args.netperf,
+                               netperf_hosts=args.remote_worker_host)
+
   if not scenarios:
     raise Exception('No scenarios to run')
 
-- 
GitLab


From 6de6971bdca299edf4632c978310a8ca08daa672 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 10 May 2016 12:09:56 -0700
Subject: [PATCH 470/525] explicitly specify request and response size for
 netperf

---
 tools/run_tests/performance/run_netperf.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/run_tests/performance/run_netperf.sh b/tools/run_tests/performance/run_netperf.sh
index 55a0c31bd2..298edbe0c3 100755
--- a/tools/run_tests/performance/run_netperf.sh
+++ b/tools/run_tests/performance/run_netperf.sh
@@ -32,7 +32,7 @@ set -ex
 
 cd $(dirname $0)/../../..
 
-netperf >netperf_latency.txt -P 0 -t TCP_RR -H "$NETPERF_SERVER_HOST" -- -o P50_LATENCY,P90_LATENCY,P99_LATENCY
+netperf >netperf_latency.txt -P 0 -t TCP_RR -H "$NETPERF_SERVER_HOST" -- -r 1,1 -o P50_LATENCY,P90_LATENCY,P99_LATENCY
 
 cat netperf_latency.txt
 
-- 
GitLab


From c810a3817014044926545f9c65e4c45ccb25ef9f Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble" <pixel@nobis-crew.org>
Date: Wed, 11 May 2016 00:15:32 +0200
Subject: [PATCH 471/525] Bumping protobuf submodule to beta-3-pre1.

---
 third_party/protobuf                                 | 2 +-
 tools/distrib/python/grpcio_tools/protoc_lib_deps.py | 2 +-
 tools/run_tests/sanity/check_submodules.sh           | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/third_party/protobuf b/third_party/protobuf
index d5fb408ddc..a1938b2aa9 160000
--- a/third_party/protobuf
+++ b/third_party/protobuf
@@ -1 +1 @@
-Subproject commit d5fb408ddc281ffcadeb08699e65bb694656d0bd
+Subproject commit a1938b2aa9ca86ce7ce50c27ff9737c1008d2a03
diff --git a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
index 9f31172170..135ac5cbb3 100644
--- a/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
+++ b/tools/distrib/python/grpcio_tools/protoc_lib_deps.py
@@ -29,4 +29,4 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 # AUTO-GENERATED BY make_grpcio_tools.py!
-CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
+CC_FILES=['google/protobuf/compiler/zip_writer.cc', 'google/protobuf/compiler/subprocess.cc', 'google/protobuf/compiler/ruby/ruby_generator.cc', 'google/protobuf/compiler/python/python_generator.cc', 'google/protobuf/compiler/plugin.pb.cc', 'google/protobuf/compiler/plugin.cc', 'google/protobuf/compiler/objectivec/objectivec_primitive_field.cc', 'google/protobuf/compiler/objectivec/objectivec_oneof.cc', 'google/protobuf/compiler/objectivec/objectivec_message_field.cc', 'google/protobuf/compiler/objectivec/objectivec_message.cc', 'google/protobuf/compiler/objectivec/objectivec_map_field.cc', 'google/protobuf/compiler/objectivec/objectivec_helpers.cc', 'google/protobuf/compiler/objectivec/objectivec_generator.cc', 'google/protobuf/compiler/objectivec/objectivec_file.cc', 'google/protobuf/compiler/objectivec/objectivec_field.cc', 'google/protobuf/compiler/objectivec/objectivec_extension.cc', 'google/protobuf/compiler/objectivec/objectivec_enum_field.cc', 'google/protobuf/compiler/objectivec/objectivec_enum.cc', 'google/protobuf/compiler/js/js_generator.cc', 'google/protobuf/compiler/javanano/javanano_primitive_field.cc', 'google/protobuf/compiler/javanano/javanano_message_field.cc', 'google/protobuf/compiler/javanano/javanano_message.cc', 'google/protobuf/compiler/javanano/javanano_map_field.cc', 'google/protobuf/compiler/javanano/javanano_helpers.cc', 'google/protobuf/compiler/javanano/javanano_generator.cc', 'google/protobuf/compiler/javanano/javanano_file.cc', 'google/protobuf/compiler/javanano/javanano_field.cc', 'google/protobuf/compiler/javanano/javanano_extension.cc', 'google/protobuf/compiler/javanano/javanano_enum_field.cc', 'google/protobuf/compiler/javanano/javanano_enum.cc', 'google/protobuf/compiler/java/java_string_field_lite.cc', 'google/protobuf/compiler/java/java_string_field.cc', 'google/protobuf/compiler/java/java_shared_code_generator.cc', 'google/protobuf/compiler/java/java_service.cc', 'google/protobuf/compiler/java/java_primitive_field_lite.cc', 'google/protobuf/compiler/java/java_primitive_field.cc', 'google/protobuf/compiler/java/java_name_resolver.cc', 'google/protobuf/compiler/java/java_message_lite.cc', 'google/protobuf/compiler/java/java_message_field_lite.cc', 'google/protobuf/compiler/java/java_message_field.cc', 'google/protobuf/compiler/java/java_message_builder_lite.cc', 'google/protobuf/compiler/java/java_message_builder.cc', 'google/protobuf/compiler/java/java_message.cc', 'google/protobuf/compiler/java/java_map_field_lite.cc', 'google/protobuf/compiler/java/java_map_field.cc', 'google/protobuf/compiler/java/java_lazy_message_field_lite.cc', 'google/protobuf/compiler/java/java_lazy_message_field.cc', 'google/protobuf/compiler/java/java_helpers.cc', 'google/protobuf/compiler/java/java_generator_factory.cc', 'google/protobuf/compiler/java/java_generator.cc', 'google/protobuf/compiler/java/java_file.cc', 'google/protobuf/compiler/java/java_field.cc', 'google/protobuf/compiler/java/java_extension_lite.cc', 'google/protobuf/compiler/java/java_extension.cc', 'google/protobuf/compiler/java/java_enum_lite.cc', 'google/protobuf/compiler/java/java_enum_field_lite.cc', 'google/protobuf/compiler/java/java_enum_field.cc', 'google/protobuf/compiler/java/java_enum.cc', 'google/protobuf/compiler/java/java_doc_comment.cc', 'google/protobuf/compiler/java/java_context.cc', 'google/protobuf/compiler/csharp/csharp_wrapper_field.cc', 'google/protobuf/compiler/csharp/csharp_source_generator_base.cc', 'google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_message_field.cc', 'google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_reflection_class.cc', 'google/protobuf/compiler/csharp/csharp_primitive_field.cc', 'google/protobuf/compiler/csharp/csharp_message_field.cc', 'google/protobuf/compiler/csharp/csharp_message.cc', 'google/protobuf/compiler/csharp/csharp_map_field.cc', 'google/protobuf/compiler/csharp/csharp_helpers.cc', 'google/protobuf/compiler/csharp/csharp_generator.cc', 'google/protobuf/compiler/csharp/csharp_field_base.cc', 'google/protobuf/compiler/csharp/csharp_enum_field.cc', 'google/protobuf/compiler/csharp/csharp_enum.cc', 'google/protobuf/compiler/csharp/csharp_doc_comment.cc', 'google/protobuf/compiler/cpp/cpp_string_field.cc', 'google/protobuf/compiler/cpp/cpp_service.cc', 'google/protobuf/compiler/cpp/cpp_primitive_field.cc', 'google/protobuf/compiler/cpp/cpp_message_field.cc', 'google/protobuf/compiler/cpp/cpp_message.cc', 'google/protobuf/compiler/cpp/cpp_map_field.cc', 'google/protobuf/compiler/cpp/cpp_helpers.cc', 'google/protobuf/compiler/cpp/cpp_generator.cc', 'google/protobuf/compiler/cpp/cpp_file.cc', 'google/protobuf/compiler/cpp/cpp_field.cc', 'google/protobuf/compiler/cpp/cpp_extension.cc', 'google/protobuf/compiler/cpp/cpp_enum_field.cc', 'google/protobuf/compiler/cpp/cpp_enum.cc', 'google/protobuf/compiler/command_line_interface.cc', 'google/protobuf/compiler/code_generator.cc', 'google/protobuf/wrappers.pb.cc', 'google/protobuf/wire_format.cc', 'google/protobuf/util/type_resolver_util.cc', 'google/protobuf/util/time_util.cc', 'google/protobuf/util/message_differencer.cc', 'google/protobuf/util/json_util.cc', 'google/protobuf/util/internal/utility.cc', 'google/protobuf/util/internal/type_info_test_helper.cc', 'google/protobuf/util/internal/type_info.cc', 'google/protobuf/util/internal/protostream_objectwriter.cc', 'google/protobuf/util/internal/protostream_objectsource.cc', 'google/protobuf/util/internal/proto_writer.cc', 'google/protobuf/util/internal/object_writer.cc', 'google/protobuf/util/internal/json_stream_parser.cc', 'google/protobuf/util/internal/json_objectwriter.cc', 'google/protobuf/util/internal/json_escaping.cc', 'google/protobuf/util/internal/field_mask_utility.cc', 'google/protobuf/util/internal/error_listener.cc', 'google/protobuf/util/internal/default_value_objectwriter.cc', 'google/protobuf/util/internal/datapiece.cc', 'google/protobuf/util/field_mask_util.cc', 'google/protobuf/util/field_comparator.cc', 'google/protobuf/unknown_field_set.cc', 'google/protobuf/type.pb.cc', 'google/protobuf/timestamp.pb.cc', 'google/protobuf/text_format.cc', 'google/protobuf/stubs/substitute.cc', 'google/protobuf/stubs/mathlimits.cc', 'google/protobuf/struct.pb.cc', 'google/protobuf/source_context.pb.cc', 'google/protobuf/service.cc', 'google/protobuf/reflection_ops.cc', 'google/protobuf/message.cc', 'google/protobuf/map_field.cc', 'google/protobuf/io/zero_copy_stream_impl.cc', 'google/protobuf/io/tokenizer.cc', 'google/protobuf/io/strtod.cc', 'google/protobuf/io/printer.cc', 'google/protobuf/io/gzip_stream.cc', 'google/protobuf/generated_message_reflection.cc', 'google/protobuf/field_mask.pb.cc', 'google/protobuf/extension_set_heavy.cc', 'google/protobuf/empty.pb.cc', 'google/protobuf/dynamic_message.cc', 'google/protobuf/duration.pb.cc', 'google/protobuf/descriptor_database.cc', 'google/protobuf/descriptor.pb.cc', 'google/protobuf/descriptor.cc', 'google/protobuf/compiler/parser.cc', 'google/protobuf/compiler/importer.cc', 'google/protobuf/api.pb.cc', 'google/protobuf/any.pb.cc', 'google/protobuf/any.cc', 'google/protobuf/wire_format_lite.cc', 'google/protobuf/stubs/time.cc', 'google/protobuf/stubs/strutil.cc', 'google/protobuf/stubs/structurally_valid.cc', 'google/protobuf/stubs/stringprintf.cc', 'google/protobuf/stubs/stringpiece.cc', 'google/protobuf/stubs/statusor.cc', 'google/protobuf/stubs/status.cc', 'google/protobuf/stubs/once.cc', 'google/protobuf/stubs/int128.cc', 'google/protobuf/stubs/common.cc', 'google/protobuf/stubs/bytestream.cc', 'google/protobuf/stubs/atomicops_internals_x86_msvc.cc', 'google/protobuf/stubs/atomicops_internals_x86_gcc.cc', 'google/protobuf/repeated_field.cc', 'google/protobuf/message_lite.cc', 'google/protobuf/io/zero_copy_stream_impl_lite.cc', 'google/protobuf/io/zero_copy_stream.cc', 'google/protobuf/io/coded_stream.cc', 'google/protobuf/generated_message_util.cc', 'google/protobuf/extension_set.cc', 'google/protobuf/arenastring.cc', 'google/protobuf/arena.cc']
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index 3349d28cf9..3b8d81b18f 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -45,7 +45,7 @@ cat << EOF | awk '{ print $1 }' | sort > $want_submodules
  05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f)
  c99458533a9b4c743ed51537e25989ea55944908 third_party/googletest (release-1.7.0)
  f8ac463766281625ad710900479130c7fcb4d63b third_party/nanopb (nanopb-0.3.4-29-gf8ac463)
- d5fb408ddc281ffcadeb08699e65bb694656d0bd third_party/protobuf (v3.0.0-beta-2)
+ a1938b2aa9ca86ce7ce50c27ff9737c1008d2a03 third_party/protobuf (v3.0.0-beta-3-pre1)
  50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8)
 EOF
 
-- 
GitLab


From 1eb8d54a1967edbc234d8abae5b1c4216c8bd867 Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Tue, 10 May 2016 16:57:14 -0700
Subject: [PATCH 472/525] Added true async qps client

---
 .../grpcio/tests/qps/benchmark_client.py      | 60 ++++++++++++++++---
 src/python/grpcio/tests/qps/client_runner.py  |  2 +-
 src/python/grpcio/tests/qps/worker_server.py  |  5 +-
 .../run_tests/performance/scenario_config.py  | 49 ++++++++-------
 4 files changed, 81 insertions(+), 35 deletions(-)

diff --git a/src/python/grpcio/tests/qps/benchmark_client.py b/src/python/grpcio/tests/qps/benchmark_client.py
index eed0b0c6da..b372ea01ad 100644
--- a/src/python/grpcio/tests/qps/benchmark_client.py
+++ b/src/python/grpcio/tests/qps/benchmark_client.py
@@ -39,6 +39,7 @@ except ImportError:
 from concurrent import futures
 
 from grpc.beta import implementations
+from grpc.framework.interfaces.face import face
 from src.proto.grpc.testing import messages_pb2
 from src.proto.grpc.testing import services_pb2
 from tests.unit import resources
@@ -141,10 +142,10 @@ class UnaryAsyncBenchmarkClient(BenchmarkClient):
     self._stub = None
 
 
-class StreamingAsyncBenchmarkClient(BenchmarkClient):
+class StreamingSyncBenchmarkClient(BenchmarkClient):
 
   def __init__(self, server, config, hist):
-    super(StreamingAsyncBenchmarkClient, self).__init__(server, config, hist)
+    super(StreamingSyncBenchmarkClient, self).__init__(server, config, hist)
     self._is_streaming = False
     self._pool = futures.ThreadPoolExecutor(max_workers=1)
     # Use a thread-safe queue to put requests on the stream
@@ -167,12 +168,12 @@ class StreamingAsyncBenchmarkClient(BenchmarkClient):
   def _request_stream(self):
     self._is_streaming = True
     if self._generic:
-      response_stream = self._stub.inline_stream_stream(
-          'grpc.testing.BenchmarkService', 'StreamingCall',
-          self._request_generator(), _TIMEOUT)
+      stream_callable = self._stub.stream_stream(
+          'grpc.testing.BenchmarkService', 'StreamingCall')
     else:
-      response_stream = self._stub.StreamingCall(self._request_generator(),
-                                                 _TIMEOUT)
+      stream_callable = self._stub.StreamingCall
+
+    response_stream = stream_callable(self._request_generator(), _TIMEOUT)
     for _ in response_stream:
       end_time = time.time()
       self._handle_response(end_time - self._send_time_queue.get_nowait())
@@ -184,3 +185,48 @@ class StreamingAsyncBenchmarkClient(BenchmarkClient):
         yield request
       except queue.Empty:
         pass
+
+
+class AsyncReceiver(face.ResponseReceiver):
+  """Receiver for async stream responses."""
+
+  def __init__(self, send_time_queue, response_handler):
+    self._send_time_queue = send_time_queue
+    self._response_handler = response_handler
+
+  def initial_metadata(self, initial_mdetadata):
+    pass
+
+  def response(self, response):
+    end_time = time.time()
+    self._response_handler(end_time - self._send_time_queue.get_nowait())
+
+  def complete(self, terminal_metadata, code, details):
+    pass
+
+
+class StreamingAsyncBenchmarkClient(BenchmarkClient):
+
+  def __init__(self, server, config, hist):
+    super(StreamingAsyncBenchmarkClient, self).__init__(server, config, hist)
+    self._send_time_queue = queue.Queue()
+    self._receiver = AsyncReceiver(self._send_time_queue, self._handle_response)
+    self._rendezvous = None
+
+  def send_request(self):
+    if self._rendezvous is not None:
+      self._send_time_queue.put(time.time())
+      self._rendezvous.consume(self._request)
+
+  def start(self):
+    if self._generic:
+      stream_callable = self._stub.stream_stream(
+          'grpc.testing.BenchmarkService', 'StreamingCall')
+    else:
+      stream_callable = self._stub.StreamingCall
+    self._rendezvous = stream_callable.event(
+        self._receiver, lambda *args: None, _TIMEOUT)
+
+  def stop(self):
+    self._rendezvous.terminate()
+    self._rendezvous = None
diff --git a/src/python/grpcio/tests/qps/client_runner.py b/src/python/grpcio/tests/qps/client_runner.py
index a36c30ccc0..1ede7d2af1 100644
--- a/src/python/grpcio/tests/qps/client_runner.py
+++ b/src/python/grpcio/tests/qps/client_runner.py
@@ -89,9 +89,9 @@ class ClosedLoopClientRunner(ClientRunner):
 
   def start(self):
     self._is_running = True
+    self._client.start()
     for _ in xrange(self._request_count):
       self._client.send_request()
-    self._client.start()
 
   def stop(self):
     self._is_running = False
diff --git a/src/python/grpcio/tests/qps/worker_server.py b/src/python/grpcio/tests/qps/worker_server.py
index 0b3acc14e7..1f9af5482c 100644
--- a/src/python/grpcio/tests/qps/worker_server.py
+++ b/src/python/grpcio/tests/qps/worker_server.py
@@ -146,8 +146,9 @@ class WorkerServer(services_pb2.BetaWorkerServiceServicer):
       if config.rpc_type == control_pb2.UNARY:
         client = benchmark_client.UnarySyncBenchmarkClient(
             server, config, qps_data)
-      else:
-        raise Exception('STREAMING SYNC client not supported')
+      elif config.rpc_type == control_pb2.STREAMING:
+        client = benchmark_client.StreamingSyncBenchmarkClient(
+            server, config, qps_data)
     elif config.client_type == control_pb2.ASYNC_CLIENT:
       if config.rpc_type == control_pb2.UNARY:
         client = benchmark_client.UnaryAsyncBenchmarkClient(
diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index d393709623..30db85cf48 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -355,39 +355,39 @@ class PythonLanguage:
     return 500
 
   def scenarios(self):
-    # TODO(jtattermusch): this scenario reports QPS 0.0
-    yield _ping_pong_scenario(
-        'python_generic_async_streaming_ping_pong', rpc_type='STREAMING',
-        client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
-        use_generic_payload=True,
-        categories=[SMOKETEST])
-
-    # TODO(jtattermusch): make this scenario work
+    # TODO(issue #6522): Empty streaming requests does not work for python
     #yield _ping_pong_scenario(
-    #    'python_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
-    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+    #    'python_generic_async_streaming_ping_pong', rpc_type='STREAMING',
+    #    client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+    #    use_generic_payload=True,
+    #    categories=[SMOKETEST])
 
-    # TODO(jtattermusch): make this scenario work
-    #yield _ping_pong_scenario(
-    #    'python_protobuf_async_unary_ping_pong', rpc_type='UNARY',
-    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER')
+    yield _ping_pong_scenario(
+        'python_protobuf_async_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='SYNC_SERVER')
+
+    yield _ping_pong_scenario(
+        'python_protobuf_async_unary_ping_pong', rpc_type='UNARY',
+        client_type='ASYNC_CLIENT', server_type='SYNC_SERVER')
 
     yield _ping_pong_scenario(
         'python_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
         client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
         categories=[SMOKETEST])
 
-    # TODO(jtattermusch): make this scenario work
+    # TODO(jtattermusch): 
+    # The qps_worker server gets thread starved with ~6400 threads, the GIL
+    # enforces that a single thread runs at a time, with no way to set thread
+    # priority.  Re-evaluate after changing DEEP and WIDE.
     #yield _ping_pong_scenario(
     #    'python_protobuf_sync_unary_qps_unconstrained', rpc_type='UNARY',
     #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
     #    use_unconstrained_client=True)
 
-    # TODO(jtattermusch): make this scenario work
-    #yield _ping_pong_scenario(
-    #    'python_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
-    #    client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
-    #    use_unconstrained_client=True)
+    yield _ping_pong_scenario(
+        'python_protobuf_async_streaming_qps_unconstrained', rpc_type='STREAMING',
+        client_type='ASYNC_CLIENT', server_type='SYNC_SERVER',
+        use_unconstrained_client=True)
 
     yield _ping_pong_scenario(
         'python_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY',
@@ -395,11 +395,10 @@ class PythonLanguage:
         server_language='c++', server_core_limit=1, async_server_threads=1,
         categories=[SMOKETEST])
 
-    # TODO(jtattermusch): make this scenario work
-    #yield _ping_pong_scenario(
-    #    'python_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
-    #    client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
-    #    server_language='c++', server_core_limit=1, async_server_threads=1)
+    yield _ping_pong_scenario(
+        'python_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING',
+        client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+        server_language='c++', server_core_limit=1, async_server_threads=1)
 
   def __str__(self):
     return 'python'
-- 
GitLab


From d6a8397bccdc50dcea08402257cdeb14a2d7898f Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 10 May 2016 16:38:23 -0700
Subject: [PATCH 473/525] add more examples and improve existing ones

---
 .../MathClientServerTests.cs                  |  2 +-
 src/csharp/Grpc.Examples/MathExamples.cs      | 38 +++++++++++++++++++
 src/csharp/Grpc.Examples/MathServiceImpl.cs   | 29 +++++++-------
 3 files changed, 53 insertions(+), 16 deletions(-)

diff --git a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
index 875202b950..ee11105efe 100644
--- a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
+++ b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
@@ -92,7 +92,7 @@ namespace Math.Tests
         public void DivByZero()
         {
             var ex = Assert.Throws<RpcException>(() => client.Div(new DivArgs { Dividend = 0, Divisor = 0 }));
-            Assert.AreEqual(StatusCode.Unknown, ex.Status.StatusCode);
+            Assert.AreEqual(StatusCode.InvalidArgument, ex.Status.StatusCode);
         }
 
         [Test]
diff --git a/src/csharp/Grpc.Examples/MathExamples.cs b/src/csharp/Grpc.Examples/MathExamples.cs
index 6075420974..d260830b94 100644
--- a/src/csharp/Grpc.Examples/MathExamples.cs
+++ b/src/csharp/Grpc.Examples/MathExamples.cs
@@ -32,6 +32,7 @@
 using System;
 using System.Collections.Generic;
 using System.Threading.Tasks;
+using Grpc.Core;
 using Grpc.Core.Utils;
 
 namespace Math
@@ -109,5 +110,42 @@ namespace Math
             DivReply result = await client.DivAsync(new DivArgs { Dividend = sum.Num_, Divisor = numbers.Count });
             Console.WriteLine("Avg Result: " + result);
         }
+
+        /// <summary>
+        /// Shows how to handle a call ending with non-OK status.
+        /// </summary>
+        public static async Task HandleErrorExample(Math.MathClient client)
+        {
+            try
+            {
+                 DivReply result = await client.DivAsync(new DivArgs { Dividend = 5, Divisor = 0 });
+            }
+            catch (RpcException ex)
+            {
+                Console.WriteLine(string.Format("RPC ended with status {0}", ex.Status));
+            }
+        }
+
+        /// <summary>
+        /// Shows how to send request headers and how to access response headers
+        /// and response trailers.
+        /// </summary>
+        public static async Task MetadataExample(Math.MathClient client)
+        {
+            var requestHeaders = new Metadata
+            {
+                { "custom-header", "custom-value" }
+            };
+
+            var call = client.DivAsync(new DivArgs { Dividend = 5, Divisor = 0 }, requestHeaders);
+
+            // Get response headers
+            Metadata responseHeaders = await call.ResponseHeadersAsync;
+
+            var result = await call;
+
+            // Get response trailers after the call has finished.
+            Metadata responseTrailers = call.GetTrailers();
+        }
     }
 }
diff --git a/src/csharp/Grpc.Examples/MathServiceImpl.cs b/src/csharp/Grpc.Examples/MathServiceImpl.cs
index 79c56e57a8..a28020f62f 100644
--- a/src/csharp/Grpc.Examples/MathServiceImpl.cs
+++ b/src/csharp/Grpc.Examples/MathServiceImpl.cs
@@ -52,23 +52,15 @@ namespace Math
 
         public override async Task Fib(FibArgs request, IServerStreamWriter<Num> responseStream, ServerCallContext context)
         {
-            if (request.Limit <= 0)
-            {
-                // keep streaming the sequence until cancelled.
-                IEnumerator<Num> fibEnumerator = FibInternal(long.MaxValue).GetEnumerator();
-                while (!context.CancellationToken.IsCancellationRequested && fibEnumerator.MoveNext())
-                {
-                    await responseStream.WriteAsync(fibEnumerator.Current);
-                    await Task.Delay(100);
-                }
-            }
+            var limit = request.Limit > 0 ? request.Limit : long.MaxValue;
+            var fibEnumerator = FibInternal(limit).GetEnumerator();
 
-            if (request.Limit > 0)
+            // Keep streaming the sequence until the call is cancelled.
+            // Use CancellationToken from ServerCallContext to detect the cancellation.
+            while (!context.CancellationToken.IsCancellationRequested && fibEnumerator.MoveNext())
             {
-                foreach (var num in FibInternal(request.Limit))
-                {
-                    await responseStream.WriteAsync(num);
-                }
+                await responseStream.WriteAsync(fibEnumerator.Current);
+                await Task.Delay(100);
             }
         }
 
@@ -89,6 +81,13 @@ namespace Math
 
         static DivReply DivInternal(DivArgs args)
         {
+            if (args.Divisor == 0)
+            {
+                // One can finish the RPC with non-ok status by throwing RpcException instance.
+                // Alternatively, resulting status can be set using ServerCallContext.Status
+                throw new RpcException(new Status(StatusCode.InvalidArgument, "Division by zero"));
+            }
+
             long quotient = args.Dividend / args.Divisor;
             long remainder = args.Dividend % args.Divisor;
             return new DivReply { Quotient = quotient, Remainder = remainder };
-- 
GitLab


From 87f9e660f1e5ee85768e809aeee070e54f4e0b4c Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 10 May 2016 17:55:29 -0700
Subject: [PATCH 474/525] Fix encoding and piping problems with Node plugin
 wrapper

---
 src/node/tools/bin/protoc.js        | 5 +++--
 src/node/tools/bin/protoc_plugin.js | 8 +++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/node/tools/bin/protoc.js b/src/node/tools/bin/protoc.js
index 4d50c94b0f..3bd1b84ffe 100755
--- a/src/node/tools/bin/protoc.js
+++ b/src/node/tools/bin/protoc.js
@@ -51,6 +51,7 @@ execFile(protoc, process.argv.slice(2), function(error, stdout, stderr) {
   if (error) {
     throw error;
   }
-  console.log(stdout);
-  console.log(stderr);
 });
+
+child_process.stdout.pipe(process.stdout);
+child_process.stderr.pipe(process.stderr);
diff --git a/src/node/tools/bin/protoc_plugin.js b/src/node/tools/bin/protoc_plugin.js
index 281ec0d85e..857882e1c3 100755
--- a/src/node/tools/bin/protoc_plugin.js
+++ b/src/node/tools/bin/protoc_plugin.js
@@ -47,10 +47,12 @@ var exe_ext = process.platform === 'win32' ? '.exe' : '';
 
 var plugin = path.resolve(__dirname, 'grpc_node_plugin' + exe_ext);
 
-execFile(plugin, process.argv.slice(2), function(error, stdout, stderr) {
+var child_process = execFile(plugin, process.argv.slice(2), {encoding: 'buffer'}, function(error, stdout, stderr) {
   if (error) {
     throw error;
   }
-  console.log(stdout);
-  console.log(stderr);
 });
+
+process.stdin.pipe(child_process.stdin);
+child_process.stdout.pipe(process.stdout);
+child_process.stderr.pipe(process.stderr);
-- 
GitLab


From 8291274e0e3f1a3d79aea3290cdbd7070eba8896 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Tue, 10 May 2016 17:56:29 -0700
Subject: [PATCH 475/525] Fixed variable

---
 src/node/tools/bin/protoc.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/node/tools/bin/protoc.js b/src/node/tools/bin/protoc.js
index 3bd1b84ffe..53fc5dc428 100755
--- a/src/node/tools/bin/protoc.js
+++ b/src/node/tools/bin/protoc.js
@@ -47,7 +47,7 @@ var exe_ext = process.platform === 'win32' ? '.exe' : '';
 
 var protoc = path.resolve(__dirname, 'protoc' + exe_ext);
 
-execFile(protoc, process.argv.slice(2), function(error, stdout, stderr) {
+var child_process = execFile(protoc, process.argv.slice(2), function(error, stdout, stderr) {
   if (error) {
     throw error;
   }
-- 
GitLab


From f7b01874fde5b276500f69dcd83ca713cde2e10b Mon Sep 17 00:00:00 2001
From: thinkerou <thinkerou@gmail.com>
Date: Wed, 11 May 2016 10:23:26 +0800
Subject: [PATCH 476/525] add ownend and delete dtor

---
 src/php/ext/grpc/call.c                | 1 -
 src/php/ext/grpc/call_credentials.c    | 1 -
 src/php/ext/grpc/channel.c             | 1 -
 src/php/ext/grpc/channel_credentials.c | 1 -
 src/php/ext/grpc/server.c              | 1 -
 src/php/ext/grpc/server_credentials.c  | 1 -
 src/php/ext/grpc/timeval.c             | 6 +-----
 7 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index b19e8f017f..a2c1c08169 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -65,7 +65,6 @@ void free_wrapped_grpc_call(void *object TSRMLS_DC) {
   if (call->owned && call->wrapped != NULL) {
     grpc_call_destroy(call->wrapped);
   }
-  zend_object_std_dtor(&call->std TSRMLS_CC);
   efree(call);
 }
 
diff --git a/src/php/ext/grpc/call_credentials.c b/src/php/ext/grpc/call_credentials.c
index ce9cbdf226..285c4e7c85 100644
--- a/src/php/ext/grpc/call_credentials.c
+++ b/src/php/ext/grpc/call_credentials.c
@@ -60,7 +60,6 @@ void free_wrapped_grpc_call_credentials(void *object TSRMLS_DC) {
   if (creds->wrapped != NULL) {
     grpc_call_credentials_release(creds->wrapped);
   }
-  zend_object_std_dtor(&creds->std TSRMLS_CC);
   efree(creds);
 }
 
diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c
index 665430b99c..eba2c81424 100644
--- a/src/php/ext/grpc/channel.c
+++ b/src/php/ext/grpc/channel.c
@@ -64,7 +64,6 @@ void free_wrapped_grpc_channel(void *object TSRMLS_DC) {
   if (channel->wrapped != NULL) {
     grpc_channel_destroy(channel->wrapped);
   }
-  zend_object_std_dtor(&channel->std TSRMLS_CC);
   efree(channel);
 }
 
diff --git a/src/php/ext/grpc/channel_credentials.c b/src/php/ext/grpc/channel_credentials.c
index d5a6531b54..ae9a9897fc 100644
--- a/src/php/ext/grpc/channel_credentials.c
+++ b/src/php/ext/grpc/channel_credentials.c
@@ -59,7 +59,6 @@ void free_wrapped_grpc_channel_credentials(void *object TSRMLS_DC) {
   if (creds->wrapped != NULL) {
     grpc_channel_credentials_release(creds->wrapped);
   }
-  zend_object_std_dtor(&creds->std TSRMLS_CC);
   efree(creds);
 }
 
diff --git a/src/php/ext/grpc/server.c b/src/php/ext/grpc/server.c
index 0d12bbe5c2..ca129e76ca 100644
--- a/src/php/ext/grpc/server.c
+++ b/src/php/ext/grpc/server.c
@@ -69,7 +69,6 @@ void free_wrapped_grpc_server(void *object TSRMLS_DC) {
                                 gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
     grpc_server_destroy(server->wrapped);
   }
-  zend_object_std_dtor(&server->std TSRMLS_CC);
   efree(server);
 }
 
diff --git a/src/php/ext/grpc/server_credentials.c b/src/php/ext/grpc/server_credentials.c
index 25a2ca577d..f3951b31fe 100644
--- a/src/php/ext/grpc/server_credentials.c
+++ b/src/php/ext/grpc/server_credentials.c
@@ -58,7 +58,6 @@ void free_wrapped_grpc_server_credentials(void *object TSRMLS_DC) {
   if (creds->wrapped != NULL) {
     grpc_server_credentials_release(creds->wrapped);
   }
-  zend_object_std_dtor(&creds->std TSRMLS_CC);
   efree(creds);
 }
 
diff --git a/src/php/ext/grpc/timeval.c b/src/php/ext/grpc/timeval.c
index 102361d404..4fd069e19a 100644
--- a/src/php/ext/grpc/timeval.c
+++ b/src/php/ext/grpc/timeval.c
@@ -53,11 +53,7 @@
 zend_class_entry *grpc_ce_timeval;
 
 /* Frees and destroys an instance of wrapped_grpc_call */
-void free_wrapped_grpc_timeval(void *object TSRMLS_DC) {
-    wrapped_grpc_timeval *timeval = (wrapped_grpc_timeval *)object;
-    zend_object_std_dtor(&timeval->std TSRMLS_CC);
-    efree(object);
-}
+void free_wrapped_grpc_timeval(void *object TSRMLS_DC) { efree(object); }
 
 /* Initializes an instance of wrapped_grpc_timeval to be associated with an
  * object of a class specified by class_type */
-- 
GitLab


From 3b3069d062d8796292197977d69d0c1730227d1f Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 11 May 2016 08:43:01 -0700
Subject: [PATCH 477/525] Add some missing directories to package.json

---
 package.json                    | 2 ++
 templates/package.json.template | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/package.json b/package.json
index ae5fb0c657..b256fadd61 100644
--- a/package.json
+++ b/package.json
@@ -67,6 +67,8 @@
     "src/node/ext",
     "include/grpc",
     "src/core",
+    "src/boringssl",
+    "src/zlib",
     "third_party/nanopb",
     "third_party/zlib",
     "third_party/boringssl",
diff --git a/templates/package.json.template b/templates/package.json.template
index 11718b1ccb..9d19ca0629 100644
--- a/templates/package.json.template
+++ b/templates/package.json.template
@@ -69,6 +69,8 @@
       "src/node/ext",
       "include/grpc",
       "src/core",
+      "src/boringssl",
+      "src/zlib",
       "third_party/nanopb",
       "third_party/zlib",
       "third_party/boringssl",
-- 
GitLab


From 3b59b0f417571871acbb30a0cc817451d11eee17 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Tue, 10 May 2016 14:44:05 -0700
Subject: [PATCH 478/525] integrate Go qps worker

---
 .../performance/build_performance.sh          |  5 +-
 .../performance/build_performance_go.sh       | 44 +++++++++++
 tools/run_tests/performance/kill_workers.sh   |  3 +
 .../performance/remote_host_prepare.sh        |  2 +-
 tools/run_tests/performance/run_worker_go.sh  | 35 +++++++++
 .../run_tests/performance/scenario_config.py  | 76 +++++++++++++++++++
 6 files changed, 162 insertions(+), 3 deletions(-)
 create mode 100755 tools/run_tests/performance/build_performance_go.sh
 create mode 100755 tools/run_tests/performance/run_worker_go.sh

diff --git a/tools/run_tests/performance/build_performance.sh b/tools/run_tests/performance/build_performance.sh
index 8cfe1c48e9..352c679757 100755
--- a/tools/run_tests/performance/build_performance.sh
+++ b/tools/run_tests/performance/build_performance.sh
@@ -33,8 +33,6 @@ set -ex
 
 cd $(dirname $0)/../../..
 
-#TODO(jtattermusch): add support for more languages
-
 CONFIG=${CONFIG:-opt}
 
 # build C++ qps worker & driver always - we need at least the driver to
@@ -53,6 +51,9 @@ do
     (cd ../grpc-java/ &&
       ./gradlew -PskipCodegen=true :grpc-benchmarks:installDist)
     ;;
+  "go")
+    tools/run_tests/performance/build_performance_go.sh
+    ;;
   *)
     tools/run_tests/run_tests.py -l $language -c $CONFIG --build_only -j 8
     ;;
diff --git a/tools/run_tests/performance/build_performance_go.sh b/tools/run_tests/performance/build_performance_go.sh
new file mode 100755
index 0000000000..3719cc5986
--- /dev/null
+++ b/tools/run_tests/performance/build_performance_go.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+cd $(dirname $0)/../../..
+
+export GOPATH=$(pwd)/../gopath
+
+# Get grpc-go and the dependencies but get rid of the upstream/master version
+go get google.golang.org/grpc
+rm -rf "${GOPATH}/src/google.golang.org/grpc"
+
+# Get the revision of grpc-go we want to test
+git clone --recursive ../grpc-go ${GOPATH}/src/google.golang.org/grpc
+
+(cd ${GOPATH}/src/google.golang.org/grpc/benchmark/worker && go install)
diff --git a/tools/run_tests/performance/kill_workers.sh b/tools/run_tests/performance/kill_workers.sh
index 7a8763424d..f306f0c991 100755
--- a/tools/run_tests/performance/kill_workers.sh
+++ b/tools/run_tests/performance/kill_workers.sh
@@ -52,3 +52,6 @@ ps -C python -o pid=,cmd= | grep 'qps_worker.py' | awk '{print $1}' | xargs kill
 
 # Java
 jps | grep LoadWorker | awk '{print $1}' | xargs kill -9
+
+# Go
+killall -9 worker || true
diff --git a/tools/run_tests/performance/remote_host_prepare.sh b/tools/run_tests/performance/remote_host_prepare.sh
index d7f539a74e..f81102bbdc 100755
--- a/tools/run_tests/performance/remote_host_prepare.sh
+++ b/tools/run_tests/performance/remote_host_prepare.sh
@@ -39,7 +39,7 @@ ssh "${USER_AT_HOST}" "rm -rf ~/performance_workspace && mkdir -p ~/performance_
 # mess with the results, be rough and reboot the slave here
 # and wait for it to come back online.
 # could also kill jenkins.
-ssh "${USER_AT_HOST}" "killall -9 qps_worker mono node ruby || true"
+ssh "${USER_AT_HOST}" "killall -9 qps_worker mono node ruby worker || true"
 
 # push the current sources to the slave and unpack it.
 scp ../grpc.tar "${USER_AT_HOST}:~/performance_workspace"
diff --git a/tools/run_tests/performance/run_worker_go.sh b/tools/run_tests/performance/run_worker_go.sh
new file mode 100755
index 0000000000..f7f2ece137
--- /dev/null
+++ b/tools/run_tests/performance/run_worker_go.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+cd $(dirname $0)/../../..
+
+../gopath/bin/worker $@
diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index a13e8b739f..1ec70f1ab6 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -521,6 +521,81 @@ class JavaLanguage:
     return 'java'
 
 
+class GoLanguage:
+
+  def __init__(self):
+    pass
+    self.safename = str(self)
+
+  def worker_cmdline(self):
+    return ['tools/run_tests/performance/run_worker_go.sh']
+
+  def worker_port_offset(self):
+    return 600
+
+  def scenarios(self):
+    for secure in [True, False]:
+      secstr = 'secure' if secure else 'insecure'
+      smoketest_categories = [SMOKETEST] if secure else None
+
+      yield _ping_pong_scenario(
+          'go_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_generic_payload=True, async_server_threads=1,
+          secure=secure,
+          categories=smoketest_categories)
+
+      yield _ping_pong_scenario(
+          'go_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          async_server_threads=1,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'go_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          async_server_threads=1,
+          secure=secure,
+          categories=smoketest_categories)
+
+      yield _ping_pong_scenario(
+          'go_protobuf_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
+          async_server_threads=1,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'go_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          use_unconstrained_client=True,
+          secure=secure,
+          categories=smoketest_categories)
+
+      yield _ping_pong_scenario(
+          'go_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          use_unconstrained_client=True,
+          secure=secure,)
+
+      yield _ping_pong_scenario(
+          'go_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_unconstrained_client=True, use_generic_payload=True,
+          secure=secure)
+
+      yield _ping_pong_scenario(
+          'go_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
+          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          use_unconstrained_client=True, use_generic_payload=True,
+          async_server_threads=1,
+          secure=secure)
+
+      # TODO(jtattermusch): add scenarios go vs C++ 
+
+  def __str__(self):
+    return 'go'
+
+
 LANGUAGES = {
     'c++' : CXXLanguage(),
     'csharp' : CSharpLanguage(),
@@ -528,4 +603,5 @@ LANGUAGES = {
     'ruby' : RubyLanguage(),
     'java' : JavaLanguage(),
     'python' : PythonLanguage(),
+    'go' : GoLanguage(),
 }
-- 
GitLab


From 4bd3a7cecb78098516338a43552f72fc9b56573d Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 11 May 2016 09:29:08 -0700
Subject: [PATCH 479/525] change go scenarios to use sync api

---
 .../run_tests/performance/scenario_config.py  | 39 +++++++------------
 1 file changed, 15 insertions(+), 24 deletions(-)

diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py
index 1ec70f1ab6..4fe66dff41 100644
--- a/tools/run_tests/performance/scenario_config.py
+++ b/tools/run_tests/performance/scenario_config.py
@@ -538,56 +538,47 @@ class GoLanguage:
       secstr = 'secure' if secure else 'insecure'
       smoketest_categories = [SMOKETEST] if secure else None
 
+      # ASYNC_GENERIC_SERVER for Go actually uses a sync streaming server,
+      # but that's mostly because of lack of better name of the enum value. 
       yield _ping_pong_scenario(
-          'go_generic_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
-          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          'go_generic_sync_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='SYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
           use_generic_payload=True, async_server_threads=1,
           secure=secure,
           categories=smoketest_categories)
 
       yield _ping_pong_scenario(
-          'go_protobuf_async_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
-          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          'go_protobuf_sync_streaming_ping_pong_%s' % secstr, rpc_type='STREAMING',
+          client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
           async_server_threads=1,
           secure=secure)
 
       yield _ping_pong_scenario(
-          'go_protobuf_async_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
-          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          'go_protobuf_sync_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
           async_server_threads=1,
           secure=secure,
           categories=smoketest_categories)
 
       yield _ping_pong_scenario(
-          'go_protobuf_unary_ping_pong_%s' % secstr, rpc_type='UNARY',
+          'go_protobuf_sync_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
           client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
-          async_server_threads=1,
-          secure=secure)
-
-      yield _ping_pong_scenario(
-          'go_protobuf_async_unary_qps_unconstrained_%s' % secstr, rpc_type='UNARY',
-          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
           use_unconstrained_client=True,
           secure=secure,
           categories=smoketest_categories)
 
       yield _ping_pong_scenario(
-          'go_protobuf_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
-          client_type='ASYNC_CLIENT', server_type='ASYNC_SERVER',
+          'go_protobuf_sync_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='SYNC_CLIENT', server_type='SYNC_SERVER',
           use_unconstrained_client=True,
-          secure=secure,)
-
-      yield _ping_pong_scenario(
-          'go_generic_async_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
-          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
-          use_unconstrained_client=True, use_generic_payload=True,
           secure=secure)
 
+      # ASYNC_GENERIC_SERVER for Go actually uses a sync streaming server,
+      # but that's mostly because of lack of better name of the enum value.
       yield _ping_pong_scenario(
-          'go_generic_async_streaming_qps_one_server_core_%s' % secstr, rpc_type='STREAMING',
-          client_type='ASYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
+          'go_generic_sync_streaming_qps_unconstrained_%s' % secstr, rpc_type='STREAMING',
+          client_type='SYNC_CLIENT', server_type='ASYNC_GENERIC_SERVER',
           use_unconstrained_client=True, use_generic_payload=True,
-          async_server_threads=1,
           secure=secure)
 
       # TODO(jtattermusch): add scenarios go vs C++ 
-- 
GitLab


From 9d8612054749b9f5cd5c2e001c8a288870b27c11 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 11 May 2016 10:12:57 -0700
Subject: [PATCH 480/525] clang-format

---
 .../grpc++/impl/codegen/method_handler_impl.h | 14 ++++----
 src/core/lib/iomgr/ev_poll_posix.c            |  9 +++--
 .../set_initial_connect_string_test.c         | 36 +++++++++++++++----
 test/cpp/qps/client_async.cc                  | 12 ++++---
 test/cpp/qps/server_async.cc                  |  6 ++--
 5 files changed, 56 insertions(+), 21 deletions(-)

diff --git a/include/grpc++/impl/codegen/method_handler_impl.h b/include/grpc++/impl/codegen/method_handler_impl.h
index ad74efabc4..21ac6c4fb5 100644
--- a/include/grpc++/impl/codegen/method_handler_impl.h
+++ b/include/grpc++/impl/codegen/method_handler_impl.h
@@ -44,10 +44,10 @@ namespace grpc {
 template <class ServiceType, class RequestType, class ResponseType>
 class RpcMethodHandler : public MethodHandler {
  public:
-  RpcMethodHandler(
-      std::function<Status(ServiceType*, ServerContext*, const RequestType*,
-                           ResponseType*)> func,
-      ServiceType* service)
+  RpcMethodHandler(std::function<Status(ServiceType*, ServerContext*,
+                                        const RequestType*, ResponseType*)>
+                       func,
+                   ServiceType* service)
       : func_(func), service_(service) {}
 
   void RunHandler(const HandlerParameter& param) GRPC_FINAL {
@@ -88,7 +88,8 @@ class ClientStreamingHandler : public MethodHandler {
  public:
   ClientStreamingHandler(
       std::function<Status(ServiceType*, ServerContext*,
-                           ServerReader<RequestType>*, ResponseType*)> func,
+                           ServerReader<RequestType>*, ResponseType*)>
+          func,
       ServiceType* service)
       : func_(func), service_(service) {}
 
@@ -124,7 +125,8 @@ class ServerStreamingHandler : public MethodHandler {
  public:
   ServerStreamingHandler(
       std::function<Status(ServiceType*, ServerContext*, const RequestType*,
-                           ServerWriter<ResponseType>*)> func,
+                           ServerWriter<ResponseType>*)>
+          func,
       ServiceType* service)
       : func_(func), service_(service) {}
 
diff --git a/src/core/lib/iomgr/ev_poll_posix.c b/src/core/lib/iomgr/ev_poll_posix.c
index 69489f4b53..0240ea0a01 100644
--- a/src/core/lib/iomgr/ev_poll_posix.c
+++ b/src/core/lib/iomgr/ev_poll_posix.c
@@ -924,10 +924,10 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
         for (i = 2; i < pfd_count; i++) {
           if (watchers[i].fd == NULL) {
             fd_end_poll(exec_ctx, &watchers[i], 0, 0);
-            continue;
+          } else {
+            fd_end_poll(exec_ctx, &watchers[i], pfds[i].revents & POLLIN_CHECK,
+                        pfds[i].revents & POLLOUT_CHECK);
           }
-          fd_end_poll(exec_ctx, &watchers[i], pfds[i].revents & POLLIN_CHECK,
-                      pfds[i].revents & POLLOUT_CHECK);
         }
       }
 
@@ -963,6 +963,9 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
       }
       keep_polling = 1;
     }
+    if (keep_polling) {
+      now = gpr_now(now.clock_type);
+    }
   }
   if (added_worker) {
     remove_worker(pollset, &worker);
diff --git a/test/core/client_config/set_initial_connect_string_test.c b/test/core/client_config/set_initial_connect_string_test.c
index 83058d9b2c..5b7f222f7a 100644
--- a/test/core/client_config/set_initial_connect_string_test.c
+++ b/test/core/client_config/set_initial_connect_string_test.c
@@ -37,6 +37,7 @@
 #include <grpc/support/host_port.h>
 #include <grpc/support/log.h>
 #include <grpc/support/slice.h>
+#include <grpc/support/thd.h>
 
 #include "src/core/ext/client_config/initial_connect_string.h"
 #include "src/core/lib/iomgr/sockaddr.h"
@@ -139,7 +140,7 @@ static void start_rpc(int use_creds, int target_port) {
   state.op.reserved = NULL;
   GPR_ASSERT(GRPC_CALL_OK == grpc_call_start_batch(state.call, &state.op,
                                                    (size_t)(1), NULL, NULL));
-  grpc_completion_queue_next(state.cq, n_sec_deadline(1), NULL);
+  grpc_completion_queue_next(state.cq, n_sec_deadline(5), NULL);
 }
 
 static void cleanup_rpc(void) {
@@ -157,12 +158,29 @@ static void cleanup_rpc(void) {
   gpr_free(state.target);
 }
 
-static void poll_server_until_read_done(test_tcp_server *server) {
-  gpr_timespec deadline = n_sec_deadline(5);
+typedef struct {
+  test_tcp_server *server;
+  gpr_event *signal_when_done;
+} poll_args;
+
+static void actually_poll_server(void *arg) {
+  poll_args *pa = arg;
+  gpr_timespec deadline = n_sec_deadline(10);
   while (state.done == 0 &&
          gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), deadline) < 0) {
-    test_tcp_server_poll(server, 1);
+    test_tcp_server_poll(pa->server, 1);
   }
+  gpr_event_set(pa->signal_when_done, (void *)1);
+  gpr_free(pa);
+}
+
+static void poll_server_until_read_done(test_tcp_server *server,
+                                        gpr_event *signal_when_done) {
+  gpr_thd_id id;
+  poll_args *pa = gpr_malloc(sizeof(*pa));
+  pa->server = server;
+  pa->signal_when_done = signal_when_done;
+  gpr_thd_new(&id, actually_poll_server, pa, NULL);
 }
 
 static void match_initial_magic_string(gpr_slice_buffer *buffer) {
@@ -180,20 +198,26 @@ static void match_initial_magic_string(gpr_slice_buffer *buffer) {
 }
 
 static void test_initial_string(test_tcp_server *server, int secure) {
+  gpr_event ev;
+  gpr_event_init(&ev);
   grpc_test_set_initial_connect_string_function(set_magic_initial_string);
+  poll_server_until_read_done(server, &ev);
   start_rpc(secure, server_port);
-  poll_server_until_read_done(server);
+  gpr_event_wait(&ev, gpr_inf_future(GPR_CLOCK_REALTIME));
   match_initial_magic_string(&state.incoming_buffer);
   cleanup_rpc();
 }
 
 static void test_initial_string_with_redirect(test_tcp_server *server,
                                               int secure) {
+  gpr_event ev;
+  gpr_event_init(&ev);
   int another_port = grpc_pick_unused_port_or_die();
   grpc_test_set_initial_connect_string_function(
       reset_addr_and_set_magic_string);
+  poll_server_until_read_done(server, &ev);
   start_rpc(secure, another_port);
-  poll_server_until_read_done(server);
+  gpr_event_wait(&ev, gpr_inf_future(GPR_CLOCK_REALTIME));
   match_initial_magic_string(&state.incoming_buffer);
   cleanup_rpc();
 }
diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
index e72cef2811..c32160a7d4 100644
--- a/test/cpp/qps/client_async.cc
+++ b/test/cpp/qps/client_async.cc
@@ -84,7 +84,8 @@ class ClientRpcContextUnaryImpl : public ClientRpcContext {
       std::function<
           std::unique_ptr<grpc::ClientAsyncResponseReader<ResponseType>>(
               BenchmarkService::Stub*, grpc::ClientContext*, const RequestType&,
-              CompletionQueue*)> start_req,
+              CompletionQueue*)>
+          start_req,
       std::function<void(grpc::Status, ResponseType*)> on_done)
       : context_(),
         stub_(stub),
@@ -165,7 +166,8 @@ class AsyncClient : public ClientImpl<StubType, RequestType> {
   AsyncClient(const ClientConfig& config,
               std::function<ClientRpcContext*(
                   StubType*, std::function<gpr_timespec()> next_issue,
-                  const RequestType&)> setup_ctx,
+                  const RequestType&)>
+                  setup_ctx,
               std::function<std::unique_ptr<StubType>(std::shared_ptr<Channel>)>
                   create_stub)
       : ClientImpl<StubType, RequestType>(config, create_stub),
@@ -278,7 +280,8 @@ class ClientRpcContextStreamingImpl : public ClientRpcContext {
       std::function<std::unique_ptr<
           grpc::ClientAsyncReaderWriter<RequestType, ResponseType>>(
           BenchmarkService::Stub*, grpc::ClientContext*, CompletionQueue*,
-          void*)> start_req,
+          void*)>
+          start_req,
       std::function<void(grpc::Status, ResponseType*)> on_done)
       : context_(),
         stub_(stub),
@@ -405,7 +408,8 @@ class ClientRpcContextGenericStreamingImpl : public ClientRpcContext {
       std::function<gpr_timespec()> next_issue,
       std::function<std::unique_ptr<grpc::GenericClientAsyncReaderWriter>(
           grpc::GenericStub*, grpc::ClientContext*,
-          const grpc::string& method_name, CompletionQueue*, void*)> start_req,
+          const grpc::string& method_name, CompletionQueue*, void*)>
+          start_req,
       std::function<void(grpc::Status, ByteBuffer*)> on_done)
       : context_(),
         stub_(stub),
diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc
index a68f1ae7b6..1234542687 100644
--- a/test/cpp/qps/server_async.cc
+++ b/test/cpp/qps/server_async.cc
@@ -73,7 +73,8 @@ class AsyncQpsServerTest : public Server {
                          CompletionQueue *, ServerCompletionQueue *, void *)>
           request_streaming_function,
       std::function<grpc::Status(const PayloadConfig &, const RequestType *,
-                                 ResponseType *)> process_rpc)
+                                 ResponseType *)>
+          process_rpc)
       : Server(config) {
     char *server_address = NULL;
 
@@ -190,7 +191,8 @@ class AsyncQpsServerTest : public Server {
     ServerRpcContextUnaryImpl(
         std::function<void(ServerContextType *, RequestType *,
                            grpc::ServerAsyncResponseWriter<ResponseType> *,
-                           void *)> request_method,
+                           void *)>
+            request_method,
         std::function<grpc::Status(const RequestType *, ResponseType *)>
             invoke_method)
         : srv_ctx_(new ServerContextType),
-- 
GitLab


From b85e9d43f04f58ccd62e7b704d1ba08fe5df77ae Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 11 May 2016 10:21:45 -0700
Subject: [PATCH 481/525] fix formatting

---
 include/grpc++/impl/codegen/method_handler_impl.h | 14 ++++++++------
 test/cpp/qps/client_async.cc                      | 12 ++++++++----
 test/cpp/qps/server_async.cc                      |  6 ++++--
 3 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/include/grpc++/impl/codegen/method_handler_impl.h b/include/grpc++/impl/codegen/method_handler_impl.h
index ad74efabc4..21ac6c4fb5 100644
--- a/include/grpc++/impl/codegen/method_handler_impl.h
+++ b/include/grpc++/impl/codegen/method_handler_impl.h
@@ -44,10 +44,10 @@ namespace grpc {
 template <class ServiceType, class RequestType, class ResponseType>
 class RpcMethodHandler : public MethodHandler {
  public:
-  RpcMethodHandler(
-      std::function<Status(ServiceType*, ServerContext*, const RequestType*,
-                           ResponseType*)> func,
-      ServiceType* service)
+  RpcMethodHandler(std::function<Status(ServiceType*, ServerContext*,
+                                        const RequestType*, ResponseType*)>
+                       func,
+                   ServiceType* service)
       : func_(func), service_(service) {}
 
   void RunHandler(const HandlerParameter& param) GRPC_FINAL {
@@ -88,7 +88,8 @@ class ClientStreamingHandler : public MethodHandler {
  public:
   ClientStreamingHandler(
       std::function<Status(ServiceType*, ServerContext*,
-                           ServerReader<RequestType>*, ResponseType*)> func,
+                           ServerReader<RequestType>*, ResponseType*)>
+          func,
       ServiceType* service)
       : func_(func), service_(service) {}
 
@@ -124,7 +125,8 @@ class ServerStreamingHandler : public MethodHandler {
  public:
   ServerStreamingHandler(
       std::function<Status(ServiceType*, ServerContext*, const RequestType*,
-                           ServerWriter<ResponseType>*)> func,
+                           ServerWriter<ResponseType>*)>
+          func,
       ServiceType* service)
       : func_(func), service_(service) {}
 
diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
index e72cef2811..c32160a7d4 100644
--- a/test/cpp/qps/client_async.cc
+++ b/test/cpp/qps/client_async.cc
@@ -84,7 +84,8 @@ class ClientRpcContextUnaryImpl : public ClientRpcContext {
       std::function<
           std::unique_ptr<grpc::ClientAsyncResponseReader<ResponseType>>(
               BenchmarkService::Stub*, grpc::ClientContext*, const RequestType&,
-              CompletionQueue*)> start_req,
+              CompletionQueue*)>
+          start_req,
       std::function<void(grpc::Status, ResponseType*)> on_done)
       : context_(),
         stub_(stub),
@@ -165,7 +166,8 @@ class AsyncClient : public ClientImpl<StubType, RequestType> {
   AsyncClient(const ClientConfig& config,
               std::function<ClientRpcContext*(
                   StubType*, std::function<gpr_timespec()> next_issue,
-                  const RequestType&)> setup_ctx,
+                  const RequestType&)>
+                  setup_ctx,
               std::function<std::unique_ptr<StubType>(std::shared_ptr<Channel>)>
                   create_stub)
       : ClientImpl<StubType, RequestType>(config, create_stub),
@@ -278,7 +280,8 @@ class ClientRpcContextStreamingImpl : public ClientRpcContext {
       std::function<std::unique_ptr<
           grpc::ClientAsyncReaderWriter<RequestType, ResponseType>>(
           BenchmarkService::Stub*, grpc::ClientContext*, CompletionQueue*,
-          void*)> start_req,
+          void*)>
+          start_req,
       std::function<void(grpc::Status, ResponseType*)> on_done)
       : context_(),
         stub_(stub),
@@ -405,7 +408,8 @@ class ClientRpcContextGenericStreamingImpl : public ClientRpcContext {
       std::function<gpr_timespec()> next_issue,
       std::function<std::unique_ptr<grpc::GenericClientAsyncReaderWriter>(
           grpc::GenericStub*, grpc::ClientContext*,
-          const grpc::string& method_name, CompletionQueue*, void*)> start_req,
+          const grpc::string& method_name, CompletionQueue*, void*)>
+          start_req,
       std::function<void(grpc::Status, ByteBuffer*)> on_done)
       : context_(),
         stub_(stub),
diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc
index a68f1ae7b6..1234542687 100644
--- a/test/cpp/qps/server_async.cc
+++ b/test/cpp/qps/server_async.cc
@@ -73,7 +73,8 @@ class AsyncQpsServerTest : public Server {
                          CompletionQueue *, ServerCompletionQueue *, void *)>
           request_streaming_function,
       std::function<grpc::Status(const PayloadConfig &, const RequestType *,
-                                 ResponseType *)> process_rpc)
+                                 ResponseType *)>
+          process_rpc)
       : Server(config) {
     char *server_address = NULL;
 
@@ -190,7 +191,8 @@ class AsyncQpsServerTest : public Server {
     ServerRpcContextUnaryImpl(
         std::function<void(ServerContextType *, RequestType *,
                            grpc::ServerAsyncResponseWriter<ResponseType> *,
-                           void *)> request_method,
+                           void *)>
+            request_method,
         std::function<grpc::Status(const RequestType *, ResponseType *)>
             invoke_method)
         : srv_ctx_(new ServerContextType),
-- 
GitLab


From 4c2218e22930a4f17eaec4677470586e2d91e228 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 11 May 2016 10:27:08 -0700
Subject: [PATCH 482/525] Force wakeup after fd addition

---
 src/core/lib/iomgr/ev_poll_posix.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/core/lib/iomgr/ev_poll_posix.c b/src/core/lib/iomgr/ev_poll_posix.c
index 0240ea0a01..99874d49eb 100644
--- a/src/core/lib/iomgr/ev_poll_posix.c
+++ b/src/core/lib/iomgr/ev_poll_posix.c
@@ -768,6 +768,7 @@ static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
   }
   pollset->fds[pollset->fd_count++] = fd;
   GRPC_FD_REF(fd, "multipoller");
+  pollset_kick(pollset, NULL);
 exit:
   gpr_mu_unlock(&pollset->mu);
 }
-- 
GitLab


From c1c6b3c80dcbd7b1b953ec7e5ff291c1b48badb9 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 11 May 2016 10:41:06 -0700
Subject: [PATCH 483/525] Update release version to 0.14.1

---
 Makefile                                          | 2 +-
 build.yaml                                        | 2 +-
 package.json                                      | 2 +-
 src/core/lib/surface/version.c                    | 2 +-
 src/csharp/Grpc.Core/VersionInfo.cs               | 2 +-
 src/csharp/build_packages.bat                     | 2 +-
 src/node/tools/package.json                       | 2 +-
 src/python/grpcio/grpc_version.py                 | 2 +-
 src/ruby/lib/grpc/version.rb                      | 2 +-
 src/ruby/tools/version.rb                         | 2 +-
 tools/distrib/python/grpcio_tools/grpc_version.py | 2 +-
 tools/doxygen/Doxyfile.c++                        | 2 +-
 tools/doxygen/Doxyfile.c++.internal               | 2 +-
 tools/doxygen/Doxyfile.core                       | 2 +-
 tools/doxygen/Doxyfile.core.internal              | 2 +-
 15 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile
index 0547faf5bb..35154a1cc8 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ E = @echo
 Q = @
 endif
 
-VERSION = 0.14.1-pre1
+VERSION = 0.14.1
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index 1b7d4e03ab..31fa496833 100644
--- a/build.yaml
+++ b/build.yaml
@@ -7,7 +7,7 @@ settings:
   '#3': Use "-preN" suffixes to identify pre-release versions
   '#4': Per-language overrides are possible with (eg) ruby_version tag here
   '#5': See the expand_version.py for all the quirks here
-  version: 0.14.1-pre1
+  version: 0.14.1
 filegroups:
 - name: census
   public_headers:
diff --git a/package.json b/package.json
index b256fadd61..eae2636614 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc",
-  "version": "0.14.1-pre1",
+  "version": "0.14.1",
   "author": "Google Inc.",
   "description": "gRPC Library for Node",
   "homepage": "http://www.grpc.io/",
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index a7fa0f3565..a77af06023 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -36,4 +36,4 @@
 
 #include <grpc/grpc.h>
 
-const char *grpc_version_string(void) { return "0.14.1-pre1"; }
+const char *grpc_version_string(void) { return "0.14.1"; }
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index 6c6a08775d..bbf45f072a 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -53,6 +53,6 @@ namespace Grpc.Core
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "0.14.1-pre1";
+        public const string CurrentVersion = "0.14.1";
     }
 }
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index cf700d7581..62a7668c68 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,7 +1,7 @@
 @rem Builds gRPC NuGet packages
 
 @rem Current package versions
-set VERSION=0.14.1-pre1
+set VERSION=0.14.1
 set PROTOBUF_VERSION=3.0.0-beta2
 
 @rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well.
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index da85b6455b..a171e2539d 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-tools",
-  "version": "0.14.1-pre1",
+  "version": "0.14.1",
   "author": "Google Inc.",
   "description": "Tools for developing with gRPC on Node.js",
   "homepage": "http://www.grpc.io/",
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index e688e32c5f..c947beb930 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION='0.14.1rc1'
+VERSION='0.14.1'
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index d8c2578c70..de36ef0bbf 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '0.14.1.pre1'
+  VERSION = '0.14.1'
 end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index 6dd5c339e2..41a2cbc45b 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -29,6 +29,6 @@
 
 module GRPC
   module Tools
-    VERSION = '0.14.1.pre1'
+    VERSION = '0.14.1'
   end
 end
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index cfd27d45c2..ec90c87010 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION='0.14.1rc1'
+VERSION='0.14.1'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 8ea1019f40..8d42b5c042 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1-pre1
+PROJECT_NUMBER         = 0.14.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index cb444ef137..39b35dc29c 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1-pre1
+PROJECT_NUMBER         = 0.14.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 34002354cf..943e5fe057 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1-pre1
+PROJECT_NUMBER         = 0.14.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 434f6c92a3..f8fcea1ac1 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1-pre1
+PROJECT_NUMBER         = 0.14.1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
-- 
GitLab


From 878816956cdfb69d9074ab4cdb5d89d9f21bba74 Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 11 May 2016 11:28:23 -0700
Subject: [PATCH 484/525] Update release version to 0.14.2-pre1

---
 Makefile                                          | 2 +-
 build.yaml                                        | 2 +-
 composer.json                                     | 2 +-
 package.json                                      | 2 +-
 package.xml                                       | 8 ++++----
 src/core/lib/surface/version.c                    | 2 +-
 src/csharp/Grpc.Core/VersionInfo.cs               | 4 ++--
 src/csharp/build_packages.bat                     | 2 +-
 src/node/tools/package.json                       | 2 +-
 src/python/grpcio/grpc_version.py                 | 2 +-
 src/ruby/lib/grpc/version.rb                      | 2 +-
 src/ruby/tools/version.rb                         | 2 +-
 tools/distrib/python/grpcio_tools/grpc_version.py | 2 +-
 tools/doxygen/Doxyfile.c++                        | 2 +-
 tools/doxygen/Doxyfile.c++.internal               | 2 +-
 tools/doxygen/Doxyfile.core                       | 2 +-
 tools/doxygen/Doxyfile.core.internal              | 2 +-
 17 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/Makefile b/Makefile
index 35154a1cc8..64637e1ac3 100644
--- a/Makefile
+++ b/Makefile
@@ -407,7 +407,7 @@ E = @echo
 Q = @
 endif
 
-VERSION = 0.14.1
+VERSION = 0.14.2-pre1
 
 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
 CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index 31fa496833..b0ef376bf9 100644
--- a/build.yaml
+++ b/build.yaml
@@ -7,7 +7,7 @@ settings:
   '#3': Use "-preN" suffixes to identify pre-release versions
   '#4': Per-language overrides are possible with (eg) ruby_version tag here
   '#5': See the expand_version.py for all the quirks here
-  version: 0.14.1
+  version: 0.14.2-pre1
 filegroups:
 - name: census
   public_headers:
diff --git a/composer.json b/composer.json
index 0bf0ff4b45..0abe77b35c 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
   "name": "grpc/grpc",
   "type": "library",
   "description": "gRPC library for PHP",
-  "version": "0.14.1",
+  "version": "0.14.2",
   "keywords": ["rpc"],
   "homepage": "http://grpc.io",
   "license": "BSD-3-Clause",
diff --git a/package.json b/package.json
index eae2636614..32b86018d9 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc",
-  "version": "0.14.1",
+  "version": "0.14.2-pre1",
   "author": "Google Inc.",
   "description": "gRPC Library for Node",
   "homepage": "http://www.grpc.io/",
diff --git a/package.xml b/package.xml
index c90d6f6b4b..e8386948a6 100644
--- a/package.xml
+++ b/package.xml
@@ -13,8 +13,8 @@
  <date>2016-04-19</date>
  <time>16:06:07</time>
  <version>
-  <release>0.14.1</release>
-  <api>0.14.1</api>
+  <release>0.14.2</release>
+  <api>0.14.2</api>
  </version>
  <stability>
   <release>beta</release>
@@ -1014,8 +1014,8 @@ Update to wrap gRPC C Core version 0.10.0
   </release>
   <release>
    <version>
-    <release>0.14.1</release>
-    <api>0.14.1</api>
+    <release>0.14.2</release>
+    <api>0.14.2</api>
    </version>
    <stability>
     <release>beta</release>
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index a77af06023..c18ea7bb9f 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -36,4 +36,4 @@
 
 #include <grpc/grpc.h>
 
-const char *grpc_version_string(void) { return "0.14.1"; }
+const char *grpc_version_string(void) { return "0.14.2-pre1"; }
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index bbf45f072a..9b2f6ed1c3 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -48,11 +48,11 @@ namespace Grpc.Core
         /// <summary>
         /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
         /// </summary>
-        public const string CurrentAssemblyFileVersion = "0.14.1.0";
+        public const string CurrentAssemblyFileVersion = "0.14.2.0";
 
         /// <summary>
         /// Current version of gRPC C#
         /// </summary>
-        public const string CurrentVersion = "0.14.1";
+        public const string CurrentVersion = "0.14.2-pre1";
     }
 }
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index 62a7668c68..ca5b290eb9 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,7 +1,7 @@
 @rem Builds gRPC NuGet packages
 
 @rem Current package versions
-set VERSION=0.14.1
+set VERSION=0.14.2-pre1
 set PROTOBUF_VERSION=3.0.0-beta2
 
 @rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well.
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index a171e2539d..321e3c3e7a 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "grpc-tools",
-  "version": "0.14.1",
+  "version": "0.14.2-pre1",
   "author": "Google Inc.",
   "description": "Tools for developing with gRPC on Node.js",
   "homepage": "http://www.grpc.io/",
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index c947beb930..eedb381185 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
 
-VERSION='0.14.1'
+VERSION='0.14.2rc1'
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index de36ef0bbf..e0f1dee596 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -29,5 +29,5 @@
 
 # GRPC contains the General RPC module.
 module GRPC
-  VERSION = '0.14.1'
+  VERSION = '0.14.2.pre1'
 end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index 41a2cbc45b..e19d7338ad 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -29,6 +29,6 @@
 
 module GRPC
   module Tools
-    VERSION = '0.14.1'
+    VERSION = '0.14.2.pre1'
   end
 end
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index ec90c87010..c22ccff4a2 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -29,4 +29,4 @@
 
 # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
 
-VERSION='0.14.1'
+VERSION='0.14.2rc1'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 8d42b5c042..739a49e7f3 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1
+PROJECT_NUMBER         = 0.14.2-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 39b35dc29c..8fbd577c36 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC C++"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1
+PROJECT_NUMBER         = 0.14.2-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index 943e5fe057..203f333535 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1
+PROJECT_NUMBER         = 0.14.2-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index f8fcea1ac1..d677afa175 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -40,7 +40,7 @@ PROJECT_NAME           = "GRPC Core"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 0.14.1
+PROJECT_NUMBER         = 0.14.2-pre1
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
-- 
GitLab


From 649d126ed3bcef2b22b6cc53a35a0ac75c0cee14 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 11 May 2016 12:26:39 -0700
Subject: [PATCH 485/525] set GOPATH when executing go worker

---
 tools/jenkins/run_performance.sh             | 2 +-
 tools/run_tests/performance/run_worker_go.sh | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/jenkins/run_performance.sh b/tools/jenkins/run_performance.sh
index 13a332751b..c92f9750af 100755
--- a/tools/jenkins/run_performance.sh
+++ b/tools/jenkins/run_performance.sh
@@ -34,4 +34,4 @@ set -ex
 # Enter the gRPC repo root
 cd $(dirname $0)/../..
 
-tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python
+tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python go
diff --git a/tools/run_tests/performance/run_worker_go.sh b/tools/run_tests/performance/run_worker_go.sh
index f7f2ece137..6b1242a419 100755
--- a/tools/run_tests/performance/run_worker_go.sh
+++ b/tools/run_tests/performance/run_worker_go.sh
@@ -32,4 +32,6 @@ set -ex
 
 cd $(dirname $0)/../../..
 
-../gopath/bin/worker $@
+export GOPATH=$(pwd)/../gopath
+
+${GOPATH}/bin/worker $@
-- 
GitLab


From 1095c315f810cdc677d3be929e5f950783fab277 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 11 May 2016 12:27:04 -0700
Subject: [PATCH 486/525] run netperf in smoketest as well

---
 tools/jenkins/run_performance.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/jenkins/run_performance.sh b/tools/jenkins/run_performance.sh
index c92f9750af..25268dd650 100755
--- a/tools/jenkins/run_performance.sh
+++ b/tools/jenkins/run_performance.sh
@@ -34,4 +34,4 @@ set -ex
 # Enter the gRPC repo root
 cd $(dirname $0)/../..
 
-tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python go
+tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python go --netperf
-- 
GitLab


From 0cc2acc479fb56b76223aed24ba30ed254be5a4a Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 11 May 2016 12:28:34 -0700
Subject: [PATCH 487/525] make --category smoketest explicit

---
 tools/jenkins/run_performance.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/jenkins/run_performance.sh b/tools/jenkins/run_performance.sh
index 25268dd650..940702be36 100755
--- a/tools/jenkins/run_performance.sh
+++ b/tools/jenkins/run_performance.sh
@@ -34,4 +34,4 @@ set -ex
 # Enter the gRPC repo root
 cd $(dirname $0)/../..
 
-tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python go --netperf
+tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python go --netperf --category smoketest
-- 
GitLab


From 56aa02383fd3f04750b8c442979863c25d5c23f1 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 11 May 2016 12:37:04 -0700
Subject: [PATCH 488/525] Let execution contexts signal that they are done

---
 src/core/lib/iomgr/exec_ctx.c | 17 +++++++++++++++++
 src/core/lib/iomgr/exec_ctx.h | 29 ++++++++++++++++++++++++-----
 2 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/src/core/lib/iomgr/exec_ctx.c b/src/core/lib/iomgr/exec_ctx.c
index 2146c7dd1f..e451479073 100644
--- a/src/core/lib/iomgr/exec_ctx.c
+++ b/src/core/lib/iomgr/exec_ctx.c
@@ -39,6 +39,22 @@
 
 #include "src/core/lib/profiling/timers.h"
 
+bool grpc_exec_ctx_ready_to_finish(grpc_exec_ctx *exec_ctx) {
+  if (!exec_ctx->cached_ready_to_finish) {
+    exec_ctx->cached_ready_to_finish = exec_ctx->check_ready_to_finish(
+        exec_ctx, exec_ctx->check_ready_to_finish_arg);
+  }
+  return exec_ctx->cached_ready_to_finish;
+}
+
+bool grpc_never_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored) {
+  return false;
+}
+
+bool grpc_always_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored) {
+  return true;
+}
+
 #ifndef GRPC_EXECUTION_CONTEXT_SANITIZER
 bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) {
   bool did_something = 0;
@@ -61,6 +77,7 @@ bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) {
 }
 
 void grpc_exec_ctx_finish(grpc_exec_ctx *exec_ctx) {
+  exec_ctx->cached_ready_to_finish = true;
   grpc_exec_ctx_flush(exec_ctx);
 }
 
diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h
index 976cc40347..9d47a262f8 100644
--- a/src/core/lib/iomgr/exec_ctx.h
+++ b/src/core/lib/iomgr/exec_ctx.h
@@ -53,6 +53,9 @@ typedef struct grpc_workqueue grpc_workqueue;
  *  - track a list of work that needs to be delayed until the top of the
  *    call stack (this provides a convenient mechanism to run callbacks
  *    without worrying about locking issues)
+ *  - provide a decision maker (via grpc_exec_ctx_ready_to_finish) that provides
+ *    signal as to whether a borrowed thread should continue to do work or
+ *    should actively try to finish up and get this thread back to its owner
  *
  *  CONVENTIONS:
  *  Instance of this must ALWAYS be constructed on the stack, never
@@ -63,18 +66,26 @@ typedef struct grpc_workqueue grpc_workqueue;
  */
 struct grpc_exec_ctx {
   grpc_closure_list closure_list;
+  bool cached_ready_to_finish;
+  void *check_ready_to_finish_arg;
+  bool (*check_ready_to_finish)(grpc_exec_ctx *exec_ctx, void *arg);
 };
 
-#define GRPC_EXEC_CTX_INIT \
-  { GRPC_CLOSURE_LIST_INIT }
+#define GRPC_EXEC_CTX_INIT_WITH_FINISH_CHECK(finish_check, finish_check_arg) \
+  { GRPC_CLOSURE_LIST_INIT, false, finish_check_arg, finish_check }
 #else
 struct grpc_exec_ctx {
-  int unused;
+  bool cached_ready_to_finish;
+  void *check_ready_to_finish_arg;
+  bool (*check_ready_to_finish)(grpc_exec_ctx *exec_ctx, void *arg);
 };
-#define GRPC_EXEC_CTX_INIT \
-  { 0 }
+#define GRPC_EXEC_CTX_INIT_WITH_FINISH_CHECK(finish_check, finish_check_arg) \
+  { false, finish_check_arg, finish_check }
 #endif
 
+#define GRPC_EXEC_CTX_INIT \
+  GRPC_EXEC_CTX_INIT_WITH_FINISH_CHECK(grpc_never_ready_to_finish, NULL)
+
 /** Flush any work that has been enqueued onto this grpc_exec_ctx.
  *  Caller must guarantee that no interfering locks are held.
  *  Returns true if work was performed, false otherwise. */
@@ -86,6 +97,14 @@ void grpc_exec_ctx_finish(grpc_exec_ctx *exec_ctx);
 void grpc_exec_ctx_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
                            bool success,
                            grpc_workqueue *offload_target_or_null);
+/** Returns true if we'd like to leave this execution context as soon as
+    possible: useful for deciding whether to do something more or not depending
+    on outside context */
+bool grpc_exec_ctx_ready_to_finish(grpc_exec_ctx *exec_ctx);
+/** A finish check that is never ready to finish */
+bool grpc_never_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored);
+/** A finish check that is always ready to finish */
+bool grpc_always_ready_to_finish(grpc_exec_ctx *exec_ctx, void *arg_ignored);
 /** Add a list of closures to be executed at the next flush/finish point.
  *  Leaves \a list empty. */
 void grpc_exec_ctx_enqueue_list(grpc_exec_ctx *exec_ctx,
-- 
GitLab


From ad17bf704e825f4c7f841cb63ebb4ccfe69219c1 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 11 May 2016 12:41:37 -0700
Subject: [PATCH 489/525] propagate jenkins env variables to netperf client

---
 tools/run_tests/run_performance_tests.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index 674d864539..a7728e7f7d 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -137,6 +137,17 @@ def create_netperf_jobspec(server_host='localhost', client_host=None,
   cmd = 'NETPERF_SERVER_HOST="%s" ' % server_host
   if bq_result_table:
     cmd += 'BQ_RESULT_TABLE="%s" ' % bq_result_table
+  if client_host:
+    # If netperf is running remotely, the env variables populated by Jenkins
+    # won't be available on the client, but we need them for uploading results
+    # to BigQuery.
+    jenkins_job_name = os.getenv('JOB_NAME')
+    if jenkins_job_name:
+      cmd += 'JOB_NAME="%s" ' % jenkins_job_name
+    jenkins_build_number = os.getenv('BUILD_NUMBER')
+    if jenkins_build_number:
+      cmd += 'BUILD_NUMBER="%s" ' % jenkins_build_number
+
   cmd += 'tools/run_tests/performance/run_netperf.sh'
   if client_host:
     user_at_host = '%s@%s' % (_REMOTE_HOST_USERNAME, client_host)
-- 
GitLab


From d151dcb12ca687edffcf63db1c7c1c0df520e695 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Wed, 11 May 2016 13:26:15 -0700
Subject: [PATCH 490/525] fix qps reporting in C# stress client

---
 src/csharp/Grpc.IntegrationTesting/StressTestClient.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs b/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
index 8db691cb04..4d6ca7ece5 100644
--- a/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/StressTestClient.cs
@@ -311,7 +311,7 @@ namespace Grpc.IntegrationTesting
                 var snapshot = histogram.GetSnapshot(true);
                 var elapsedSnapshot = wallClockStopwatch.GetElapsedSnapshot(true);
 
-                return (long) (snapshot.Count / elapsedSnapshot.Seconds);
+                return (long) (snapshot.Count / elapsedSnapshot.TotalSeconds);
             }
         }
     }
-- 
GitLab


From 7d5111e26aafc990138da381354503e8e61f077e Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@users.noreply.github.com>
Date: Wed, 11 May 2016 13:36:11 -0700
Subject: [PATCH 491/525] dont run go as part of smoketest

---
 tools/jenkins/run_performance.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/jenkins/run_performance.sh b/tools/jenkins/run_performance.sh
index 940702be36..99b920f6a0 100755
--- a/tools/jenkins/run_performance.sh
+++ b/tools/jenkins/run_performance.sh
@@ -34,4 +34,4 @@ set -ex
 # Enter the gRPC repo root
 cd $(dirname $0)/../..
 
-tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python go --netperf --category smoketest
+tools/run_tests/run_performance_tests.py -l c++ node ruby csharp python --netperf --category smoketest
-- 
GitLab


From 86cf1d23b1efcc63a6aec5a0533bfd60a36f3ef2 Mon Sep 17 00:00:00 2001
From: Carl Mastrangelo <notcarl@google.com>
Date: Wed, 11 May 2016 13:31:08 -0700
Subject: [PATCH 492/525] Set GC params for Java Stress Test

---
 tools/run_tests/stress_test/configs/java.json | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/run_tests/stress_test/configs/java.json b/tools/run_tests/stress_test/configs/java.json
index 2ce6c00780..c07d75e79d 100644
--- a/tools/run_tests/stress_test/configs/java.json
+++ b/tools/run_tests/stress_test/configs/java.json
@@ -21,6 +21,9 @@
         "metricsArgs": {
           "metrics_server_address": "localhost:8081",
           "total_only": "true"
+        },
+        "env": {
+          "STRESSTEST_CLIENT_OPTS":"-Xmx3g -Xms3g -XX:NewSize=1.5g -XX:MaxNewSize=1.5g"
         }
       }
     },
@@ -44,7 +47,10 @@
         "serverPort": 8080,
         "serverArgs": {
           "port": 8080,
-		  "use_tls": "false"
+          "use_tls": "false"
+        },
+        "env": {
+          "TEST_SERVER_OPTS":"-Xmx3g -Xms3g -XX:NewSize=1.5g -XX:MaxNewSize=1.5g"
         }
       }
     },
-- 
GitLab


From be187b08c616343086c62f7ae36b078e820a37c4 Mon Sep 17 00:00:00 2001
From: Ken Payson <kpayson@google.com>
Date: Fri, 6 May 2016 15:32:58 -0700
Subject: [PATCH 493/525] Format changes to python protoc generation

---
 src/compiler/python_generator.cc | 110 +++++++++++++++----------------
 1 file changed, 52 insertions(+), 58 deletions(-)

diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index 8e76e6dce6..cd5ddd8832 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -147,7 +147,8 @@ class IndentScope {
 // END FORMATTING BOILERPLATE //
 ////////////////////////////////
 
-// TODO(protobuf team): Export `ModuleName` from protobuf's
+// TODO(https://github.com/google/protobuf/issues/888):
+// Export `ModuleName` from protobuf's
 // `src/google/protobuf/compiler/python/python_generator.cc` file.
 grpc::string ModuleName(const grpc::string& filename) {
   grpc::string basename = StripProto(filename);
@@ -156,8 +157,23 @@ grpc::string ModuleName(const grpc::string& filename) {
   return basename + "_pb2";
 }
 
+// TODO(https://github.com/google/protobuf/issues/888):
+// Export `ModuleAlias` from protobuf's
+// `src/google/protobuf/compiler/python/python_generator.cc` file.
+grpc::string ModuleAlias(const grpc::string& filename) {
+  grpc::string module_name = ModuleName(filename);
+  // We can't have dots in the module name, so we replace each with _dot_.
+  // But that could lead to a collision between a.b and a_dot_b, so we also
+  // duplicate each underscore.
+  module_name = StringReplace(module_name, "_", "__");
+  module_name = StringReplace(module_name, ".", "_dot_");
+  return module_name;
+}
+
+
 bool GetModuleAndMessagePath(const Descriptor* type,
-                             pair<grpc::string, grpc::string>* out) {
+                             const ServiceDescriptor* service,
+                             grpc::string* out) {
   const Descriptor* path_elem_type = type;
   vector<const Descriptor*> message_path;
   do {
@@ -170,7 +186,9 @@ bool GetModuleAndMessagePath(const Descriptor* type,
         file_name.find_last_of(".proto") == file_name.size() - 1)) {
     return false;
   }
-  grpc::string module = ModuleName(file_name);
+  grpc::string service_file_name = service->file()->name();
+  grpc::string module = service_file_name == file_name ?
+          "" : ModuleAlias(file_name) + ".";
   grpc::string message_type;
   for (auto path_iter = message_path.rbegin();
        path_iter != message_path.rend(); ++path_iter) {
@@ -178,7 +196,7 @@ bool GetModuleAndMessagePath(const Descriptor* type,
   }
   // no pop_back prior to C++11
   message_type.resize(message_type.size() - 1);
-  *out = make_pair(module, message_type);
+  *out = module + message_type;
   return true;
 }
 
@@ -210,7 +228,7 @@ static void PrintAllComments(const DescriptorType* desc, Printer* printer) {
 
 bool PrintBetaServicer(const ServiceDescriptor* service,
                        Printer* out) {
-  out->Print("\n");
+  out->Print("\n\n");
   out->Print("class Beta$Service$Servicer(object):\n", "Service",
              service->name());
   {
@@ -234,7 +252,7 @@ bool PrintBetaServicer(const ServiceDescriptor* service,
 
 bool PrintBetaStub(const ServiceDescriptor* service,
                    Printer* out) {
-  out->Print("\n");
+  out->Print("\n\n");
   out->Print("class Beta$Service$Stub(object):\n", "Service", service->name());
   {
     IndentScope raii_class_indent(out);
@@ -244,7 +262,7 @@ bool PrintBetaStub(const ServiceDescriptor* service,
       grpc::string arg_name = meth->client_streaming() ?
           "request_iterator" : "request";
       auto methdict = ListToDict({"Method", meth->name(), "ArgName", arg_name});
-      out->Print(methdict, "def $Method$(self, $ArgName$, timeout):\n");
+      out->Print(methdict, "def $Method$(self, $ArgName$, timeout, metadata=None, with_call=False, protocol_options=None):\n");
       {
         IndentScope raii_method_indent(out);
         PrintAllComments(meth, out);
@@ -260,38 +278,31 @@ bool PrintBetaStub(const ServiceDescriptor* service,
 
 bool PrintBetaServerFactory(const grpc::string& package_qualified_service_name,
                             const ServiceDescriptor* service, Printer* out) {
-  out->Print("\n");
+  out->Print("\n\n");
   out->Print("def beta_create_$Service$_server(servicer, pool=None, "
              "pool_size=None, default_timeout=None, maximum_timeout=None):\n",
              "Service", service->name());
   {
     IndentScope raii_create_server_indent(out);
     map<grpc::string, grpc::string> method_implementation_constructors;
-    map<grpc::string, pair<grpc::string, grpc::string>>
-        input_message_modules_and_classes;
-    map<grpc::string, pair<grpc::string, grpc::string>>
-        output_message_modules_and_classes;
+    map<grpc::string, grpc::string> input_message_modules_and_classes;
+    map<grpc::string, grpc::string> output_message_modules_and_classes;
     for (int i = 0; i < service->method_count(); ++i) {
       const MethodDescriptor* method = service->method(i);
       const grpc::string method_implementation_constructor =
           grpc::string(method->client_streaming() ? "stream_" : "unary_") +
           grpc::string(method->server_streaming() ? "stream_" : "unary_") +
           "inline";
-      pair<grpc::string, grpc::string> input_message_module_and_class;
-      if (!GetModuleAndMessagePath(method->input_type(),
+      grpc::string input_message_module_and_class;
+      if (!GetModuleAndMessagePath(method->input_type(), service,
                                    &input_message_module_and_class)) {
         return false;
       }
-      pair<grpc::string, grpc::string> output_message_module_and_class;
-      if (!GetModuleAndMessagePath(method->output_type(),
+      grpc::string output_message_module_and_class;
+      if (!GetModuleAndMessagePath(method->output_type(), service,
                                    &output_message_module_and_class)) {
         return false;
       }
-      // Import the modules that define the messages used in RPCs.
-      out->Print("import $Module$\n", "Module",
-                 input_message_module_and_class.first);
-      out->Print("import $Module$\n", "Module",
-                 output_message_module_and_class.first);
       method_implementation_constructors.insert(
           make_pair(method->name(), method_implementation_constructor));
       input_message_modules_and_classes.insert(
@@ -307,13 +318,11 @@ bool PrintBetaServerFactory(const grpc::string& package_qualified_service_name,
          name_and_input_module_class_pair++) {
       IndentScope raii_indent(out);
       out->Print("(\'$PackageQualifiedServiceName$\', \'$MethodName$\'): "
-                 "$InputTypeModule$.$InputTypeClass$.FromString,\n",
+                 "$InputTypeModuleAndClass$.FromString,\n",
                  "PackageQualifiedServiceName", package_qualified_service_name,
                  "MethodName", name_and_input_module_class_pair->first,
-                 "InputTypeModule",
-                 name_and_input_module_class_pair->second.first,
-                 "InputTypeClass",
-                 name_and_input_module_class_pair->second.second);
+                 "InputTypeModuleAndClass",
+                 name_and_input_module_class_pair->second);
     }
     out->Print("}\n");
     out->Print("response_serializers = {\n");
@@ -324,13 +333,11 @@ bool PrintBetaServerFactory(const grpc::string& package_qualified_service_name,
          name_and_output_module_class_pair++) {
       IndentScope raii_indent(out);
       out->Print("(\'$PackageQualifiedServiceName$\', \'$MethodName$\'): "
-                 "$OutputTypeModule$.$OutputTypeClass$.SerializeToString,\n",
+                 "$OutputTypeModuleAndClass$.SerializeToString,\n",
                  "PackageQualifiedServiceName", package_qualified_service_name,
                  "MethodName", name_and_output_module_class_pair->first,
-                 "OutputTypeModule",
-                 name_and_output_module_class_pair->second.first,
-                 "OutputTypeClass",
-                 name_and_output_module_class_pair->second.second);
+                 "OutputTypeModuleAndClass",
+                 name_and_output_module_class_pair->second);
     }
     out->Print("}\n");
     out->Print("method_implementations = {\n");
@@ -366,37 +373,30 @@ bool PrintBetaStubFactory(const grpc::string& package_qualified_service_name,
   map<grpc::string, grpc::string> dict = ListToDict({
         "Service", service->name(),
       });
-  out->Print("\n");
+  out->Print("\n\n");
   out->Print(dict, "def beta_create_$Service$_stub(channel, host=None,"
              " metadata_transformer=None, pool=None, pool_size=None):\n");
   {
     IndentScope raii_create_server_indent(out);
     map<grpc::string, grpc::string> method_cardinalities;
-    map<grpc::string, pair<grpc::string, grpc::string>>
-        input_message_modules_and_classes;
-    map<grpc::string, pair<grpc::string, grpc::string>>
-        output_message_modules_and_classes;
+    map<grpc::string, grpc::string> input_message_modules_and_classes;
+    map<grpc::string, grpc::string> output_message_modules_and_classes;
     for (int i = 0; i < service->method_count(); ++i) {
       const MethodDescriptor* method = service->method(i);
       const grpc::string method_cardinality =
           grpc::string(method->client_streaming() ? "STREAM" : "UNARY") +
           "_" +
-	  grpc::string(method->server_streaming() ? "STREAM" : "UNARY");
-      pair<grpc::string, grpc::string> input_message_module_and_class;
-      if (!GetModuleAndMessagePath(method->input_type(),
+          grpc::string(method->server_streaming() ? "STREAM" : "UNARY");
+      grpc::string input_message_module_and_class;
+      if (!GetModuleAndMessagePath(method->input_type(), service,
                                    &input_message_module_and_class)) {
         return false;
       }
-      pair<grpc::string, grpc::string> output_message_module_and_class;
-      if (!GetModuleAndMessagePath(method->output_type(),
+      grpc::string output_message_module_and_class;
+      if (!GetModuleAndMessagePath(method->output_type(), service,
                                    &output_message_module_and_class)) {
         return false;
       }
-      // Import the modules that define the messages used in RPCs.
-      out->Print("import $Module$\n", "Module",
-                 input_message_module_and_class.first);
-      out->Print("import $Module$\n", "Module",
-                 output_message_module_and_class.first);
       method_cardinalities.insert(
           make_pair(method->name(), method_cardinality));
       input_message_modules_and_classes.insert(
@@ -412,13 +412,11 @@ bool PrintBetaStubFactory(const grpc::string& package_qualified_service_name,
          name_and_input_module_class_pair++) {
       IndentScope raii_indent(out);
       out->Print("(\'$PackageQualifiedServiceName$\', \'$MethodName$\'): "
-                 "$InputTypeModule$.$InputTypeClass$.SerializeToString,\n",
+                 "$InputTypeModuleAndClass$.SerializeToString,\n",
                  "PackageQualifiedServiceName", package_qualified_service_name,
                  "MethodName", name_and_input_module_class_pair->first,
-                 "InputTypeModule",
-                 name_and_input_module_class_pair->second.first,
-                 "InputTypeClass",
-                 name_and_input_module_class_pair->second.second);
+                 "InputTypeModuleAndClass",
+                 name_and_input_module_class_pair->second);
     }
     out->Print("}\n");
     out->Print("response_deserializers = {\n");
@@ -429,13 +427,11 @@ bool PrintBetaStubFactory(const grpc::string& package_qualified_service_name,
          name_and_output_module_class_pair++) {
       IndentScope raii_indent(out);
       out->Print("(\'$PackageQualifiedServiceName$\', \'$MethodName$\'): "
-                 "$OutputTypeModule$.$OutputTypeClass$.FromString,\n",
+                 "$OutputTypeModuleAndClass$.FromString,\n",
                  "PackageQualifiedServiceName", package_qualified_service_name,
                  "MethodName", name_and_output_module_class_pair->first,
-                 "OutputTypeModule",
-                 name_and_output_module_class_pair->second.first,
-                 "OutputTypeClass",
-                 name_and_output_module_class_pair->second.second);
+                 "OutputTypeModuleAndClass",
+                 name_and_output_module_class_pair->second);
     }
     out->Print("}\n");
     out->Print("cardinalities = {\n");
@@ -463,8 +459,6 @@ bool PrintBetaStubFactory(const grpc::string& package_qualified_service_name,
 
 bool PrintPreamble(const FileDescriptor* file,
                    const GeneratorConfiguration& config, Printer* out) {
-  out->Print("import abc\n");
-  out->Print("import six\n");
   out->Print("from $Package$ import implementations as beta_implementations\n",
              "Package", config.beta_package_root);
   out->Print("from $Package$ import interfaces as beta_interfaces\n",
-- 
GitLab


From c2ec95bad4e279c713555195a7fd3ff6bbcc249e Mon Sep 17 00:00:00 2001
From: makdharma <makdharma@users.noreply.github.com>
Date: Wed, 11 May 2016 16:26:15 -0700
Subject: [PATCH 494/525] Revert "Revert "cronet wrapper code""

---
 BUILD                                         |  80 +++
 Makefile                                      |   7 +
 binding.gyp                                   |   3 +
 build.yaml                                    |  59 ++
 config.m4                                     |   5 +
 gRPC.podspec                                  |  76 +++
 grpc.def                                      |   1 +
 grpc.gemspec                                  |  40 ++
 include/grpc/grpc_cronet.h                    |  51 ++
 package.xml                                   |  40 ++
 .../client/secure/cronet_channel_create.c     |  69 ++
 .../cronet/transport/cronet_api_dummy.c       |  85 +++
 .../cronet/transport/cronet_transport.c       | 640 ++++++++++++++++++
 .../grpcio/grpc/_cython/imports.generated.c   |   2 +
 .../grpcio/grpc/_cython/imports.generated.h   |   4 +
 src/python/grpcio/grpc_core_dependencies.py   |   3 +
 src/ruby/ext/grpc/rb_grpc_imports.generated.c |   2 +
 src/ruby/ext/grpc/rb_grpc_imports.generated.h |   4 +
 .../core/surface/public_headers_must_be_c89.c |   1 +
 .../objective_c/Cronet/cronet_c_for_grpc.h    | 202 ++++++
 tools/doxygen/Doxyfile.core                   |   1 +
 tools/doxygen/Doxyfile.core.internal          |  40 ++
 tools/run_tests/sources_and_headers.json      | 120 +++-
 vsprojects/vcxproj/grpc/grpc.vcxproj          |  43 ++
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters  | 144 ++++
 25 files changed, 1721 insertions(+), 1 deletion(-)
 create mode 100644 include/grpc/grpc_cronet.h
 create mode 100644 src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
 create mode 100644 src/core/ext/transport/cronet/transport/cronet_api_dummy.c
 create mode 100644 src/core/ext/transport/cronet/transport/cronet_transport.c
 create mode 100644 third_party/objective_c/Cronet/cronet_c_for_grpc.h

diff --git a/BUILD b/BUILD
index ad6903d684..1f6fc08cba 100644
--- a/BUILD
+++ b/BUILD
@@ -285,6 +285,42 @@ cc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
+    "include/grpc/byte_buffer.h",
+    "include/grpc/grpc.h",
+    "include/grpc/impl/codegen/alloc.h",
+    "include/grpc/impl/codegen/atm.h",
+    "include/grpc/impl/codegen/atm_gcc_atomic.h",
+    "include/grpc/impl/codegen/atm_gcc_sync.h",
+    "include/grpc/impl/codegen/atm_win32.h",
+    "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/compression_types.h",
+    "include/grpc/impl/codegen/connectivity_state.h",
+    "include/grpc/impl/codegen/grpc_types.h",
+    "include/grpc/impl/codegen/log.h",
+    "include/grpc/impl/codegen/port_platform.h",
+    "include/grpc/impl/codegen/propagation_bits.h",
+    "include/grpc/impl/codegen/slice.h",
+    "include/grpc/impl/codegen/slice_buffer.h",
+    "include/grpc/impl/codegen/status.h",
+    "include/grpc/impl/codegen/sync.h",
+    "include/grpc/impl/codegen/sync_generic.h",
+    "include/grpc/impl/codegen/sync_posix.h",
+    "include/grpc/impl/codegen/sync_win32.h",
+    "include/grpc/impl/codegen/time.h",
+    "include/grpc/status.h",
+    "include/grpc/support/alloc.h",
+    "include/grpc/support/atm.h",
+    "include/grpc/support/host_port.h",
+    "include/grpc/support/log.h",
+    "include/grpc/support/port_platform.h",
+    "include/grpc/support/slice.h",
+    "include/grpc/support/slice_buffer.h",
+    "include/grpc/support/string_util.h",
+    "include/grpc/support/sync.h",
+    "include/grpc/support/time.h",
+    "include/grpc/support/useful.h",
+    "src/core/lib/support/string.h",
+    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
@@ -439,6 +475,9 @@ cc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
+    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
+    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -483,6 +522,7 @@ cc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
+    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1460,6 +1500,9 @@ objc_library(
     "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
+    "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c",
+    "src/core/ext/transport/cronet/transport/cronet_api_dummy.c",
+    "src/core/ext/transport/cronet/transport/cronet_transport.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -1504,6 +1547,7 @@ objc_library(
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_win32.h",
     "include/grpc/impl/codegen/time.h",
+    "include/grpc/grpc_cronet.h",
     "include/grpc/grpc_security.h",
     "include/grpc/grpc_security_constants.h",
     "include/grpc/census.h",
@@ -1631,6 +1675,42 @@ objc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
+    "include/grpc/byte_buffer.h",
+    "include/grpc/grpc.h",
+    "include/grpc/impl/codegen/alloc.h",
+    "include/grpc/impl/codegen/atm.h",
+    "include/grpc/impl/codegen/atm_gcc_atomic.h",
+    "include/grpc/impl/codegen/atm_gcc_sync.h",
+    "include/grpc/impl/codegen/atm_win32.h",
+    "include/grpc/impl/codegen/byte_buffer.h",
+    "include/grpc/impl/codegen/compression_types.h",
+    "include/grpc/impl/codegen/connectivity_state.h",
+    "include/grpc/impl/codegen/grpc_types.h",
+    "include/grpc/impl/codegen/log.h",
+    "include/grpc/impl/codegen/port_platform.h",
+    "include/grpc/impl/codegen/propagation_bits.h",
+    "include/grpc/impl/codegen/slice.h",
+    "include/grpc/impl/codegen/slice_buffer.h",
+    "include/grpc/impl/codegen/status.h",
+    "include/grpc/impl/codegen/sync.h",
+    "include/grpc/impl/codegen/sync_generic.h",
+    "include/grpc/impl/codegen/sync_posix.h",
+    "include/grpc/impl/codegen/sync_win32.h",
+    "include/grpc/impl/codegen/time.h",
+    "include/grpc/status.h",
+    "include/grpc/support/alloc.h",
+    "include/grpc/support/atm.h",
+    "include/grpc/support/host_port.h",
+    "include/grpc/support/log.h",
+    "include/grpc/support/port_platform.h",
+    "include/grpc/support/slice.h",
+    "include/grpc/support/slice_buffer.h",
+    "include/grpc/support/string_util.h",
+    "include/grpc/support/sync.h",
+    "include/grpc/support/time.h",
+    "include/grpc/support/useful.h",
+    "src/core/lib/support/string.h",
+    "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
     "src/core/ext/census/aggregation.h",
diff --git a/Makefile b/Makefile
index 1ff2cb67c5..b8925cee47 100644
--- a/Makefile
+++ b/Makefile
@@ -2634,6 +2634,9 @@ LIBGRPC_SRC = \
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
+    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
+    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -2681,6 +2684,7 @@ PUBLIC_HEADERS_C += \
     include/grpc/impl/codegen/sync_posix.h \
     include/grpc/impl/codegen/sync_win32.h \
     include/grpc/impl/codegen/time.h \
+    include/grpc/grpc_cronet.h \
     include/grpc/grpc_security.h \
     include/grpc/grpc_security_constants.h \
     include/grpc/census.h \
@@ -14348,6 +14352,9 @@ ifneq ($(OPENSSL_DEP),)
 # otherwise parallel compilation will fail if a source is compiled first.
 src/core/ext/transport/chttp2/client/secure/secure_channel_create.c: $(OPENSSL_DEP)
 src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/client/secure/cronet_channel_create.c: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/transport/cronet_api_dummy.c: $(OPENSSL_DEP)
+src/core/ext/transport/cronet/transport/cronet_transport.c: $(OPENSSL_DEP)
 src/core/lib/http/httpcli_security_connector.c: $(OPENSSL_DEP)
 src/core/lib/security/b64.c: $(OPENSSL_DEP)
 src/core/lib/security/client_auth_filter.c: $(OPENSSL_DEP)
diff --git a/binding.gyp b/binding.gyp
index 8bc2aee3d1..0d69fc5826 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -709,6 +709,9 @@
         'src/core/ext/client_config/uri_parser.c',
         'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
         'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+        'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
+        'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
+        'src/core/ext/transport/cronet/transport/cronet_transport.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
         'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
         'third_party/nanopb/pb_common.c',
diff --git a/build.yaml b/build.yaml
index b2cbd4d890..aeb31003e7 100644
--- a/build.yaml
+++ b/build.yaml
@@ -400,6 +400,7 @@ filegroups:
   - grpc_client_config
 - name: grpc_secure
   public_headers:
+  - include/grpc/grpc_cronet.h
   - include/grpc/grpc_security.h
   - include/grpc/grpc_security_constants.h
   headers:
@@ -547,6 +548,63 @@ filegroups:
   - grpc_transport_chttp2
   - grpc_base
   - grpc_secure
+- name: grpc_transport_cronet_client_secure
+  headers:
+  - include/grpc/byte_buffer.h
+  - include/grpc/grpc.h
+  - include/grpc/impl/codegen/alloc.h
+  - include/grpc/impl/codegen/atm.h
+  - include/grpc/impl/codegen/atm_gcc_atomic.h
+  - include/grpc/impl/codegen/atm_gcc_sync.h
+  - include/grpc/impl/codegen/atm_win32.h
+  - include/grpc/impl/codegen/byte_buffer.h
+  - include/grpc/impl/codegen/compression_types.h
+  - include/grpc/impl/codegen/connectivity_state.h
+  - include/grpc/impl/codegen/grpc_types.h
+  - include/grpc/impl/codegen/log.h
+  - include/grpc/impl/codegen/port_platform.h
+  - include/grpc/impl/codegen/propagation_bits.h
+  - include/grpc/impl/codegen/slice.h
+  - include/grpc/impl/codegen/slice_buffer.h
+  - include/grpc/impl/codegen/status.h
+  - include/grpc/impl/codegen/sync.h
+  - include/grpc/impl/codegen/sync_generic.h
+  - include/grpc/impl/codegen/sync_posix.h
+  - include/grpc/impl/codegen/sync_win32.h
+  - include/grpc/impl/codegen/time.h
+  - include/grpc/status.h
+  - include/grpc/support/alloc.h
+  - include/grpc/support/atm.h
+  - include/grpc/support/host_port.h
+  - include/grpc/support/log.h
+  - include/grpc/support/port_platform.h
+  - include/grpc/support/slice.h
+  - include/grpc/support/slice_buffer.h
+  - include/grpc/support/string_util.h
+  - include/grpc/support/sync.h
+  - include/grpc/support/time.h
+  - include/grpc/support/useful.h
+  - src/core/ext/transport/chttp2/transport/incoming_metadata.h
+  - src/core/lib/channel/channel_stack.h
+  - src/core/lib/channel/context.h
+  - src/core/lib/debug/trace.h
+  - src/core/lib/iomgr/closure.h
+  - src/core/lib/iomgr/exec_ctx.h
+  - src/core/lib/iomgr/pollset.h
+  - src/core/lib/iomgr/pollset_set.h
+  - src/core/lib/support/string.h
+  - src/core/lib/surface/channel.h
+  - src/core/lib/surface/channel_stack_type.h
+  - src/core/lib/transport/byte_stream.h
+  - src/core/lib/transport/metadata.h
+  - src/core/lib/transport/metadata_batch.h
+  - src/core/lib/transport/transport.h
+  - src/core/lib/transport/transport_impl.h
+  - third_party/objective_c/Cronet/cronet_c_for_grpc.h
+  src:
+  - src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
+  - src/core/ext/transport/cronet/transport/cronet_api_dummy.c
+  - src/core/ext/transport/cronet/transport/cronet_transport.c
 - name: nanopb
   headers:
   - third_party/nanopb/pb.h
@@ -734,6 +792,7 @@ libs:
   - grpc_transport_chttp2_client_secure
   - grpc_transport_chttp2_server_insecure
   - grpc_transport_chttp2_client_insecure
+  - grpc_transport_cronet_client_secure
   - grpc_lb_policy_grpclb
   - grpc_lb_policy_pick_first
   - grpc_lb_policy_round_robin
diff --git a/config.m4 b/config.m4
index c8d2aae106..58c3d82736 100644
--- a/config.m4
+++ b/config.m4
@@ -228,6 +228,9 @@ if test "$PHP_GRPC" != "no"; then
     src/core/ext/client_config/uri_parser.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+    src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
+    src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
+    src/core/ext/transport/cronet/transport/cronet_transport.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
     third_party/nanopb/pb_common.c \
@@ -566,6 +569,8 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/insecure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/secure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/transport)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/client/secure)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/cronet/transport)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/channel)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/compression)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/debug)
diff --git a/gRPC.podspec b/gRPC.podspec
index 393733209d..1a0ddc0d55 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -288,6 +288,42 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/subchannel_call_holder.h',
                       'src/core/ext/client_config/subchannel_index.h',
                       'src/core/ext/client_config/uri_parser.h',
+                      'include/grpc/byte_buffer.h',
+                      'include/grpc/grpc.h',
+                      'include/grpc/impl/codegen/alloc.h',
+                      'include/grpc/impl/codegen/atm.h',
+                      'include/grpc/impl/codegen/atm_gcc_atomic.h',
+                      'include/grpc/impl/codegen/atm_gcc_sync.h',
+                      'include/grpc/impl/codegen/atm_win32.h',
+                      'include/grpc/impl/codegen/byte_buffer.h',
+                      'include/grpc/impl/codegen/compression_types.h',
+                      'include/grpc/impl/codegen/connectivity_state.h',
+                      'include/grpc/impl/codegen/grpc_types.h',
+                      'include/grpc/impl/codegen/log.h',
+                      'include/grpc/impl/codegen/port_platform.h',
+                      'include/grpc/impl/codegen/propagation_bits.h',
+                      'include/grpc/impl/codegen/slice.h',
+                      'include/grpc/impl/codegen/slice_buffer.h',
+                      'include/grpc/impl/codegen/status.h',
+                      'include/grpc/impl/codegen/sync.h',
+                      'include/grpc/impl/codegen/sync_generic.h',
+                      'include/grpc/impl/codegen/sync_posix.h',
+                      'include/grpc/impl/codegen/sync_win32.h',
+                      'include/grpc/impl/codegen/time.h',
+                      'include/grpc/status.h',
+                      'include/grpc/support/alloc.h',
+                      'include/grpc/support/atm.h',
+                      'include/grpc/support/host_port.h',
+                      'include/grpc/support/log.h',
+                      'include/grpc/support/port_platform.h',
+                      'include/grpc/support/slice.h',
+                      'include/grpc/support/slice_buffer.h',
+                      'include/grpc/support/string_util.h',
+                      'include/grpc/support/sync.h',
+                      'include/grpc/support/time.h',
+                      'include/grpc/support/useful.h',
+                      'src/core/lib/support/string.h',
+                      'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
                       'third_party/nanopb/pb.h',
@@ -326,6 +362,7 @@ Pod::Spec.new do |s|
                       'include/grpc/impl/codegen/sync_posix.h',
                       'include/grpc/impl/codegen/sync_win32.h',
                       'include/grpc/impl/codegen/time.h',
+                      'include/grpc/grpc_cronet.h',
                       'include/grpc/grpc_security.h',
                       'include/grpc/grpc_security_constants.h',
                       'include/grpc/census.h',
@@ -475,6 +512,9 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/uri_parser.c',
                       'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
                       'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+                      'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
+                      'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
+                      'src/core/ext/transport/cronet/transport/cronet_transport.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
                       'third_party/nanopb/pb_common.c',
@@ -631,6 +671,42 @@ Pod::Spec.new do |s|
                               'src/core/ext/client_config/subchannel_call_holder.h',
                               'src/core/ext/client_config/subchannel_index.h',
                               'src/core/ext/client_config/uri_parser.h',
+                              'include/grpc/byte_buffer.h',
+                              'include/grpc/grpc.h',
+                              'include/grpc/impl/codegen/alloc.h',
+                              'include/grpc/impl/codegen/atm.h',
+                              'include/grpc/impl/codegen/atm_gcc_atomic.h',
+                              'include/grpc/impl/codegen/atm_gcc_sync.h',
+                              'include/grpc/impl/codegen/atm_win32.h',
+                              'include/grpc/impl/codegen/byte_buffer.h',
+                              'include/grpc/impl/codegen/compression_types.h',
+                              'include/grpc/impl/codegen/connectivity_state.h',
+                              'include/grpc/impl/codegen/grpc_types.h',
+                              'include/grpc/impl/codegen/log.h',
+                              'include/grpc/impl/codegen/port_platform.h',
+                              'include/grpc/impl/codegen/propagation_bits.h',
+                              'include/grpc/impl/codegen/slice.h',
+                              'include/grpc/impl/codegen/slice_buffer.h',
+                              'include/grpc/impl/codegen/status.h',
+                              'include/grpc/impl/codegen/sync.h',
+                              'include/grpc/impl/codegen/sync_generic.h',
+                              'include/grpc/impl/codegen/sync_posix.h',
+                              'include/grpc/impl/codegen/sync_win32.h',
+                              'include/grpc/impl/codegen/time.h',
+                              'include/grpc/status.h',
+                              'include/grpc/support/alloc.h',
+                              'include/grpc/support/atm.h',
+                              'include/grpc/support/host_port.h',
+                              'include/grpc/support/log.h',
+                              'include/grpc/support/port_platform.h',
+                              'include/grpc/support/slice.h',
+                              'include/grpc/support/slice_buffer.h',
+                              'include/grpc/support/string_util.h',
+                              'include/grpc/support/sync.h',
+                              'include/grpc/support/time.h',
+                              'include/grpc/support/useful.h',
+                              'src/core/lib/support/string.h',
+                              'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
                               'third_party/nanopb/pb.h',
diff --git a/grpc.def b/grpc.def
index 61948ed1b8..09a94a6cd0 100644
--- a/grpc.def
+++ b/grpc.def
@@ -87,6 +87,7 @@ EXPORTS
     grpc_header_nonbin_value_is_legal
     grpc_is_binary_header
     grpc_call_error_to_string
+    grpc_cronet_secure_channel_create
     grpc_auth_property_iterator_next
     grpc_auth_context_property_iterator
     grpc_auth_context_peer_identity
diff --git a/grpc.gemspec b/grpc.gemspec
index 240ea1ca1f..2d5045faba 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -169,6 +169,7 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/impl/codegen/sync_posix.h )
   s.files += %w( include/grpc/impl/codegen/sync_win32.h )
   s.files += %w( include/grpc/impl/codegen/time.h )
+  s.files += %w( include/grpc/grpc_cronet.h )
   s.files += %w( include/grpc/grpc_security.h )
   s.files += %w( include/grpc/grpc_security_constants.h )
   s.files += %w( include/grpc/census.h )
@@ -296,6 +297,42 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
   s.files += %w( src/core/ext/client_config/subchannel_index.h )
   s.files += %w( src/core/ext/client_config/uri_parser.h )
+  s.files += %w( include/grpc/byte_buffer.h )
+  s.files += %w( include/grpc/grpc.h )
+  s.files += %w( include/grpc/impl/codegen/alloc.h )
+  s.files += %w( include/grpc/impl/codegen/atm.h )
+  s.files += %w( include/grpc/impl/codegen/atm_gcc_atomic.h )
+  s.files += %w( include/grpc/impl/codegen/atm_gcc_sync.h )
+  s.files += %w( include/grpc/impl/codegen/atm_win32.h )
+  s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
+  s.files += %w( include/grpc/impl/codegen/compression_types.h )
+  s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
+  s.files += %w( include/grpc/impl/codegen/grpc_types.h )
+  s.files += %w( include/grpc/impl/codegen/log.h )
+  s.files += %w( include/grpc/impl/codegen/port_platform.h )
+  s.files += %w( include/grpc/impl/codegen/propagation_bits.h )
+  s.files += %w( include/grpc/impl/codegen/slice.h )
+  s.files += %w( include/grpc/impl/codegen/slice_buffer.h )
+  s.files += %w( include/grpc/impl/codegen/status.h )
+  s.files += %w( include/grpc/impl/codegen/sync.h )
+  s.files += %w( include/grpc/impl/codegen/sync_generic.h )
+  s.files += %w( include/grpc/impl/codegen/sync_posix.h )
+  s.files += %w( include/grpc/impl/codegen/sync_win32.h )
+  s.files += %w( include/grpc/impl/codegen/time.h )
+  s.files += %w( include/grpc/status.h )
+  s.files += %w( include/grpc/support/alloc.h )
+  s.files += %w( include/grpc/support/atm.h )
+  s.files += %w( include/grpc/support/host_port.h )
+  s.files += %w( include/grpc/support/log.h )
+  s.files += %w( include/grpc/support/port_platform.h )
+  s.files += %w( include/grpc/support/slice.h )
+  s.files += %w( include/grpc/support/slice_buffer.h )
+  s.files += %w( include/grpc/support/string_util.h )
+  s.files += %w( include/grpc/support/sync.h )
+  s.files += %w( include/grpc/support/time.h )
+  s.files += %w( include/grpc/support/useful.h )
+  s.files += %w( src/core/lib/support/string.h )
+  s.files += %w( third_party/objective_c/Cronet/cronet_c_for_grpc.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h )
   s.files += %w( third_party/nanopb/pb.h )
@@ -454,6 +491,9 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/uri_parser.c )
   s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
   s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
+  s.files += %w( src/core/ext/transport/cronet/client/secure/cronet_channel_create.c )
+  s.files += %w( src/core/ext/transport/cronet/transport/cronet_api_dummy.c )
+  s.files += %w( src/core/ext/transport/cronet/transport/cronet_transport.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c )
   s.files += %w( third_party/nanopb/pb_common.c )
diff --git a/include/grpc/grpc_cronet.h b/include/grpc/grpc_cronet.h
new file mode 100644
index 0000000000..295e0f55e8
--- /dev/null
+++ b/include/grpc/grpc_cronet.h
@@ -0,0 +1,51 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_GRPC_CRONET_H
+#define GRPC_GRPC_CRONET_H
+
+#include <grpc/grpc.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
+    void *engine, const char *target, const grpc_channel_args *args,
+    void *reserved);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GRPC_GRPC_CRONET_H */
diff --git a/package.xml b/package.xml
index 4c159e6024..cf11ea8f07 100644
--- a/package.xml
+++ b/package.xml
@@ -176,6 +176,7 @@
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/grpc_cronet.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/grpc_security_constants.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/census.h" role="src" />
@@ -303,6 +304,42 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/byte_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/alloc.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_win32.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/log.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_generic.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/alloc.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/atm.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/host_port.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/log.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/port_platform.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/slice.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/slice_buffer.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/string_util.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/sync.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/time.h" role="src" />
+    <file baseinstalldir="/" name="include/grpc/support/useful.h" role="src" />
+    <file baseinstalldir="/" name="src/core/lib/support/string.h" role="src" />
+    <file baseinstalldir="/" name="third_party/objective_c/Cronet/cronet_c_for_grpc.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb.h" role="src" />
@@ -461,6 +498,9 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/cronet/client/secure/cronet_channel_create.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_api_dummy.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/cronet/transport/cronet_transport.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
diff --git a/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
new file mode 100644
index 0000000000..df1acddcc0
--- /dev/null
+++ b/src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
@@ -0,0 +1,69 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <grpc/impl/codegen/port_platform.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/transport/transport_impl.h"
+
+// Cronet transport object
+typedef struct cronet_transport {
+  grpc_transport base;  // must be first element in this structure
+  void *engine;
+  char *host;
+} cronet_transport;
+
+extern grpc_transport_vtable grpc_cronet_vtable;
+
+GRPCAPI grpc_channel *grpc_cronet_secure_channel_create(
+    void *engine, const char *target, const grpc_channel_args *args,
+    void *reserved) {
+  cronet_transport *ct = gpr_malloc(sizeof(cronet_transport));
+  ct->base.vtable = &grpc_cronet_vtable;
+  ct->engine = engine;
+  ct->host = gpr_malloc(strlen(target) + 1);
+  strcpy(ct->host, target);
+  gpr_log(GPR_DEBUG,
+          "grpc_create_cronet_transport: cronet_engine = %p, target=%s", engine,
+          ct->host);
+
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  return grpc_channel_create(&exec_ctx, target, args,
+                             GRPC_CLIENT_DIRECT_CHANNEL, (grpc_transport *)ct);
+}
diff --git a/src/core/ext/transport/cronet/transport/cronet_api_dummy.c b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
new file mode 100644
index 0000000000..687026c9fd
--- /dev/null
+++ b/src/core/ext/transport/cronet/transport/cronet_api_dummy.c
@@ -0,0 +1,85 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* This file has empty implementation of all the functions exposed by the cronet
+library, so we can build it in all environments */
+
+#include <stdbool.h>
+
+#include <grpc/support/log.h>
+
+#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
+
+#ifdef GRPC_COMPILE_WITH_CRONET
+/* link with the real CRONET library in the build system */
+#else
+/* Dummy implementation of cronet API just to test for build-ability */
+cronet_bidirectional_stream* cronet_bidirectional_stream_create(
+    cronet_engine* engine, void* annotation,
+    cronet_bidirectional_stream_callback* callback) {
+  GPR_ASSERT(0);
+  return NULL;
+}
+
+int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_start(
+    cronet_bidirectional_stream* stream, const char* url, int priority,
+    const char* method, const cronet_bidirectional_stream_header_array* headers,
+    bool end_of_stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
+                                     char* buffer, int capacity) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
+                                      const char* buffer, int count,
+                                      bool end_of_stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream) {
+  GPR_ASSERT(0);
+  return 0;
+}
+
+#endif /* GRPC_COMPILE_WITH_CRONET */
diff --git a/src/core/ext/transport/cronet/transport/cronet_transport.c b/src/core/ext/transport/cronet/transport/cronet_transport.c
new file mode 100644
index 0000000000..5bb085195c
--- /dev/null
+++ b/src/core/ext/transport/cronet/transport/cronet_transport.c
@@ -0,0 +1,640 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <string.h>
+
+#include <grpc/impl/codegen/port_platform.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/host_port.h>
+#include <grpc/support/log.h>
+#include <grpc/support/slice_buffer.h>
+#include <grpc/support/string_util.h>
+#include <grpc/support/useful.h>
+
+#include "src/core/ext/transport/chttp2/transport/incoming_metadata.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/support/string.h"
+#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport_impl.h"
+#include "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
+
+#define GRPC_HEADER_SIZE_IN_BYTES 5
+
+// Global flag that gets set with GRPC_TRACE env variable
+int grpc_cronet_trace = 1;
+
+// Cronet transport object
+struct grpc_cronet_transport {
+  grpc_transport base; /* must be first element in this structure */
+  cronet_engine *engine;
+  char *host;
+};
+
+typedef struct grpc_cronet_transport grpc_cronet_transport;
+
+enum send_state {
+  CRONET_SEND_IDLE = 0,
+  CRONET_REQ_STARTED,
+  CRONET_SEND_HEADER,
+  CRONET_WRITE,
+  CRONET_WRITE_COMPLETED,
+};
+
+enum recv_state {
+  CRONET_RECV_IDLE = 0,
+  CRONET_RECV_READ_LENGTH,
+  CRONET_RECV_READ_DATA,
+  CRONET_RECV_CLOSED,
+};
+
+static const char *recv_state_name[] = {
+    "CRONET_RECV_IDLE", "CRONET_RECV_READ_LENGTH", "CRONET_RECV_READ_DATA,",
+    "CRONET_RECV_CLOSED"};
+
+// Enum that identifies calling function.
+enum e_caller {
+  PERFORM_STREAM_OP,
+  ON_READ_COMPLETE,
+  ON_RESPONSE_HEADERS_RECEIVED,
+  ON_RESPONSE_TRAILERS_RECEIVED
+};
+
+enum callback_id {
+  CB_SEND_INITIAL_METADATA = 0,
+  CB_SEND_MESSAGE,
+  CB_SEND_TRAILING_METADATA,
+  CB_RECV_MESSAGE,
+  CB_RECV_INITIAL_METADATA,
+  CB_RECV_TRAILING_METADATA,
+  CB_NUM_CALLBACKS
+};
+
+struct stream_obj {
+  // we store received bytes here as they trickle in.
+  gpr_slice_buffer write_slice_buffer;
+  cronet_bidirectional_stream *cbs;
+  gpr_slice slice;
+  gpr_slice_buffer read_slice_buffer;
+  struct grpc_slice_buffer_stream sbs;
+  char *read_buffer;
+  int remaining_read_bytes;
+  int total_read_bytes;
+
+  char *write_buffer;
+  size_t write_buffer_size;
+
+  // Hold the URL
+  char *url;
+
+  bool response_headers_received;
+  bool read_requested;
+  bool response_trailers_received;
+  bool read_closed;
+
+  // Recv message stuff
+  grpc_byte_buffer **recv_message;
+  // Initial metadata stuff
+  grpc_metadata_batch *recv_initial_metadata;
+  // Trailing metadata stuff
+  grpc_metadata_batch *recv_trailing_metadata;
+  grpc_chttp2_incoming_metadata_buffer imb;
+
+  // This mutex protects receive state machine execution
+  gpr_mu recv_mu;
+  // we can queue up up to 2 callbacks for each OP
+  grpc_closure *callback_list[CB_NUM_CALLBACKS][2];
+
+  // storage for header
+  cronet_bidirectional_stream_header *headers;
+  uint32_t num_headers;
+  cronet_bidirectional_stream_header_array header_array;
+  // state tracking
+  enum recv_state cronet_recv_state;
+  enum send_state cronet_send_state;
+};
+
+typedef struct stream_obj stream_obj;
+
+static void next_send_step(stream_obj *s);
+static void next_recv_step(stream_obj *s, enum e_caller caller);
+
+static void set_pollset_do_nothing(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                                   grpc_stream *gs, grpc_pollset *pollset) {}
+
+static void enqueue_callbacks(grpc_closure *callback_list[]) {
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  if (callback_list[0]) {
+    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[0], true, NULL);
+    callback_list[0] = NULL;
+  }
+  if (callback_list[1]) {
+    grpc_exec_ctx_enqueue(&exec_ctx, callback_list[1], true, NULL);
+    callback_list[1] = NULL;
+  }
+  grpc_exec_ctx_finish(&exec_ctx);
+}
+
+static void on_canceled(cronet_bidirectional_stream *stream) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "on_canceled %p", stream);
+  }
+}
+
+static void on_failed(cronet_bidirectional_stream *stream, int net_error) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "on_failed %p, error = %d", stream, net_error);
+  }
+}
+
+static void on_succeeded(cronet_bidirectional_stream *stream) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "on_succeeded %p", stream);
+  }
+}
+
+static void on_response_trailers_received(
+    cronet_bidirectional_stream *stream,
+    const cronet_bidirectional_stream_header_array *trailers) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "R: on_response_trailers_received");
+  }
+  stream_obj *s = (stream_obj *)stream->annotation;
+
+  memset(&s->imb, 0, sizeof(s->imb));
+  grpc_chttp2_incoming_metadata_buffer_init(&s->imb);
+  unsigned int i = 0;
+  for (i = 0; i < trailers->count; i++) {
+    grpc_chttp2_incoming_metadata_buffer_add(
+        &s->imb, grpc_mdelem_from_metadata_strings(
+                     grpc_mdstr_from_string(trailers->headers[i].key),
+                     grpc_mdstr_from_string(trailers->headers[i].value)));
+  }
+  s->response_trailers_received = true;
+  next_recv_step(s, ON_RESPONSE_TRAILERS_RECEIVED);
+}
+
+static void on_write_completed(cronet_bidirectional_stream *stream,
+                               const char *data) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "W: on_write_completed");
+  }
+  stream_obj *s = (stream_obj *)stream->annotation;
+  enqueue_callbacks(s->callback_list[CB_SEND_MESSAGE]);
+  s->cronet_send_state = CRONET_WRITE_COMPLETED;
+  next_send_step(s);
+}
+
+static void process_recv_message(stream_obj *s, const uint8_t *recv_data) {
+  gpr_slice read_data_slice = gpr_slice_malloc((uint32_t)s->total_read_bytes);
+  uint8_t *dst_p = GPR_SLICE_START_PTR(read_data_slice);
+  memcpy(dst_p, recv_data, (size_t)s->total_read_bytes);
+  gpr_slice_buffer_add(&s->read_slice_buffer, read_data_slice);
+  grpc_slice_buffer_stream_init(&s->sbs, &s->read_slice_buffer, 0);
+  *s->recv_message = (grpc_byte_buffer *)&s->sbs;
+}
+
+static int parse_grpc_header(const uint8_t *data) {
+  const uint8_t *p = data + 1;
+  int length = 0;
+  length |= ((uint8_t)*p++) << 24;
+  length |= ((uint8_t)*p++) << 16;
+  length |= ((uint8_t)*p++) << 8;
+  length |= ((uint8_t)*p++);
+  return length;
+}
+
+static void on_read_completed(cronet_bidirectional_stream *stream, char *data,
+                              int count) {
+  stream_obj *s = (stream_obj *)stream->annotation;
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "R: on_read_completed count=%d, total=%d, remaining=%d",
+            count, s->total_read_bytes, s->remaining_read_bytes);
+  }
+  if (count > 0) {
+    GPR_ASSERT(s->recv_message);
+    s->remaining_read_bytes -= count;
+    next_recv_step(s, ON_READ_COMPLETE);
+  } else {
+    s->read_closed = true;
+    next_recv_step(s, ON_READ_COMPLETE);
+  }
+}
+
+static void on_response_headers_received(
+    cronet_bidirectional_stream *stream,
+    const cronet_bidirectional_stream_header_array *headers,
+    const char *negotiated_protocol) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "R: on_response_headers_received");
+  }
+  stream_obj *s = (stream_obj *)stream->annotation;
+  enqueue_callbacks(s->callback_list[CB_RECV_INITIAL_METADATA]);
+  s->response_headers_received = true;
+  next_recv_step(s, ON_RESPONSE_HEADERS_RECEIVED);
+}
+
+static void on_request_headers_sent(cronet_bidirectional_stream *stream) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "W: on_request_headers_sent");
+  }
+  stream_obj *s = (stream_obj *)stream->annotation;
+  enqueue_callbacks(s->callback_list[CB_SEND_INITIAL_METADATA]);
+  s->cronet_send_state = CRONET_SEND_HEADER;
+  next_send_step(s);
+}
+
+// Callback function pointers (invoked by cronet in response to events)
+static cronet_bidirectional_stream_callback callbacks = {
+    on_request_headers_sent,
+    on_response_headers_received,
+    on_read_completed,
+    on_write_completed,
+    on_response_trailers_received,
+    on_succeeded,
+    on_failed,
+    on_canceled};
+
+static void invoke_closing_callback(stream_obj *s) {
+  grpc_chttp2_incoming_metadata_buffer_publish(&s->imb,
+                                               s->recv_trailing_metadata);
+  if (s->callback_list[CB_RECV_TRAILING_METADATA]) {
+    enqueue_callbacks(s->callback_list[CB_RECV_TRAILING_METADATA]);
+  }
+}
+
+static void set_recv_state(stream_obj *s, enum recv_state state) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "next_state = %s", recv_state_name[state]);
+  }
+  s->cronet_recv_state = state;
+}
+
+// This is invoked from perform_stream_op, and all on_xxxx callbacks.
+static void next_recv_step(stream_obj *s, enum e_caller caller) {
+  gpr_mu_lock(&s->recv_mu);
+  switch (s->cronet_recv_state) {
+    case CRONET_RECV_IDLE:
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_IDLE");
+      }
+      if (caller == PERFORM_STREAM_OP ||
+          caller == ON_RESPONSE_HEADERS_RECEIVED) {
+        if (s->read_closed && s->response_trailers_received) {
+          invoke_closing_callback(s);
+          set_recv_state(s, CRONET_RECV_CLOSED);
+        } else if (s->response_headers_received == true &&
+                   s->read_requested == true) {
+          set_recv_state(s, CRONET_RECV_READ_LENGTH);
+          s->total_read_bytes = s->remaining_read_bytes =
+              GRPC_HEADER_SIZE_IN_BYTES;
+          GPR_ASSERT(s->read_buffer);
+          if (grpc_cronet_trace) {
+            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
+          }
+          cronet_bidirectional_stream_read(s->cbs, s->read_buffer,
+                                           s->remaining_read_bytes);
+        }
+      }
+      break;
+    case CRONET_RECV_READ_LENGTH:
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_LENGTH");
+      }
+      if (caller == ON_READ_COMPLETE) {
+        if (s->read_closed) {
+          invoke_closing_callback(s);
+          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
+          set_recv_state(s, CRONET_RECV_CLOSED);
+        } else {
+          GPR_ASSERT(s->remaining_read_bytes == 0);
+          set_recv_state(s, CRONET_RECV_READ_DATA);
+          s->total_read_bytes = s->remaining_read_bytes =
+              parse_grpc_header((const uint8_t *)s->read_buffer);
+          s->read_buffer =
+              gpr_realloc(s->read_buffer, (uint32_t)s->remaining_read_bytes);
+          GPR_ASSERT(s->read_buffer);
+          if (grpc_cronet_trace) {
+            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
+          }
+          cronet_bidirectional_stream_read(s->cbs, (char *)s->read_buffer,
+                                           s->remaining_read_bytes);
+        }
+      }
+      break;
+    case CRONET_RECV_READ_DATA:
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_recv_state = CRONET_RECV_READ_DATA");
+      }
+      if (caller == ON_READ_COMPLETE) {
+        if (s->remaining_read_bytes > 0) {
+          int offset = s->total_read_bytes - s->remaining_read_bytes;
+          GPR_ASSERT(s->read_buffer);
+          if (grpc_cronet_trace) {
+            gpr_log(GPR_DEBUG, "R: cronet_bidirectional_stream_read()");
+          }
+          cronet_bidirectional_stream_read(
+              s->cbs, (char *)s->read_buffer + offset, s->remaining_read_bytes);
+        } else {
+          gpr_slice_buffer_init(&s->read_slice_buffer);
+          uint8_t *p = (uint8_t *)s->read_buffer;
+          process_recv_message(s, p);
+          set_recv_state(s, CRONET_RECV_IDLE);
+          enqueue_callbacks(s->callback_list[CB_RECV_MESSAGE]);
+        }
+      }
+      break;
+    case CRONET_RECV_CLOSED:
+      break;
+    default:
+      GPR_ASSERT(0);  // Should not reach here
+      break;
+  }
+  gpr_mu_unlock(&s->recv_mu);
+}
+
+// This function takes the data from s->write_slice_buffer and assembles into
+// a contiguous byte stream with 5 byte gRPC header prepended.
+static void create_grpc_frame(stream_obj *s) {
+  gpr_slice slice = gpr_slice_buffer_take_first(&s->write_slice_buffer);
+  uint8_t *raw_data = GPR_SLICE_START_PTR(slice);
+  size_t length = GPR_SLICE_LENGTH(slice);
+  s->write_buffer_size = length + GRPC_HEADER_SIZE_IN_BYTES;
+  s->write_buffer = gpr_realloc(s->write_buffer, s->write_buffer_size);
+  uint8_t *p = (uint8_t *)s->write_buffer;
+  // Append 5 byte header
+  *p++ = 0;
+  *p++ = (uint8_t)(length >> 24);
+  *p++ = (uint8_t)(length >> 16);
+  *p++ = (uint8_t)(length >> 8);
+  *p++ = (uint8_t)(length);
+  // append actual data
+  memcpy(p, raw_data, length);
+}
+
+static void do_write(stream_obj *s) {
+  gpr_slice_buffer *sb = &s->write_slice_buffer;
+  GPR_ASSERT(sb->count <= 1);
+  if (sb->count > 0) {
+    create_grpc_frame(s);
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+    }
+    cronet_bidirectional_stream_write(s->cbs, s->write_buffer,
+                                      (int)s->write_buffer_size, false);
+  }
+}
+
+//
+static void next_send_step(stream_obj *s) {
+  switch (s->cronet_send_state) {
+    case CRONET_SEND_IDLE:
+      GPR_ASSERT(
+          s->cbs);  // cronet_bidirectional_stream is not initialized yet.
+      s->cronet_send_state = CRONET_REQ_STARTED;
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_start to %s", s->url);
+      }
+      cronet_bidirectional_stream_start(s->cbs, s->url, 0, "POST",
+                                        &s->header_array, false);
+      // we no longer need the memory that was allocated earlier.
+      gpr_free(s->header_array.headers);
+      break;
+    case CRONET_SEND_HEADER:
+      do_write(s);
+      s->cronet_send_state = CRONET_WRITE;
+      break;
+    case CRONET_WRITE_COMPLETED:
+      do_write(s);
+      break;
+    default:
+      GPR_ASSERT(0);
+      break;
+  }
+}
+
+static void convert_metadata_to_cronet_headers(grpc_linked_mdelem *head,
+                                               const char *host,
+                                               stream_obj *s) {
+  grpc_linked_mdelem *curr = head;
+  // Walk the linked list and get number of header fields
+  uint32_t num_headers_available = 0;
+  while (curr != NULL) {
+    curr = curr->next;
+    num_headers_available++;
+  }
+  // Allocate enough memory
+  s->headers = (cronet_bidirectional_stream_header *)gpr_malloc(
+      sizeof(cronet_bidirectional_stream_header) * num_headers_available);
+
+  // Walk the linked list again, this time copying the header fields.
+  // s->num_headers
+  // can be less than num_headers_available, as some headers are not used for
+  // cronet
+  curr = head;
+  s->num_headers = 0;
+  while (s->num_headers < num_headers_available) {
+    grpc_mdelem *mdelem = curr->md;
+    curr = curr->next;
+    const char *key = grpc_mdstr_as_c_string(mdelem->key);
+    const char *value = grpc_mdstr_as_c_string(mdelem->value);
+    if (strcmp(key, ":scheme") == 0 || strcmp(key, ":method") == 0 ||
+        strcmp(key, ":authority") == 0) {
+      // Cronet populates these fields on its own.
+      continue;
+    }
+    if (strcmp(key, ":path") == 0) {
+      // Create URL by appending :path value to the hostname
+      gpr_asprintf(&s->url, "https://%s%s", host, value);
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "extracted URL = %s", s->url);
+      }
+      continue;
+    }
+    s->headers[s->num_headers].key = key;
+    s->headers[s->num_headers].value = value;
+    s->num_headers++;
+    if (curr == NULL) {
+      break;
+    }
+  }
+}
+
+static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                              grpc_stream *gs, grpc_transport_stream_op *op) {
+  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
+  GPR_ASSERT(ct->engine);
+  stream_obj *s = (stream_obj *)gs;
+  if (op->recv_trailing_metadata) {
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG,
+              "perform_stream_op - recv_trailing_metadata: on_complete=%p",
+              op->on_complete);
+    }
+    s->recv_trailing_metadata = op->recv_trailing_metadata;
+    GPR_ASSERT(!s->callback_list[CB_RECV_TRAILING_METADATA][0]);
+    s->callback_list[CB_RECV_TRAILING_METADATA][0] = op->on_complete;
+  }
+  if (op->recv_message) {
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "perform_stream_op - recv_message: on_complete=%p",
+              op->on_complete);
+    }
+    s->recv_message = (grpc_byte_buffer **)op->recv_message;
+    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][0]);
+    GPR_ASSERT(!s->callback_list[CB_RECV_MESSAGE][1]);
+    s->callback_list[CB_RECV_MESSAGE][0] = op->recv_message_ready;
+    s->callback_list[CB_RECV_MESSAGE][1] = op->on_complete;
+    s->read_requested = true;
+    next_recv_step(s, PERFORM_STREAM_OP);
+  }
+  if (op->recv_initial_metadata) {
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "perform_stream_op - recv_initial_metadata:=%p",
+              op->on_complete);
+    }
+    s->recv_initial_metadata = op->recv_initial_metadata;
+    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][0]);
+    GPR_ASSERT(!s->callback_list[CB_RECV_INITIAL_METADATA][1]);
+    s->callback_list[CB_RECV_INITIAL_METADATA][0] =
+        op->recv_initial_metadata_ready;
+    s->callback_list[CB_RECV_INITIAL_METADATA][1] = op->on_complete;
+  }
+  if (op->send_initial_metadata) {
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG,
+              "perform_stream_op - send_initial_metadata: on_complete=%p",
+              op->on_complete);
+    }
+    s->num_headers = 0;
+    convert_metadata_to_cronet_headers(op->send_initial_metadata->list.head,
+                                       ct->host, s);
+    s->header_array.count = s->num_headers;
+    s->header_array.capacity = s->num_headers;
+    s->header_array.headers = s->headers;
+    GPR_ASSERT(!s->callback_list[CB_SEND_INITIAL_METADATA][0]);
+    s->callback_list[CB_SEND_INITIAL_METADATA][0] = op->on_complete;
+  }
+  if (op->send_message) {
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG, "perform_stream_op - send_message: on_complete=%p",
+              op->on_complete);
+    }
+    grpc_byte_stream_next(exec_ctx, op->send_message, &s->slice,
+                          op->send_message->length, NULL);
+    // Check that compression flag is not ON. We don't support compression yet.
+    // TODO (makdharma): add compression support
+    GPR_ASSERT(op->send_message->flags == 0);
+    gpr_slice_buffer_add(&s->write_slice_buffer, s->slice);
+    if (s->cbs == NULL) {
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "cronet_bidirectional_stream_create");
+      }
+      s->cbs = cronet_bidirectional_stream_create(ct->engine, s, &callbacks);
+      GPR_ASSERT(s->cbs);
+      s->read_closed = false;
+      s->response_trailers_received = false;
+      s->response_headers_received = false;
+      s->cronet_send_state = CRONET_SEND_IDLE;
+      s->cronet_recv_state = CRONET_RECV_IDLE;
+    }
+    GPR_ASSERT(!s->callback_list[CB_SEND_MESSAGE][0]);
+    s->callback_list[CB_SEND_MESSAGE][0] = op->on_complete;
+    next_send_step(s);
+  }
+  if (op->send_trailing_metadata) {
+    if (grpc_cronet_trace) {
+      gpr_log(GPR_DEBUG,
+              "perform_stream_op - send_trailing_metadata: on_complete=%p",
+              op->on_complete);
+    }
+    GPR_ASSERT(!s->callback_list[CB_SEND_TRAILING_METADATA][0]);
+    s->callback_list[CB_SEND_TRAILING_METADATA][0] = op->on_complete;
+    if (s->cbs) {
+      // Send an "empty" write to the far end to signal that we're done.
+      // This will induce the server to send down trailers.
+      if (grpc_cronet_trace) {
+        gpr_log(GPR_DEBUG, "W: cronet_bidirectional_stream_write");
+      }
+      cronet_bidirectional_stream_write(s->cbs, "abc", 0, true);
+    } else {
+      // We never created a stream. This was probably an empty request.
+      invoke_closing_callback(s);
+    }
+  }
+}
+
+static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                       grpc_stream *gs, grpc_stream_refcount *refcount,
+                       const void *server_data) {
+  stream_obj *s = (stream_obj *)gs;
+  memset(s->callback_list, 0, sizeof(s->callback_list));
+  s->cbs = NULL;
+  gpr_mu_init(&s->recv_mu);
+  s->read_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
+  s->write_buffer = gpr_malloc(GRPC_HEADER_SIZE_IN_BYTES);
+  gpr_slice_buffer_init(&s->write_slice_buffer);
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "cronet_transport - init_stream");
+  }
+  return 0;
+}
+
+static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
+                           grpc_stream *gs, void *and_free_memory) {
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "Destroy stream");
+  }
+  stream_obj *s = (stream_obj *)gs;
+  s->cbs = NULL;
+  gpr_free(s->read_buffer);
+  gpr_free(s->write_buffer);
+  gpr_free(s->url);
+  gpr_mu_destroy(&s->recv_mu);
+  if (and_free_memory) {
+    gpr_free(and_free_memory);
+  }
+}
+
+static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {
+  grpc_cronet_transport *ct = (grpc_cronet_transport *)gt;
+  gpr_free(ct->host);
+  if (grpc_cronet_trace) {
+    gpr_log(GPR_DEBUG, "Destroy transport");
+  }
+}
+
+const grpc_transport_vtable grpc_cronet_vtable = {
+    sizeof(stream_obj),     "cronet_http",     init_stream,
+    set_pollset_do_nothing, perform_stream_op, NULL,
+    destroy_stream,         destroy_transport, NULL};
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.c b/src/python/grpcio/grpc/_cython/imports.generated.c
index f0a40dbb35..09551472b5 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.c
+++ b/src/python/grpcio/grpc/_cython/imports.generated.c
@@ -125,6 +125,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -395,6 +396,7 @@ void pygrpc_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/python/grpcio/grpc/_cython/imports.generated.h b/src/python/grpcio/grpc/_cython/imports.generated.h
index d5e810b7cf..54c8aaad13 100644
--- a/src/python/grpcio/grpc/_cython/imports.generated.h
+++ b/src/python/grpcio/grpc/_cython/imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -325,6 +326,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
+extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
+#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 4b98dc1a13..c6af69360d 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -222,6 +222,9 @@ CORE_SOURCE_FILES = [
   'src/core/ext/client_config/uri_parser.c',
   'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
   'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+  'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
+  'src/core/ext/transport/cronet/transport/cronet_api_dummy.c',
+  'src/core/ext/transport/cronet/transport/cronet_transport.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
   'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
   'third_party/nanopb/pb_common.c',
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.c b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
index bc43f9d36b..cebbe8c40f 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.c
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.c
@@ -125,6 +125,7 @@ grpc_header_key_is_legal_type grpc_header_key_is_legal_import;
 grpc_header_nonbin_value_is_legal_type grpc_header_nonbin_value_is_legal_import;
 grpc_is_binary_header_type grpc_is_binary_header_import;
 grpc_call_error_to_string_type grpc_call_error_to_string_import;
+grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
 grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 grpc_auth_context_property_iterator_type grpc_auth_context_property_iterator_import;
 grpc_auth_context_peer_identity_type grpc_auth_context_peer_identity_import;
@@ -391,6 +392,7 @@ void grpc_rb_load_imports(HMODULE library) {
   grpc_header_nonbin_value_is_legal_import = (grpc_header_nonbin_value_is_legal_type) GetProcAddress(library, "grpc_header_nonbin_value_is_legal");
   grpc_is_binary_header_import = (grpc_is_binary_header_type) GetProcAddress(library, "grpc_is_binary_header");
   grpc_call_error_to_string_import = (grpc_call_error_to_string_type) GetProcAddress(library, "grpc_call_error_to_string");
+  grpc_cronet_secure_channel_create_import = (grpc_cronet_secure_channel_create_type) GetProcAddress(library, "grpc_cronet_secure_channel_create");
   grpc_auth_property_iterator_next_import = (grpc_auth_property_iterator_next_type) GetProcAddress(library, "grpc_auth_property_iterator_next");
   grpc_auth_context_property_iterator_import = (grpc_auth_context_property_iterator_type) GetProcAddress(library, "grpc_auth_context_property_iterator");
   grpc_auth_context_peer_identity_import = (grpc_auth_context_peer_identity_type) GetProcAddress(library, "grpc_auth_context_peer_identity");
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index b67361ca25..d7ea6c574c 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -43,6 +43,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/impl/codegen/alloc.h>
 #include <grpc/impl/codegen/byte_buffer.h>
@@ -325,6 +326,9 @@ extern grpc_is_binary_header_type grpc_is_binary_header_import;
 typedef const char *(*grpc_call_error_to_string_type)(grpc_call_error error);
 extern grpc_call_error_to_string_type grpc_call_error_to_string_import;
 #define grpc_call_error_to_string grpc_call_error_to_string_import
+typedef grpc_channel *(*grpc_cronet_secure_channel_create_type)(void *engine, const char *target, const grpc_channel_args *args, void *reserved);
+extern grpc_cronet_secure_channel_create_type grpc_cronet_secure_channel_create_import;
+#define grpc_cronet_secure_channel_create grpc_cronet_secure_channel_create_import
 typedef const grpc_auth_property *(*grpc_auth_property_iterator_next_type)(grpc_auth_property_iterator *it);
 extern grpc_auth_property_iterator_next_type grpc_auth_property_iterator_next_import;
 #define grpc_auth_property_iterator_next grpc_auth_property_iterator_next_import
diff --git a/test/core/surface/public_headers_must_be_c89.c b/test/core/surface/public_headers_must_be_c89.c
index 3eeb55d033..fd6ff2c26f 100644
--- a/test/core/surface/public_headers_must_be_c89.c
+++ b/test/core/surface/public_headers_must_be_c89.c
@@ -36,6 +36,7 @@
 #include <grpc/census.h>
 #include <grpc/compression.h>
 #include <grpc/grpc.h>
+#include <grpc/grpc_cronet.h>
 #include <grpc/grpc_security.h>
 #include <grpc/grpc_security_constants.h>
 #include <grpc/impl/codegen/alloc.h>
diff --git a/third_party/objective_c/Cronet/cronet_c_for_grpc.h b/third_party/objective_c/Cronet/cronet_c_for_grpc.h
new file mode 100644
index 0000000000..15a511aebd
--- /dev/null
+++ b/third_party/objective_c/Cronet/cronet_c_for_grpc.h
@@ -0,0 +1,202 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
+#define COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+
+/* Cronet Engine API. */
+
+/* Opaque object representing Cronet Engine. Created and configured outside
+ * of this API to facilitate sharing with other components */
+typedef struct cronet_engine { void* obj; } cronet_engine;
+
+void cronet_engine_add_quic_hint(cronet_engine* engine,
+                                 const char* host,
+                                 int port,
+                                 int alternate_port);
+
+/* Cronet Bidirectional Stream API */
+
+/* Opaque object representing Cronet Bidirectional Stream. */
+typedef struct cronet_bidirectional_stream {
+  void* obj;
+  void* annotation;
+} cronet_bidirectional_stream;
+
+/* A single request or response header element. */
+typedef struct cronet_bidirectional_stream_header {
+  const char* key;
+  const char* value;
+} cronet_bidirectional_stream_header;
+
+/* Array of request or response headers or trailers. */
+typedef struct cronet_bidirectional_stream_header_array {
+  size_t count;
+  size_t capacity;
+  cronet_bidirectional_stream_header* headers;
+} cronet_bidirectional_stream_header_array;
+
+/* Set of callbacks used to receive callbacks from bidirectional stream. */
+typedef struct cronet_bidirectional_stream_callback {
+  /* Invoked when request headers are sent. Indicates that stream has initiated
+   * the request. Consumer may call cronet_bidirectional_stream_write() to start
+   * writing data.
+   */
+  void (*on_request_headers_sent)(cronet_bidirectional_stream* stream);
+
+  /* Invoked when initial response headers are received.
+   * Consumer must call cronet_bidirectional_stream_read() to start reading.
+   * Consumer may call cronet_bidirectional_stream_write() to start writing or
+   * close the stream. Contents of |headers| is valid for duration of the call.
+   */
+  void (*on_response_headers_received)(
+      cronet_bidirectional_stream* stream,
+      const cronet_bidirectional_stream_header_array* headers,
+      const char* negotiated_protocol);
+
+  /* Invoked when data is read into the buffer passed to
+   * cronet_bidirectional_stream_read(). Only part of the buffer may be
+   * populated. To continue reading, call cronet_bidirectional_stream_read().
+   * It may be invoked after on_response_trailers_received()}, if there was
+   * pending read data before trailers were received.
+   *
+   * If count is 0, it means the remote side has signaled that it will send no
+   * more data; future calls to cronet_bidirectional_stream_read() will result
+   * in the on_data_read() callback or on_succeded() callback if
+   * cronet_bidirectional_stream_write() was invoked with end_of_stream set to
+   * true.
+   */
+  void (*on_read_completed)(cronet_bidirectional_stream* stream,
+                            char* data,
+                            int count);
+
+  /**
+   * Invoked when all data passed to cronet_bidirectional_stream_write() is
+   * sent.
+   * To continue writing, call cronet_bidirectional_stream_write().
+   */
+  void (*on_write_completed)(cronet_bidirectional_stream* stream,
+                             const char* data);
+
+  /* Invoked when trailers are received before closing the stream. Only invoked
+   * when server sends trailers, which it may not. May be invoked while there is
+   * read data remaining in local buffer. Contents of |trailers| is valid for
+   * duration of the call.
+   */
+  void (*on_response_trailers_received)(
+      cronet_bidirectional_stream* stream,
+      const cronet_bidirectional_stream_header_array* trailers);
+
+  /**
+   * Invoked when there is no data to be read or written and the stream is
+   * closed successfully remotely and locally. Once invoked, no further callback
+   * methods will be invoked.
+   */
+  void (*on_succeded)(cronet_bidirectional_stream* stream);
+
+  /**
+   * Invoked if the stream failed for any reason after
+   * cronet_bidirectional_stream_start(). HTTP/2 error codes are
+   * mapped to chrome net error codes. Once invoked, no further callback methods
+   * will be invoked.
+   */
+  void (*on_failed)(cronet_bidirectional_stream* stream, int net_error);
+
+  /**
+   * Invoked if the stream was canceled via
+   * cronet_bidirectional_stream_cancel(). Once invoked, no further callback
+   * methods will be invoked.
+   */
+  void (*on_canceled)(cronet_bidirectional_stream* stream);
+} cronet_bidirectional_stream_callback;
+
+/* Create a new stream object that uses |engine| and |callback|. All stream
+ * tasks are performed asynchronously on the |engine| network thread. |callback|
+ * methods are invoked synchronously on the |engine| network thread, but must
+ * not run tasks on the current thread to prevent blocking networking operations
+ * and causing exceptions during shutdown. The |annotation| is stored in
+ * bidirectional stream for arbitrary use by application.
+ *
+ * Returned |cronet_bidirectional_stream*| is owned by the caller, and must be
+ * destroyed using |cronet_bidirectional_stream_destroy|.
+ *
+ * Both |calback| and |engine| must remain valid until stream is destroyed.
+ */
+cronet_bidirectional_stream* cronet_bidirectional_stream_create(
+    cronet_engine* engine,
+    void* annotation,
+    cronet_bidirectional_stream_callback* callback);
+
+/* TBD: The following methods return int. Should it be a custom type? */
+
+/* Destroy stream object. Destroy could be called from any thread, including
+ * network thread, but is posted, so |stream| is valid until calling task is
+ * complete.
+ */
+int cronet_bidirectional_stream_destroy(cronet_bidirectional_stream* stream);
+
+/* Start the stream by sending request to |url| using |method| and |headers|. If
+ * |end_of_stream| is true, then no data is expected to be written.
+ */
+int cronet_bidirectional_stream_start(
+    cronet_bidirectional_stream* stream,
+    const char* url,
+    int priority,
+    const char* method,
+    const cronet_bidirectional_stream_header_array* headers,
+    bool end_of_stream);
+
+/* Read response data into |buffer| of |capacity| length. Must only be called at
+ * most once in response to each invocation of the
+ * on_response_headers_received() and on_read_completed() methods of the
+ * cronet_bidirectional_stream_callback.
+ * Each call will result in an invocation of one of the callback's
+ * on_read_completed  method if data is read, its on_succeeded() method if
+ * the stream is closed, or its on_failed() method if there's an error.
+ */
+int cronet_bidirectional_stream_read(cronet_bidirectional_stream* stream,
+                                     char* buffer,
+                                     int capacity);
+
+/* Read response data into |buffer| of |capacity| length. Must only be called at
+ * most once in response to each invocation of the
+ * on_response_headers_received() and on_read_completed() methods of the
+ * cronet_bidirectional_stream_callback.
+ * Each call will result in an invocation of one of the callback's
+ * on_read_completed  method if data is read, its on_succeeded() method if
+ * the stream is closed, or its on_failed() method if there's an error.
+ */
+int cronet_bidirectional_stream_write(cronet_bidirectional_stream* stream,
+                                      const char* buffer,
+                                      int count,
+                                      bool end_of_stream);
+
+/* Cancels the stream. Can be called at any time after
+ * cronet_bidirectional_stream_start(). The on_canceled() method of
+ * cronet_bidirectional_stream_callback will be invoked when cancelation
+ * is complete and no further callback methods will be invoked. If the
+ * stream has completed or has not started, calling
+ * cronet_bidirectional_stream_cancel() has no effect and on_canceled() will not
+ * be  invoked. At most one callback method may be invoked after
+ * cronet_bidirectional_stream_cancel() has completed.
+ */
+int cronet_bidirectional_stream_cancel(cronet_bidirectional_stream* stream);
+
+/* Returns true if the |stream| was successfully started and is now done
+ * (succeeded, canceled, or failed).
+ * Returns false if the |stream| stream is not yet started or is in progress.
+ */
+bool cronet_bidirectional_stream_is_done(cronet_bidirectional_stream* stream);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  // COMPONENTS_CRONET_IOS_CRONET_C_FOR_GRPC_H_
diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core
index eed84252cc..aabca410da 100644
--- a/tools/doxygen/Doxyfile.core
+++ b/tools/doxygen/Doxyfile.core
@@ -786,6 +786,7 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
+include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 7e0d5ebd37..ac919def65 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -786,6 +786,7 @@ include/grpc/impl/codegen/sync_generic.h \
 include/grpc/impl/codegen/sync_posix.h \
 include/grpc/impl/codegen/sync_win32.h \
 include/grpc/impl/codegen/time.h \
+include/grpc/grpc_cronet.h \
 include/grpc/grpc_security.h \
 include/grpc/grpc_security_constants.h \
 include/grpc/census.h \
@@ -913,6 +914,42 @@ src/core/ext/client_config/subchannel.h \
 src/core/ext/client_config/subchannel_call_holder.h \
 src/core/ext/client_config/subchannel_index.h \
 src/core/ext/client_config/uri_parser.h \
+include/grpc/byte_buffer.h \
+include/grpc/grpc.h \
+include/grpc/impl/codegen/alloc.h \
+include/grpc/impl/codegen/atm.h \
+include/grpc/impl/codegen/atm_gcc_atomic.h \
+include/grpc/impl/codegen/atm_gcc_sync.h \
+include/grpc/impl/codegen/atm_win32.h \
+include/grpc/impl/codegen/byte_buffer.h \
+include/grpc/impl/codegen/compression_types.h \
+include/grpc/impl/codegen/connectivity_state.h \
+include/grpc/impl/codegen/grpc_types.h \
+include/grpc/impl/codegen/log.h \
+include/grpc/impl/codegen/port_platform.h \
+include/grpc/impl/codegen/propagation_bits.h \
+include/grpc/impl/codegen/slice.h \
+include/grpc/impl/codegen/slice_buffer.h \
+include/grpc/impl/codegen/status.h \
+include/grpc/impl/codegen/sync.h \
+include/grpc/impl/codegen/sync_generic.h \
+include/grpc/impl/codegen/sync_posix.h \
+include/grpc/impl/codegen/sync_win32.h \
+include/grpc/impl/codegen/time.h \
+include/grpc/status.h \
+include/grpc/support/alloc.h \
+include/grpc/support/atm.h \
+include/grpc/support/host_port.h \
+include/grpc/support/log.h \
+include/grpc/support/port_platform.h \
+include/grpc/support/slice.h \
+include/grpc/support/slice_buffer.h \
+include/grpc/support/string_util.h \
+include/grpc/support/sync.h \
+include/grpc/support/time.h \
+include/grpc/support/useful.h \
+src/core/lib/support/string.h \
+third_party/objective_c/Cronet/cronet_c_for_grpc.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h \
 third_party/nanopb/pb.h \
@@ -1071,6 +1108,9 @@ src/core/ext/client_config/subchannel_index.c \
 src/core/ext/client_config/uri_parser.c \
 src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
 src/core/ext/transport/chttp2/client/insecure/channel_create.c \
+src/core/ext/transport/cronet/client/secure/cronet_channel_create.c \
+src/core/ext/transport/cronet/transport/cronet_api_dummy.c \
+src/core/ext/transport/cronet/transport/cronet_transport.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c \
 third_party/nanopb/pb_common.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 8b1aa574e8..64358400fc 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -4157,7 +4157,8 @@
       "grpc_transport_chttp2_client_insecure", 
       "grpc_transport_chttp2_client_secure", 
       "grpc_transport_chttp2_server_insecure", 
-      "grpc_transport_chttp2_server_secure"
+      "grpc_transport_chttp2_server_secure", 
+      "grpc_transport_cronet_client_secure"
     ], 
     "headers": [], 
     "language": "c", 
@@ -6031,6 +6032,7 @@
       "tsi"
     ], 
     "headers": [
+      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/security/auth_filters.h", 
@@ -6046,6 +6048,7 @@
     "language": "c", 
     "name": "grpc_secure", 
     "src": [
+      "include/grpc/grpc_cronet.h", 
       "include/grpc/grpc_security.h", 
       "include/grpc/grpc_security_constants.h", 
       "src/core/lib/http/httpcli_security_connector.c", 
@@ -6281,6 +6284,121 @@
     "third_party": false, 
     "type": "filegroup"
   }, 
+  {
+    "deps": [], 
+    "headers": [
+      "include/grpc/byte_buffer.h", 
+      "include/grpc/grpc.h", 
+      "include/grpc/impl/codegen/alloc.h", 
+      "include/grpc/impl/codegen/atm.h", 
+      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
+      "include/grpc/impl/codegen/atm_gcc_sync.h", 
+      "include/grpc/impl/codegen/atm_win32.h", 
+      "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/compression_types.h", 
+      "include/grpc/impl/codegen/connectivity_state.h", 
+      "include/grpc/impl/codegen/grpc_types.h", 
+      "include/grpc/impl/codegen/log.h", 
+      "include/grpc/impl/codegen/port_platform.h", 
+      "include/grpc/impl/codegen/propagation_bits.h", 
+      "include/grpc/impl/codegen/slice.h", 
+      "include/grpc/impl/codegen/slice_buffer.h", 
+      "include/grpc/impl/codegen/status.h", 
+      "include/grpc/impl/codegen/sync.h", 
+      "include/grpc/impl/codegen/sync_generic.h", 
+      "include/grpc/impl/codegen/sync_posix.h", 
+      "include/grpc/impl/codegen/sync_win32.h", 
+      "include/grpc/impl/codegen/time.h", 
+      "include/grpc/status.h", 
+      "include/grpc/support/alloc.h", 
+      "include/grpc/support/atm.h", 
+      "include/grpc/support/host_port.h", 
+      "include/grpc/support/log.h", 
+      "include/grpc/support/port_platform.h", 
+      "include/grpc/support/slice.h", 
+      "include/grpc/support/slice_buffer.h", 
+      "include/grpc/support/string_util.h", 
+      "include/grpc/support/sync.h", 
+      "include/grpc/support/time.h", 
+      "include/grpc/support/useful.h", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
+      "src/core/lib/channel/channel_stack.h", 
+      "src/core/lib/channel/context.h", 
+      "src/core/lib/debug/trace.h", 
+      "src/core/lib/iomgr/closure.h", 
+      "src/core/lib/iomgr/exec_ctx.h", 
+      "src/core/lib/iomgr/pollset.h", 
+      "src/core/lib/iomgr/pollset_set.h", 
+      "src/core/lib/support/string.h", 
+      "src/core/lib/surface/channel.h", 
+      "src/core/lib/surface/channel_stack_type.h", 
+      "src/core/lib/transport/byte_stream.h", 
+      "src/core/lib/transport/metadata.h", 
+      "src/core/lib/transport/metadata_batch.h", 
+      "src/core/lib/transport/transport.h", 
+      "src/core/lib/transport/transport_impl.h", 
+      "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_transport_cronet_client_secure", 
+    "src": [
+      "include/grpc/byte_buffer.h", 
+      "include/grpc/grpc.h", 
+      "include/grpc/impl/codegen/alloc.h", 
+      "include/grpc/impl/codegen/atm.h", 
+      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
+      "include/grpc/impl/codegen/atm_gcc_sync.h", 
+      "include/grpc/impl/codegen/atm_win32.h", 
+      "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/compression_types.h", 
+      "include/grpc/impl/codegen/connectivity_state.h", 
+      "include/grpc/impl/codegen/grpc_types.h", 
+      "include/grpc/impl/codegen/log.h", 
+      "include/grpc/impl/codegen/port_platform.h", 
+      "include/grpc/impl/codegen/propagation_bits.h", 
+      "include/grpc/impl/codegen/slice.h", 
+      "include/grpc/impl/codegen/slice_buffer.h", 
+      "include/grpc/impl/codegen/status.h", 
+      "include/grpc/impl/codegen/sync.h", 
+      "include/grpc/impl/codegen/sync_generic.h", 
+      "include/grpc/impl/codegen/sync_posix.h", 
+      "include/grpc/impl/codegen/sync_win32.h", 
+      "include/grpc/impl/codegen/time.h", 
+      "include/grpc/status.h", 
+      "include/grpc/support/alloc.h", 
+      "include/grpc/support/atm.h", 
+      "include/grpc/support/host_port.h", 
+      "include/grpc/support/log.h", 
+      "include/grpc/support/port_platform.h", 
+      "include/grpc/support/slice.h", 
+      "include/grpc/support/slice_buffer.h", 
+      "include/grpc/support/string_util.h", 
+      "include/grpc/support/sync.h", 
+      "include/grpc/support/time.h", 
+      "include/grpc/support/useful.h", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
+      "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c", 
+      "src/core/ext/transport/cronet/transport/cronet_api_dummy.c", 
+      "src/core/ext/transport/cronet/transport/cronet_transport.c", 
+      "src/core/lib/channel/channel_stack.h", 
+      "src/core/lib/channel/context.h", 
+      "src/core/lib/debug/trace.h", 
+      "src/core/lib/iomgr/closure.h", 
+      "src/core/lib/iomgr/exec_ctx.h", 
+      "src/core/lib/iomgr/pollset.h", 
+      "src/core/lib/iomgr/pollset_set.h", 
+      "src/core/lib/support/string.h", 
+      "src/core/lib/surface/channel.h", 
+      "src/core/lib/surface/channel_stack_type.h", 
+      "src/core/lib/transport/byte_stream.h", 
+      "src/core/lib/transport/metadata.h", 
+      "src/core/lib/transport/metadata_batch.h", 
+      "src/core/lib/transport/transport.h", 
+      "src/core/lib/transport/transport_impl.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
   {
     "deps": [], 
     "headers": [
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 6a2843e37c..932c2699f4 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -293,6 +293,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc\census.h" />
@@ -422,6 +423,42 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h" />
+    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb.h" />
@@ -728,6 +765,12 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 7d53be719c..2dc192ed50 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -439,6 +439,15 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\client\secure\cronet_channel_create.c">
+      <Filter>src\core\ext\transport\cronet\client\secure</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_api_dummy.c">
+      <Filter>src\core\ext\transport\cronet\transport</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\cronet\transport\cronet_transport.c">
+      <Filter>src\core\ext\transport\cronet\transport</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -576,6 +585,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
       <Filter>include\grpc\impl\codegen</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_cronet.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security.h">
       <Filter>include\grpc</Filter>
     </ClInclude>
@@ -959,6 +971,114 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
       <Filter>src\core\ext\client_config</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
+      <Filter>include\grpc\impl\codegen</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h">
+      <Filter>include\grpc</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h">
+      <Filter>include\grpc\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h">
+      <Filter>src\core\lib\support</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h">
+      <Filter>third_party\objective_c\Cronet</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
@@ -1010,6 +1130,9 @@
     <Filter Include="include\grpc\impl\codegen">
       <UniqueIdentifier>{def748f5-ed2a-a9bb-40d9-c31d00f0e13b}</UniqueIdentifier>
     </Filter>
+    <Filter Include="include\grpc\support">
+      <UniqueIdentifier>{31de82ea-dc6c-73fb-a640-979b8a7b240c}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src">
       <UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
     </Filter>
@@ -1091,6 +1214,18 @@
     <Filter Include="src\core\ext\transport\chttp2\transport">
       <UniqueIdentifier>{6f34254e-e69f-c9b4-156d-5024bade5408}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\transport\cronet">
+      <UniqueIdentifier>{1e9c85e9-5522-7ef8-0017-7e19990a6194}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\core\ext\transport\cronet\client">
+      <UniqueIdentifier>{d0530883-75d9-b5f7-d594-26735a70ac7b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\core\ext\transport\cronet\client\secure">
+      <UniqueIdentifier>{4fa6fe90-b7a8-5c8f-d629-db1e68d89eed}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="src\core\ext\transport\cronet\transport">
+      <UniqueIdentifier>{31518af8-5860-6d0d-ff78-4059fce29ec2}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\lib">
       <UniqueIdentifier>{5b2ded3f-84a5-f6b4-2060-286c7d1dc945}</UniqueIdentifier>
     </Filter>
@@ -1115,6 +1250,9 @@
     <Filter Include="src\core\lib\security">
       <UniqueIdentifier>{c4661d64-349f-01c1-1ba8-0602f9047595}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\lib\support">
+      <UniqueIdentifier>{27f30339-d694-40f5-db07-4b89b9aeea73}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\lib\surface">
       <UniqueIdentifier>{a21971fb-304f-da08-b1b2-7bd8df8ac373}</UniqueIdentifier>
     </Filter>
@@ -1133,6 +1271,12 @@
     <Filter Include="third_party\nanopb">
       <UniqueIdentifier>{93d6596d-330c-1d27-6f84-3c840e57869e}</UniqueIdentifier>
     </Filter>
+    <Filter Include="third_party\objective_c">
+      <UniqueIdentifier>{3a56a516-857e-d2aa-95cc-11685baf4e8c}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="third_party\objective_c\Cronet">
+      <UniqueIdentifier>{a165c6e3-0776-6f40-7351-d7865668e220}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
 </Project>
 
-- 
GitLab


From d46efd78125af11a2c593cf2facd93c91e703cec Mon Sep 17 00:00:00 2001
From: Makarand Dharmapurikar <makarandd@google.com>
Date: Wed, 11 May 2016 16:56:39 -0700
Subject: [PATCH 495/525] replaced header list with filegroup in build.yaml.

---
 BUILD                                        |  70 ------------
 build.yaml                                   |  53 +--------
 gRPC.podspec                                 |  70 ------------
 grpc.gemspec                                 |  35 ------
 package.xml                                  |  35 ------
 tools/doxygen/Doxyfile.core.internal         |  35 ------
 tools/run_tests/sources_and_headers.json     | 107 +-----------------
 vsprojects/vcxproj/grpc/grpc.vcxproj         |  35 ------
 vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 111 -------------------
 9 files changed, 8 insertions(+), 543 deletions(-)

diff --git a/BUILD b/BUILD
index 1f6fc08cba..467ed456a2 100644
--- a/BUILD
+++ b/BUILD
@@ -285,41 +285,6 @@ cc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
-    "include/grpc/byte_buffer.h",
-    "include/grpc/grpc.h",
-    "include/grpc/impl/codegen/alloc.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_win32.h",
-    "include/grpc/impl/codegen/byte_buffer.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/log.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/slice_buffer.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_win32.h",
-    "include/grpc/impl/codegen/time.h",
-    "include/grpc/status.h",
-    "include/grpc/support/alloc.h",
-    "include/grpc/support/atm.h",
-    "include/grpc/support/host_port.h",
-    "include/grpc/support/log.h",
-    "include/grpc/support/port_platform.h",
-    "include/grpc/support/slice.h",
-    "include/grpc/support/slice_buffer.h",
-    "include/grpc/support/string_util.h",
-    "include/grpc/support/sync.h",
-    "include/grpc/support/time.h",
-    "include/grpc/support/useful.h",
-    "src/core/lib/support/string.h",
     "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
@@ -1675,41 +1640,6 @@ objc_library(
     "src/core/ext/client_config/subchannel_call_holder.h",
     "src/core/ext/client_config/subchannel_index.h",
     "src/core/ext/client_config/uri_parser.h",
-    "include/grpc/byte_buffer.h",
-    "include/grpc/grpc.h",
-    "include/grpc/impl/codegen/alloc.h",
-    "include/grpc/impl/codegen/atm.h",
-    "include/grpc/impl/codegen/atm_gcc_atomic.h",
-    "include/grpc/impl/codegen/atm_gcc_sync.h",
-    "include/grpc/impl/codegen/atm_win32.h",
-    "include/grpc/impl/codegen/byte_buffer.h",
-    "include/grpc/impl/codegen/compression_types.h",
-    "include/grpc/impl/codegen/connectivity_state.h",
-    "include/grpc/impl/codegen/grpc_types.h",
-    "include/grpc/impl/codegen/log.h",
-    "include/grpc/impl/codegen/port_platform.h",
-    "include/grpc/impl/codegen/propagation_bits.h",
-    "include/grpc/impl/codegen/slice.h",
-    "include/grpc/impl/codegen/slice_buffer.h",
-    "include/grpc/impl/codegen/status.h",
-    "include/grpc/impl/codegen/sync.h",
-    "include/grpc/impl/codegen/sync_generic.h",
-    "include/grpc/impl/codegen/sync_posix.h",
-    "include/grpc/impl/codegen/sync_win32.h",
-    "include/grpc/impl/codegen/time.h",
-    "include/grpc/status.h",
-    "include/grpc/support/alloc.h",
-    "include/grpc/support/atm.h",
-    "include/grpc/support/host_port.h",
-    "include/grpc/support/log.h",
-    "include/grpc/support/port_platform.h",
-    "include/grpc/support/slice.h",
-    "include/grpc/support/slice_buffer.h",
-    "include/grpc/support/string_util.h",
-    "include/grpc/support/sync.h",
-    "include/grpc/support/time.h",
-    "include/grpc/support/useful.h",
-    "src/core/lib/support/string.h",
     "third_party/objective_c/Cronet/cronet_c_for_grpc.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h",
diff --git a/build.yaml b/build.yaml
index aeb31003e7..93b81060ea 100644
--- a/build.yaml
+++ b/build.yaml
@@ -550,61 +550,14 @@ filegroups:
   - grpc_secure
 - name: grpc_transport_cronet_client_secure
   headers:
-  - include/grpc/byte_buffer.h
-  - include/grpc/grpc.h
-  - include/grpc/impl/codegen/alloc.h
-  - include/grpc/impl/codegen/atm.h
-  - include/grpc/impl/codegen/atm_gcc_atomic.h
-  - include/grpc/impl/codegen/atm_gcc_sync.h
-  - include/grpc/impl/codegen/atm_win32.h
-  - include/grpc/impl/codegen/byte_buffer.h
-  - include/grpc/impl/codegen/compression_types.h
-  - include/grpc/impl/codegen/connectivity_state.h
-  - include/grpc/impl/codegen/grpc_types.h
-  - include/grpc/impl/codegen/log.h
-  - include/grpc/impl/codegen/port_platform.h
-  - include/grpc/impl/codegen/propagation_bits.h
-  - include/grpc/impl/codegen/slice.h
-  - include/grpc/impl/codegen/slice_buffer.h
-  - include/grpc/impl/codegen/status.h
-  - include/grpc/impl/codegen/sync.h
-  - include/grpc/impl/codegen/sync_generic.h
-  - include/grpc/impl/codegen/sync_posix.h
-  - include/grpc/impl/codegen/sync_win32.h
-  - include/grpc/impl/codegen/time.h
-  - include/grpc/status.h
-  - include/grpc/support/alloc.h
-  - include/grpc/support/atm.h
-  - include/grpc/support/host_port.h
-  - include/grpc/support/log.h
-  - include/grpc/support/port_platform.h
-  - include/grpc/support/slice.h
-  - include/grpc/support/slice_buffer.h
-  - include/grpc/support/string_util.h
-  - include/grpc/support/sync.h
-  - include/grpc/support/time.h
-  - include/grpc/support/useful.h
-  - src/core/ext/transport/chttp2/transport/incoming_metadata.h
-  - src/core/lib/channel/channel_stack.h
-  - src/core/lib/channel/context.h
-  - src/core/lib/debug/trace.h
-  - src/core/lib/iomgr/closure.h
-  - src/core/lib/iomgr/exec_ctx.h
-  - src/core/lib/iomgr/pollset.h
-  - src/core/lib/iomgr/pollset_set.h
-  - src/core/lib/support/string.h
-  - src/core/lib/surface/channel.h
-  - src/core/lib/surface/channel_stack_type.h
-  - src/core/lib/transport/byte_stream.h
-  - src/core/lib/transport/metadata.h
-  - src/core/lib/transport/metadata_batch.h
-  - src/core/lib/transport/transport.h
-  - src/core/lib/transport/transport_impl.h
   - third_party/objective_c/Cronet/cronet_c_for_grpc.h
   src:
   - src/core/ext/transport/cronet/client/secure/cronet_channel_create.c
   - src/core/ext/transport/cronet/transport/cronet_api_dummy.c
   - src/core/ext/transport/cronet/transport/cronet_transport.c
+  filegroups:
+  - grpc_base
+  - grpc_transport_chttp2
 - name: nanopb
   headers:
   - third_party/nanopb/pb.h
diff --git a/gRPC.podspec b/gRPC.podspec
index 1a0ddc0d55..6b8f4779f7 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -288,41 +288,6 @@ Pod::Spec.new do |s|
                       'src/core/ext/client_config/subchannel_call_holder.h',
                       'src/core/ext/client_config/subchannel_index.h',
                       'src/core/ext/client_config/uri_parser.h',
-                      'include/grpc/byte_buffer.h',
-                      'include/grpc/grpc.h',
-                      'include/grpc/impl/codegen/alloc.h',
-                      'include/grpc/impl/codegen/atm.h',
-                      'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                      'include/grpc/impl/codegen/atm_gcc_sync.h',
-                      'include/grpc/impl/codegen/atm_win32.h',
-                      'include/grpc/impl/codegen/byte_buffer.h',
-                      'include/grpc/impl/codegen/compression_types.h',
-                      'include/grpc/impl/codegen/connectivity_state.h',
-                      'include/grpc/impl/codegen/grpc_types.h',
-                      'include/grpc/impl/codegen/log.h',
-                      'include/grpc/impl/codegen/port_platform.h',
-                      'include/grpc/impl/codegen/propagation_bits.h',
-                      'include/grpc/impl/codegen/slice.h',
-                      'include/grpc/impl/codegen/slice_buffer.h',
-                      'include/grpc/impl/codegen/status.h',
-                      'include/grpc/impl/codegen/sync.h',
-                      'include/grpc/impl/codegen/sync_generic.h',
-                      'include/grpc/impl/codegen/sync_posix.h',
-                      'include/grpc/impl/codegen/sync_win32.h',
-                      'include/grpc/impl/codegen/time.h',
-                      'include/grpc/status.h',
-                      'include/grpc/support/alloc.h',
-                      'include/grpc/support/atm.h',
-                      'include/grpc/support/host_port.h',
-                      'include/grpc/support/log.h',
-                      'include/grpc/support/port_platform.h',
-                      'include/grpc/support/slice.h',
-                      'include/grpc/support/slice_buffer.h',
-                      'include/grpc/support/string_util.h',
-                      'include/grpc/support/sync.h',
-                      'include/grpc/support/time.h',
-                      'include/grpc/support/useful.h',
-                      'src/core/lib/support/string.h',
                       'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
@@ -671,41 +636,6 @@ Pod::Spec.new do |s|
                               'src/core/ext/client_config/subchannel_call_holder.h',
                               'src/core/ext/client_config/subchannel_index.h',
                               'src/core/ext/client_config/uri_parser.h',
-                              'include/grpc/byte_buffer.h',
-                              'include/grpc/grpc.h',
-                              'include/grpc/impl/codegen/alloc.h',
-                              'include/grpc/impl/codegen/atm.h',
-                              'include/grpc/impl/codegen/atm_gcc_atomic.h',
-                              'include/grpc/impl/codegen/atm_gcc_sync.h',
-                              'include/grpc/impl/codegen/atm_win32.h',
-                              'include/grpc/impl/codegen/byte_buffer.h',
-                              'include/grpc/impl/codegen/compression_types.h',
-                              'include/grpc/impl/codegen/connectivity_state.h',
-                              'include/grpc/impl/codegen/grpc_types.h',
-                              'include/grpc/impl/codegen/log.h',
-                              'include/grpc/impl/codegen/port_platform.h',
-                              'include/grpc/impl/codegen/propagation_bits.h',
-                              'include/grpc/impl/codegen/slice.h',
-                              'include/grpc/impl/codegen/slice_buffer.h',
-                              'include/grpc/impl/codegen/status.h',
-                              'include/grpc/impl/codegen/sync.h',
-                              'include/grpc/impl/codegen/sync_generic.h',
-                              'include/grpc/impl/codegen/sync_posix.h',
-                              'include/grpc/impl/codegen/sync_win32.h',
-                              'include/grpc/impl/codegen/time.h',
-                              'include/grpc/status.h',
-                              'include/grpc/support/alloc.h',
-                              'include/grpc/support/atm.h',
-                              'include/grpc/support/host_port.h',
-                              'include/grpc/support/log.h',
-                              'include/grpc/support/port_platform.h',
-                              'include/grpc/support/slice.h',
-                              'include/grpc/support/slice_buffer.h',
-                              'include/grpc/support/string_util.h',
-                              'include/grpc/support/sync.h',
-                              'include/grpc/support/time.h',
-                              'include/grpc/support/useful.h',
-                              'src/core/lib/support/string.h',
                               'third_party/objective_c/Cronet/cronet_c_for_grpc.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index 2d5045faba..d84f10a77f 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -297,41 +297,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
   s.files += %w( src/core/ext/client_config/subchannel_index.h )
   s.files += %w( src/core/ext/client_config/uri_parser.h )
-  s.files += %w( include/grpc/byte_buffer.h )
-  s.files += %w( include/grpc/grpc.h )
-  s.files += %w( include/grpc/impl/codegen/alloc.h )
-  s.files += %w( include/grpc/impl/codegen/atm.h )
-  s.files += %w( include/grpc/impl/codegen/atm_gcc_atomic.h )
-  s.files += %w( include/grpc/impl/codegen/atm_gcc_sync.h )
-  s.files += %w( include/grpc/impl/codegen/atm_win32.h )
-  s.files += %w( include/grpc/impl/codegen/byte_buffer.h )
-  s.files += %w( include/grpc/impl/codegen/compression_types.h )
-  s.files += %w( include/grpc/impl/codegen/connectivity_state.h )
-  s.files += %w( include/grpc/impl/codegen/grpc_types.h )
-  s.files += %w( include/grpc/impl/codegen/log.h )
-  s.files += %w( include/grpc/impl/codegen/port_platform.h )
-  s.files += %w( include/grpc/impl/codegen/propagation_bits.h )
-  s.files += %w( include/grpc/impl/codegen/slice.h )
-  s.files += %w( include/grpc/impl/codegen/slice_buffer.h )
-  s.files += %w( include/grpc/impl/codegen/status.h )
-  s.files += %w( include/grpc/impl/codegen/sync.h )
-  s.files += %w( include/grpc/impl/codegen/sync_generic.h )
-  s.files += %w( include/grpc/impl/codegen/sync_posix.h )
-  s.files += %w( include/grpc/impl/codegen/sync_win32.h )
-  s.files += %w( include/grpc/impl/codegen/time.h )
-  s.files += %w( include/grpc/status.h )
-  s.files += %w( include/grpc/support/alloc.h )
-  s.files += %w( include/grpc/support/atm.h )
-  s.files += %w( include/grpc/support/host_port.h )
-  s.files += %w( include/grpc/support/log.h )
-  s.files += %w( include/grpc/support/port_platform.h )
-  s.files += %w( include/grpc/support/slice.h )
-  s.files += %w( include/grpc/support/slice_buffer.h )
-  s.files += %w( include/grpc/support/string_util.h )
-  s.files += %w( include/grpc/support/sync.h )
-  s.files += %w( include/grpc/support/time.h )
-  s.files += %w( include/grpc/support/useful.h )
-  s.files += %w( src/core/lib/support/string.h )
   s.files += %w( third_party/objective_c/Cronet/cronet_c_for_grpc.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h )
diff --git a/package.xml b/package.xml
index cf11ea8f07..cbdadb2d28 100644
--- a/package.xml
+++ b/package.xml
@@ -304,41 +304,6 @@
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/byte_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/alloc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_win32.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/log.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/slice_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_generic.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/alloc.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/atm.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/host_port.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/log.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/port_platform.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/slice.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/slice_buffer.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/string_util.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/sync.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/time.h" role="src" />
-    <file baseinstalldir="/" name="include/grpc/support/useful.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/support/string.h" role="src" />
     <file baseinstalldir="/" name="third_party/objective_c/Cronet/cronet_c_for_grpc.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h" role="src" />
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index ac919def65..bcaaaf8e0b 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -914,41 +914,6 @@ src/core/ext/client_config/subchannel.h \
 src/core/ext/client_config/subchannel_call_holder.h \
 src/core/ext/client_config/subchannel_index.h \
 src/core/ext/client_config/uri_parser.h \
-include/grpc/byte_buffer.h \
-include/grpc/grpc.h \
-include/grpc/impl/codegen/alloc.h \
-include/grpc/impl/codegen/atm.h \
-include/grpc/impl/codegen/atm_gcc_atomic.h \
-include/grpc/impl/codegen/atm_gcc_sync.h \
-include/grpc/impl/codegen/atm_win32.h \
-include/grpc/impl/codegen/byte_buffer.h \
-include/grpc/impl/codegen/compression_types.h \
-include/grpc/impl/codegen/connectivity_state.h \
-include/grpc/impl/codegen/grpc_types.h \
-include/grpc/impl/codegen/log.h \
-include/grpc/impl/codegen/port_platform.h \
-include/grpc/impl/codegen/propagation_bits.h \
-include/grpc/impl/codegen/slice.h \
-include/grpc/impl/codegen/slice_buffer.h \
-include/grpc/impl/codegen/status.h \
-include/grpc/impl/codegen/sync.h \
-include/grpc/impl/codegen/sync_generic.h \
-include/grpc/impl/codegen/sync_posix.h \
-include/grpc/impl/codegen/sync_win32.h \
-include/grpc/impl/codegen/time.h \
-include/grpc/status.h \
-include/grpc/support/alloc.h \
-include/grpc/support/atm.h \
-include/grpc/support/host_port.h \
-include/grpc/support/log.h \
-include/grpc/support/port_platform.h \
-include/grpc/support/slice.h \
-include/grpc/support/slice_buffer.h \
-include/grpc/support/string_util.h \
-include/grpc/support/sync.h \
-include/grpc/support/time.h \
-include/grpc/support/useful.h \
-src/core/lib/support/string.h \
 third_party/objective_c/Cronet/cronet_c_for_grpc.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 64358400fc..8d0345d1f6 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -6285,116 +6285,19 @@
     "type": "filegroup"
   }, 
   {
-    "deps": [], 
+    "deps": [
+      "grpc_base", 
+      "grpc_transport_chttp2"
+    ], 
     "headers": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/status.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h", 
       "third_party/objective_c/Cronet/cronet_c_for_grpc.h"
     ], 
     "language": "c", 
     "name": "grpc_transport_cronet_client_secure", 
     "src": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/status.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
       "src/core/ext/transport/cronet/client/secure/cronet_channel_create.c", 
       "src/core/ext/transport/cronet/transport/cronet_api_dummy.c", 
-      "src/core/ext/transport/cronet/transport/cronet_transport.c", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h"
+      "src/core/ext/transport/cronet/transport/cronet_transport.c"
     ], 
     "third_party": false, 
     "type": "filegroup"
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 932c2699f4..75c1288c89 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -423,41 +423,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h" />
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h" />
     <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v1\load_balancer.pb.h" />
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 2dc192ed50..d576b14877 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -971,111 +971,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
       <Filter>src\core\ext\client_config</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\byte_buffer.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\alloc.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_atomic.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_gcc_sync.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\atm_win32.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\byte_buffer.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\compression_types.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\connectivity_state.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\grpc_types.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\log.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\port_platform.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\propagation_bits.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\slice_buffer.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\status.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_generic.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_posix.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\sync_win32.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\impl\codegen\time.h">
-      <Filter>include\grpc\impl\codegen</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\alloc.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\atm.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\host_port.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\log.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\port_platform.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\slice_buffer.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\string_util.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\sync.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\time.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\include\grpc\support\useful.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\support\string.h">
-      <Filter>src\core\lib\support</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\third_party\objective_c\Cronet\cronet_c_for_grpc.h">
       <Filter>third_party\objective_c\Cronet</Filter>
     </ClInclude>
@@ -1130,9 +1025,6 @@
     <Filter Include="include\grpc\impl\codegen">
       <UniqueIdentifier>{def748f5-ed2a-a9bb-40d9-c31d00f0e13b}</UniqueIdentifier>
     </Filter>
-    <Filter Include="include\grpc\support">
-      <UniqueIdentifier>{31de82ea-dc6c-73fb-a640-979b8a7b240c}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src">
       <UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
     </Filter>
@@ -1250,9 +1142,6 @@
     <Filter Include="src\core\lib\security">
       <UniqueIdentifier>{c4661d64-349f-01c1-1ba8-0602f9047595}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\support">
-      <UniqueIdentifier>{27f30339-d694-40f5-db07-4b89b9aeea73}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\surface">
       <UniqueIdentifier>{a21971fb-304f-da08-b1b2-7bd8df8ac373}</UniqueIdentifier>
     </Filter>
-- 
GitLab


From 8fd90740bf190c5b156ef52aaabb75eead248fef Mon Sep 17 00:00:00 2001
From: Julien Boeuf <jboeuf@google.com>
Date: Wed, 11 May 2016 16:58:31 -0700
Subject: [PATCH 496/525] Add curlies for multiline if statements.

---
 src/core/lib/http/parser.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/core/lib/http/parser.c b/src/core/lib/http/parser.c
index a7efb5e73e..09b2ed40d1 100644
--- a/src/core/lib/http/parser.c
+++ b/src/core/lib/http/parser.c
@@ -161,8 +161,9 @@ static int add_header(grpc_http_parser *parser) {
     cur++;
   }
   if (cur == end) {
-    if (grpc_http1_trace)
+    if (grpc_http1_trace) {
       gpr_log(GPR_ERROR, "Didn't find ':' in header string");
+    }
     goto error;
   }
   GPR_ASSERT(cur >= beg);
-- 
GitLab


From a7823757eb17136718254fd44eee462a699ad02d Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Wed, 11 May 2016 17:23:14 -0700
Subject: [PATCH 497/525] Addressed the discussion on 05/11/2016

---
 .../grpc/reflection/v1alpha/reflection.proto  | 48 +++++++++++++------
 1 file changed, 33 insertions(+), 15 deletions(-)

diff --git a/src/proto/grpc/reflection/v1alpha/reflection.proto b/src/proto/grpc/reflection/v1alpha/reflection.proto
index 6e6a0b0864..32cea75823 100644
--- a/src/proto/grpc/reflection/v1alpha/reflection.proto
+++ b/src/proto/grpc/reflection/v1alpha/reflection.proto
@@ -36,12 +36,12 @@ package grpc.reflection.v1alpha;
 service ServerReflection {
   // The reflection service is structured as a bidirectional stream, ensuring
   // all related requests go to a single server.
-  rpc DescriptorDatabaseInfo(stream DescriptorDatabaseRequest)
-      returns (stream DescriptorDatabaseResponse);
+  rpc ServerReflectionInfo(stream ServerReflectionRequest)
+      returns (stream ServerReflectionResponse);
 }
 
-// The message sent by the client when calling DescriptorDatabaseInfo method.
-message DescriptorDatabaseRequest {
+// The message sent by the client when calling ServerReflectionInfo method.
+message ServerReflectionRequest {
   string host = 1;
   // To use reflection service, the client should set one of the following
   // fields in message_request. The server distinguishes requests by their
@@ -83,18 +83,18 @@ message ExtensionRequest {
   int32 extension_number = 2;
 }
 
-// The message sent by the server to answer DescriptorDatabaseInfo method.
-message DescriptorDatabaseResponse {
+// The message sent by the server to answer ServerReflectionInfo method.
+message ServerReflectionResponse {
   string valid_host = 1;
-  DescriptorDatabaseRequest original_request = 2;
+  ServerReflectionRequest original_request = 2;
   // The server set one of the following fields accroding to the message_request
   // in the request.
   oneof message_response {
-    // A serialized FileDescriptorProto message. We avoid taking a dependency on
-    // descriptor.proto, which uses proto2 only features, by making them opaque
-    // bytes instead. This message is used to answer file_by_filename,
-    // file_containing_symbol, file_containing_extension requests.
-    bytes file_descriptor_proto = 4;
+    // This message is used to answer file_by_filename, file_containing_symbol,
+    // file_containing_extension requests with transitive dependencies. As
+    // the repeated label is not allowed in oneof fields, we use a
+    // FileDescriptorResponse message to encapsulate the repeated fields.
+    FileDescriptorResponse file_descriptor_response = 4;
 
     // This message is used to answer all_extension_numbers_of_type requst.
     ExtensionNumberResponse all_extension_numbers_response = 5;
@@ -107,6 +107,16 @@ message DescriptorDatabaseResponse {
   }
 }
 
+// Serialized FileDescriptorProto messages sent by the server answering
+// a file_by_filename, file_containing_symbol, or file_containing_extension
+// request.
+message FileDescriptorResponse {
+  // Serialized FileDescriptorProto messages. We avoid taking a dependency on
+  // descriptor.proto, which uses proto2 only features, by making them opaque
+  // bytes instead.
+  repeated bytes file_descriptor_proto = 1;
+}
+
 // A list of extension numbers sent by the server answering
 // all_extension_numbers_of_type request.
 message ExtensionNumberResponse {
@@ -116,11 +126,19 @@ message ExtensionNumberResponse {
   repeated int32 extension_number = 2;
 }
 
-// A list of service names sent by the server answering list_services request.
+// A list of ServiceResponse sent by the server answering list_services request.
 message ListServiceResponse {
-  // Full names of registered services, including package names. The format
+  // The information of each service may be expanded in the future, so we use
+  // ServiceResponse message to encapsulate it.
+  repeated ServiceResponse service = 1;
+}
+
+// The information of a single service used by ListServiceResponse to answer
+// list_services request.
+message ServiceResponse {
+  // Full name of a registered service, including its package name. The format
   // is <package>.<service>
-  repeated string service = 1;
+  string name = 1;
 }
 
 // The error code and error message sent by the server when an error occurs.
-- 
GitLab


From 11b55dfd429787deb38f3ef91e904369571cbada Mon Sep 17 00:00:00 2001
From: goldenbull <goldenbull@gmail.com>
Date: Thu, 12 May 2016 14:30:14 +0800
Subject: [PATCH 498/525] use LANG_ENGLISH for windows api FormatMessage

---
 src/core/lib/support/string_util_win32.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/lib/support/string_util_win32.c b/src/core/lib/support/string_util_win32.c
index f3cb0c050f..0d7bcdb5aa 100644
--- a/src/core/lib/support/string_util_win32.c
+++ b/src/core/lib/support/string_util_win32.c
@@ -83,7 +83,7 @@ char *gpr_format_message(int messageid) {
   DWORD status = FormatMessage(
       FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
           FORMAT_MESSAGE_IGNORE_INSERTS,
-      NULL, (DWORD)messageid, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+      NULL, (DWORD)messageid, MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
       (LPTSTR)(&tmessage), 0, NULL);
   if (status == 0) return gpr_strdup("Unable to retrieve error string");
   message = gpr_tchar_to_char(tmessage);
-- 
GitLab


From 528fb6651cf6c19032e30dacdf437a3b7caf05e3 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Thu, 12 May 2016 08:38:41 -0700
Subject: [PATCH 499/525] improve channel behavior in shutdown situations

---
 src/csharp/Grpc.Core.Tests/ChannelTest.cs | 39 +++++++++++++++++++++++
 src/csharp/Grpc.Core/Channel.cs           | 34 ++++++++++++++++++--
 2 files changed, 70 insertions(+), 3 deletions(-)

diff --git a/src/csharp/Grpc.Core.Tests/ChannelTest.cs b/src/csharp/Grpc.Core.Tests/ChannelTest.cs
index 6330f50fae..850d70ce92 100644
--- a/src/csharp/Grpc.Core.Tests/ChannelTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ChannelTest.cs
@@ -32,6 +32,7 @@
 #endregion
 
 using System;
+using System.Threading.Tasks;
 using Grpc.Core;
 using Grpc.Core.Internal;
 using Grpc.Core.Utils;
@@ -89,5 +90,43 @@ namespace Grpc.Core.Tests
             channel.ShutdownAsync().Wait();
             Assert.ThrowsAsync(typeof(InvalidOperationException), async () => await channel.ShutdownAsync());
         }
+
+        [Test]
+        public async Task ShutdownTokenCancelledAfterShutdown()
+        {
+            var channel = new Channel("localhost", ChannelCredentials.Insecure);
+            Assert.IsFalse(channel.ShutdownToken.IsCancellationRequested);
+            var shutdownTask = channel.ShutdownAsync();
+            Assert.IsTrue(channel.ShutdownToken.IsCancellationRequested);
+            await shutdownTask;
+        }
+
+        [Test]
+        public async Task StateIsFatalFailureAfterShutdown()
+        {
+            var channel = new Channel("localhost", ChannelCredentials.Insecure);
+            await channel.ShutdownAsync();
+            Assert.AreEqual(ChannelState.FatalFailure, channel.State);
+        }
+
+        [Test]
+        public async Task ShutdownFinishesWaitForStateChangedAsync()
+        {
+            var channel = new Channel("localhost", ChannelCredentials.Insecure);
+            var stateChangedTask = channel.WaitForStateChangedAsync(ChannelState.Idle);
+            var shutdownTask = channel.ShutdownAsync();
+            await stateChangedTask;
+            await shutdownTask;
+        }
+
+        [Test]
+        public async Task OperationsThrowAfterShutdown()
+        {
+            var channel = new Channel("localhost", ChannelCredentials.Insecure);
+            await channel.ShutdownAsync();
+            Assert.ThrowsAsync(typeof(ObjectDisposedException), async () => await channel.WaitForStateChangedAsync(ChannelState.Idle));
+            Assert.Throws(typeof(ObjectDisposedException), () => { var x = channel.ResolvedTarget; });
+            Assert.ThrowsAsync(typeof(TaskCanceledException), async () => await channel.ConnectAsync());
+        }
     }
 }
diff --git a/src/csharp/Grpc.Core/Channel.cs b/src/csharp/Grpc.Core/Channel.cs
index 89981b1849..93a6e6a3d9 100644
--- a/src/csharp/Grpc.Core/Channel.cs
+++ b/src/csharp/Grpc.Core/Channel.cs
@@ -32,6 +32,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Threading;
 using System.Threading.Tasks;
 
 using Grpc.Core.Internal;
@@ -51,6 +52,7 @@ namespace Grpc.Core
 
         readonly object myLock = new object();
         readonly AtomicCounter activeCallCounter = new AtomicCounter();
+        readonly CancellationTokenSource shutdownTokenSource = new CancellationTokenSource();
 
         readonly string target;
         readonly GrpcEnvironment environment;
@@ -101,12 +103,13 @@ namespace Grpc.Core
 
         /// <summary>
         /// Gets current connectivity state of this channel.
+        /// After channel is has been shutdown, <c>ChannelState.FatalFailure</c> will be returned.
         /// </summary>
         public ChannelState State
         {
             get
             {
-                return handle.CheckConnectivityState(false);        
+                return GetConnectivityState(false);
             }
         }
 
@@ -154,6 +157,17 @@ namespace Grpc.Core
             }
         }
 
+        /// <summary>
+        /// Returns a token that gets cancelled once <c>ShutdownAsync</c> is invoked.
+        /// </summary>
+        public CancellationToken ShutdownToken
+        {
+            get
+            {
+                return this.shutdownTokenSource.Token;
+            }
+        }
+
         /// <summary>
         /// Allows explicitly requesting channel to connect without starting an RPC.
         /// Returned task completes once state Ready was seen. If the deadline is reached,
@@ -164,7 +178,7 @@ namespace Grpc.Core
         /// <param name="deadline">The deadline. <c>null</c> indicates no deadline.</param>
         public async Task ConnectAsync(DateTime? deadline = null)
         {
-            var currentState = handle.CheckConnectivityState(true);
+            var currentState = GetConnectivityState(true);
             while (currentState != ChannelState.Ready)
             {
                 if (currentState == ChannelState.FatalFailure)
@@ -172,7 +186,7 @@ namespace Grpc.Core
                     throw new OperationCanceledException("Channel has reached FatalFailure state.");
                 }
                 await WaitForStateChangedAsync(currentState, deadline).ConfigureAwait(false);
-                currentState = handle.CheckConnectivityState(false);
+                currentState = GetConnectivityState(false);
             }
         }
 
@@ -188,6 +202,8 @@ namespace Grpc.Core
                 shutdownRequested = true;
             }
 
+            shutdownTokenSource.Cancel();
+
             var activeCallCount = activeCallCounter.Count;
             if (activeCallCount > 0)
             {
@@ -231,6 +247,18 @@ namespace Grpc.Core
             activeCallCounter.Decrement();
         }
 
+        private ChannelState GetConnectivityState(bool tryToConnect)
+        {
+            try
+            {
+                return handle.CheckConnectivityState(tryToConnect);
+            }
+            catch (ObjectDisposedException)
+            {
+                return ChannelState.FatalFailure;
+            }
+        }
+
         private static void EnsureUserAgentChannelOption(Dictionary<string, ChannelOption> options)
         {
             var key = ChannelOptions.PrimaryUserAgentString;
-- 
GitLab


From d310451ff1190e5c31287ee427938af1075de0ea Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 12 May 2016 08:53:22 -0700
Subject: [PATCH 500/525] Remove redundant declaration

---
 src/core/lib/iomgr/ev_poll_posix.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/src/core/lib/iomgr/ev_poll_posix.c b/src/core/lib/iomgr/ev_poll_posix.c
index 99874d49eb..d1752327a2 100644
--- a/src/core/lib/iomgr/ev_poll_posix.c
+++ b/src/core/lib/iomgr/ev_poll_posix.c
@@ -195,16 +195,6 @@ struct grpc_pollset {
   grpc_cached_wakeup_fd *local_wakeup_cache;
 };
 
-struct grpc_pollset_vtable {
-  void (*add_fd)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
-                 struct grpc_fd *fd, int and_unlock_pollset);
-  void (*maybe_work_and_unlock)(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
-                                grpc_pollset_worker *worker,
-                                gpr_timespec deadline, gpr_timespec now);
-  void (*finish_shutdown)(grpc_pollset *pollset);
-  void (*destroy)(grpc_pollset *pollset);
-};
-
 /* Add an fd to a pollset */
 static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
                            struct grpc_fd *fd);
-- 
GitLab


From b4cb2491074906de3e0f0e196178cae517d16565 Mon Sep 17 00:00:00 2001
From: Vijay Pai <vpai@google.com>
Date: Thu, 12 May 2016 09:28:15 -0700
Subject: [PATCH 501/525] steaming -> streaming

---
 test/cpp/interop/interop_client.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc
index e9d95dc8d0..cba52b111f 100644
--- a/test/cpp/interop/interop_client.cc
+++ b/test/cpp/interop/interop_client.cc
@@ -413,7 +413,7 @@ bool InteropClient::DoRequestStreaming() {
 }
 
 bool InteropClient::DoResponseStreaming() {
-  gpr_log(GPR_DEBUG, "Receiving response steaming rpc ...");
+  gpr_log(GPR_DEBUG, "Receiving response streaming rpc ...");
 
   ClientContext context;
   StreamingOutputCallRequest request;
@@ -465,7 +465,7 @@ bool InteropClient::DoResponseCompressedStreaming() {
                    CompressionType_Name(compression_types[j]).c_str(),
                    PayloadType_Name(payload_types[i]).c_str());
 
-      gpr_log(GPR_DEBUG, "Receiving response steaming rpc %s.", log_suffix);
+      gpr_log(GPR_DEBUG, "Receiving response streaming rpc %s.", log_suffix);
 
       request.set_response_type(payload_types[i]);
       request.set_response_compression(compression_types[j]);
@@ -544,7 +544,7 @@ bool InteropClient::DoResponseCompressedStreaming() {
 }
 
 bool InteropClient::DoResponseStreamingWithSlowConsumer() {
-  gpr_log(GPR_DEBUG, "Receiving response steaming rpc with slow consumer ...");
+  gpr_log(GPR_DEBUG, "Receiving response streaming rpc with slow consumer ...");
 
   ClientContext context;
   StreamingOutputCallRequest request;
@@ -677,7 +677,7 @@ bool InteropClient::DoPingPong() {
 }
 
 bool InteropClient::DoCancelAfterBegin() {
-  gpr_log(GPR_DEBUG, "Sending request steaming rpc ...");
+  gpr_log(GPR_DEBUG, "Sending request streaming rpc ...");
 
   ClientContext context;
   StreamingInputCallRequest request;
-- 
GitLab


From a65f9f5820573f10f27052fb523cf9cac1068a11 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 12 May 2016 10:14:35 -0700
Subject: [PATCH 502/525] Fix test usage of pollset

---
 test/core/iomgr/workqueue_test.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/test/core/iomgr/workqueue_test.c b/test/core/iomgr/workqueue_test.c
index 874e696fc2..953cc35ee6 100644
--- a/test/core/iomgr/workqueue_test.c
+++ b/test/core/iomgr/workqueue_test.c
@@ -73,8 +73,10 @@ static void test_add_closure(void) {
 
   gpr_mu_lock(g_mu);
   GPR_ASSERT(!done);
-  grpc_pollset_work(&exec_ctx, g_pollset, &worker, gpr_now(deadline.clock_type),
-                    deadline);
+  while (!done) {
+    grpc_pollset_work(&exec_ctx, g_pollset, &worker,
+                      gpr_now(deadline.clock_type), deadline);
+  }
   gpr_mu_unlock(g_mu);
   grpc_exec_ctx_finish(&exec_ctx);
   GPR_ASSERT(done);
@@ -97,9 +99,10 @@ static void test_flush(void) {
   grpc_workqueue_add_to_pollset(&exec_ctx, wq, g_pollset);
 
   gpr_mu_lock(g_mu);
-  GPR_ASSERT(!done);
-  grpc_pollset_work(&exec_ctx, g_pollset, &worker, gpr_now(deadline.clock_type),
-                    deadline);
+  while (!done) {
+    grpc_pollset_work(&exec_ctx, g_pollset, &worker,
+                      gpr_now(deadline.clock_type), deadline);
+  }
   gpr_mu_unlock(g_mu);
   grpc_exec_ctx_finish(&exec_ctx);
   GPR_ASSERT(done);
-- 
GitLab


From 9aa6f40dff12a39e2d9d9f4d07c0c9a3eb87c22f Mon Sep 17 00:00:00 2001
From: Robbie Shade <rjshade@google.com>
Date: Thu, 12 May 2016 13:28:04 -0400
Subject: [PATCH 503/525] Add callback when gRPC FD is about to be orphaned.

---
 src/core/lib/iomgr/udp_server.c   | 18 ++++++++++++++----
 src/core/lib/iomgr/udp_server.h   |  6 +++++-
 test/core/iomgr/udp_server_test.c | 26 ++++++++++++++++++++++----
 3 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/src/core/lib/iomgr/udp_server.c b/src/core/lib/iomgr/udp_server.c
index df6cf956d9..98ffccd59b 100644
--- a/src/core/lib/iomgr/udp_server.c
+++ b/src/core/lib/iomgr/udp_server.c
@@ -81,6 +81,7 @@ typedef struct {
   grpc_closure read_closure;
   grpc_closure destroyed_closure;
   grpc_udp_server_read_cb read_cb;
+  grpc_udp_server_orphan_cb orphan_cb;
 } server_port;
 
 /* the overall server */
@@ -168,6 +169,10 @@ static void deactivated_all_ports(grpc_exec_ctx *exec_ctx, grpc_udp_server *s) {
       server_port *sp = &s->ports[i];
       sp->destroyed_closure.cb = destroyed_port;
       sp->destroyed_closure.cb_arg = s;
+
+      GPR_ASSERT(sp->orphan_cb);
+      sp->orphan_cb(sp->emfd);
+
       grpc_fd_orphan(exec_ctx, sp->emfd, &sp->destroyed_closure, NULL,
                      "udp_listener_shutdown");
     }
@@ -268,7 +273,8 @@ static void on_read(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
 
 static int add_socket_to_server(grpc_udp_server *s, int fd,
                                 const struct sockaddr *addr, size_t addr_len,
-                                grpc_udp_server_read_cb read_cb) {
+                                grpc_udp_server_read_cb read_cb,
+                                grpc_udp_server_orphan_cb orphan_cb) {
   server_port *sp;
   int port;
   char *addr_str;
@@ -292,6 +298,7 @@ static int add_socket_to_server(grpc_udp_server *s, int fd,
     memcpy(sp->addr.untyped, addr, addr_len);
     sp->addr_len = addr_len;
     sp->read_cb = read_cb;
+    sp->orphan_cb = orphan_cb;
     GPR_ASSERT(sp->emfd);
     gpr_mu_unlock(&s->mu);
     gpr_free(name);
@@ -301,7 +308,8 @@ static int add_socket_to_server(grpc_udp_server *s, int fd,
 }
 
 int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr,
-                             size_t addr_len, grpc_udp_server_read_cb read_cb) {
+                             size_t addr_len, grpc_udp_server_read_cb read_cb,
+                             grpc_udp_server_orphan_cb orphan_cb) {
   int allocated_port1 = -1;
   int allocated_port2 = -1;
   unsigned i;
@@ -348,7 +356,8 @@ int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr,
     addr = (struct sockaddr *)&wild6;
     addr_len = sizeof(wild6);
     fd = grpc_create_dualstack_socket(addr, SOCK_DGRAM, IPPROTO_UDP, &dsmode);
-    allocated_port1 = add_socket_to_server(s, fd, addr, addr_len, read_cb);
+    allocated_port1 =
+        add_socket_to_server(s, fd, addr, addr_len, read_cb, orphan_cb);
     if (fd >= 0 && dsmode == GRPC_DSMODE_DUALSTACK) {
       goto done;
     }
@@ -370,7 +379,8 @@ int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr,
     addr = (struct sockaddr *)&addr4_copy;
     addr_len = sizeof(addr4_copy);
   }
-  allocated_port2 = add_socket_to_server(s, fd, addr, addr_len, read_cb);
+  allocated_port2 =
+      add_socket_to_server(s, fd, addr, addr_len, read_cb, orphan_cb);
 
 done:
   gpr_free(allocated_addr);
diff --git a/src/core/lib/iomgr/udp_server.h b/src/core/lib/iomgr/udp_server.h
index d8cf957a22..33c5ce11cd 100644
--- a/src/core/lib/iomgr/udp_server.h
+++ b/src/core/lib/iomgr/udp_server.h
@@ -48,6 +48,9 @@ typedef struct grpc_udp_server grpc_udp_server;
 typedef void (*grpc_udp_server_read_cb)(grpc_exec_ctx *exec_ctx, grpc_fd *emfd,
                                         struct grpc_server *server);
 
+/* Called when the grpc_fd is about to be orphaned (and the FD closed). */
+typedef void (*grpc_udp_server_orphan_cb)(grpc_fd *emfd);
+
 /* Create a server, initially not bound to any ports */
 grpc_udp_server *grpc_udp_server_create(void);
 
@@ -69,7 +72,8 @@ int grpc_udp_server_get_fd(grpc_udp_server *s, unsigned index);
 /* TODO(ctiller): deprecate this, and make grpc_udp_server_add_ports to handle
                   all of the multiple socket port matching logic in one place */
 int grpc_udp_server_add_port(grpc_udp_server *s, const void *addr,
-                             size_t addr_len, grpc_udp_server_read_cb read_cb);
+                             size_t addr_len, grpc_udp_server_read_cb read_cb,
+                             grpc_udp_server_orphan_cb orphan_cb);
 
 void grpc_udp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_udp_server *server,
                              grpc_closure *on_done);
diff --git a/test/core/iomgr/udp_server_test.c b/test/core/iomgr/udp_server_test.c
index 5248b613d7..a29a68eb33 100644
--- a/test/core/iomgr/udp_server_test.c
+++ b/test/core/iomgr/udp_server_test.c
@@ -54,6 +54,7 @@ static grpc_pollset *g_pollset;
 static gpr_mu *g_mu;
 static int g_number_of_reads = 0;
 static int g_number_of_bytes_read = 0;
+static int g_number_of_orphan_calls = 0;
 
 static void on_read(grpc_exec_ctx *exec_ctx, grpc_fd *emfd,
                     grpc_server *server) {
@@ -71,6 +72,12 @@ static void on_read(grpc_exec_ctx *exec_ctx, grpc_fd *emfd,
   gpr_mu_unlock(g_mu);
 }
 
+static void on_fd_orphaned(grpc_fd *emfd) {
+  gpr_log(GPR_INFO, "gRPC FD about to be orphaned: %d",
+          grpc_fd_wrapped_fd(emfd));
+  g_number_of_orphan_calls++;
+}
+
 static void test_no_op(void) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_udp_server *s = grpc_udp_server_create();
@@ -88,6 +95,7 @@ static void test_no_op_with_start(void) {
 }
 
 static void test_no_op_with_port(void) {
+  g_number_of_orphan_calls = 0;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   struct sockaddr_in addr;
   grpc_udp_server *s = grpc_udp_server_create();
@@ -96,13 +104,17 @@ static void test_no_op_with_port(void) {
   memset(&addr, 0, sizeof(addr));
   addr.sin_family = AF_INET;
   GPR_ASSERT(grpc_udp_server_add_port(s, (struct sockaddr *)&addr, sizeof(addr),
-                                      on_read));
+                                      on_read, on_fd_orphaned));
 
   grpc_udp_server_destroy(&exec_ctx, s, NULL);
   grpc_exec_ctx_finish(&exec_ctx);
+
+  /* The server had a single FD, which should be orphaned. */
+  GPR_ASSERT(g_number_of_orphan_calls == 1);
 }
 
 static void test_no_op_with_port_and_start(void) {
+  g_number_of_orphan_calls = 0;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   struct sockaddr_in addr;
   grpc_udp_server *s = grpc_udp_server_create();
@@ -111,12 +123,15 @@ static void test_no_op_with_port_and_start(void) {
   memset(&addr, 0, sizeof(addr));
   addr.sin_family = AF_INET;
   GPR_ASSERT(grpc_udp_server_add_port(s, (struct sockaddr *)&addr, sizeof(addr),
-                                      on_read));
+                                      on_read, on_fd_orphaned));
 
   grpc_udp_server_start(&exec_ctx, s, NULL, 0, NULL);
 
   grpc_udp_server_destroy(&exec_ctx, s, NULL);
   grpc_exec_ctx_finish(&exec_ctx);
+
+  /* The server had a single FD which should be orphaned. */
+  GPR_ASSERT(g_number_of_orphan_calls == 1);
 }
 
 static void test_receive(int number_of_clients) {
@@ -133,11 +148,12 @@ static void test_receive(int number_of_clients) {
   gpr_log(GPR_INFO, "clients=%d", number_of_clients);
 
   g_number_of_bytes_read = 0;
+  g_number_of_orphan_calls = 0;
 
   memset(&addr, 0, sizeof(addr));
   addr.ss_family = AF_INET;
-  GPR_ASSERT(
-      grpc_udp_server_add_port(s, (struct sockaddr *)&addr, addr_len, on_read));
+  GPR_ASSERT(grpc_udp_server_add_port(s, (struct sockaddr *)&addr, addr_len,
+                                      on_read, on_fd_orphaned));
 
   svrfd = grpc_udp_server_get_fd(s, 0);
   GPR_ASSERT(svrfd >= 0);
@@ -176,6 +192,8 @@ static void test_receive(int number_of_clients) {
 
   grpc_udp_server_destroy(&exec_ctx, s, NULL);
   grpc_exec_ctx_finish(&exec_ctx);
+
+  GPR_ASSERT(g_number_of_orphan_calls == 5);
 }
 
 static void destroy_pollset(grpc_exec_ctx *exec_ctx, void *p, bool success) {
-- 
GitLab


From 5f902c1267a0ab2748f1ca0ebb837a6a5190cbf5 Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Thu, 12 May 2016 10:31:39 -0700
Subject: [PATCH 504/525] Fix tsan reported error

---
 test/core/client_config/set_initial_connect_string_test.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/test/core/client_config/set_initial_connect_string_test.c b/test/core/client_config/set_initial_connect_string_test.c
index 5b7f222f7a..c1b8452866 100644
--- a/test/core/client_config/set_initial_connect_string_test.c
+++ b/test/core/client_config/set_initial_connect_string_test.c
@@ -57,7 +57,7 @@ struct rpc_state {
   gpr_slice_buffer incoming_buffer;
   gpr_slice_buffer temp_incoming_buffer;
   grpc_endpoint *tcp;
-  int done;
+  gpr_atm done_atm;
 };
 
 static const char *magic_connect_string = "magic initial string";
@@ -70,7 +70,7 @@ static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, bool success) {
   gpr_slice_buffer_move_into(&state.temp_incoming_buffer,
                              &state.incoming_buffer);
   if (state.incoming_buffer.length > strlen(magic_connect_string)) {
-    state.done = 1;
+    gpr_atm_rel_store(&state.done_atm, 1);
     grpc_endpoint_shutdown(exec_ctx, state.tcp);
     grpc_endpoint_destroy(exec_ctx, state.tcp);
   } else {
@@ -117,7 +117,7 @@ static gpr_timespec n_sec_deadline(int seconds) {
 }
 
 static void start_rpc(int use_creds, int target_port) {
-  state.done = 0;
+  gpr_atm_rel_store(&state.done_atm, 0);
   state.cq = grpc_completion_queue_create(NULL);
   if (use_creds) {
     state.creds = grpc_fake_transport_security_credentials_create();
@@ -166,7 +166,7 @@ typedef struct {
 static void actually_poll_server(void *arg) {
   poll_args *pa = arg;
   gpr_timespec deadline = n_sec_deadline(10);
-  while (state.done == 0 &&
+  while (gpr_atm_acq_load(&state.done_atm) == 0 &&
          gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), deadline) < 0) {
     test_tcp_server_poll(pa->server, 1);
   }
-- 
GitLab


From 0eb3e13ea2c73a3de318c7a8297570fa2c6cdd85 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Thu, 12 May 2016 12:33:11 -0700
Subject: [PATCH 505/525] Fix large_metadata_bad_client_test to avoid C99
 string literal length limit.

---
 test/core/bad_client/tests/large_metadata.c | 327 +++-----------------
 1 file changed, 39 insertions(+), 288 deletions(-)

diff --git a/test/core/bad_client/tests/large_metadata.c b/test/core/bad_client/tests/large_metadata.c
index 1a8d2a2987..b2a900ecd8 100644
--- a/test/core/bad_client/tests/large_metadata.c
+++ b/test/core/bad_client/tests/large_metadata.c
@@ -33,13 +33,18 @@
 
 #include "test/core/bad_client/bad_client.h"
 
+#include <stdio.h>
 #include <string.h>
 
 #include <grpc/support/alloc.h>
 #include "src/core/lib/surface/server.h"
 #include "test/core/end2end/cq_verifier.h"
 
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_STR                              \
+// The large-metadata headers that we're adding for this test are not
+// actually appended to this in a single string, since the string would
+// be longer than the C99 string literal limit.  Instead, we dynamically
+// construct it by adding the large headers one at a time.
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR                       \
   "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"     /* settings frame */              \
   "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* headers: generated from        \
                                             large_metadata.headers in this \
@@ -55,292 +60,27 @@
   "application/grpc"                                                       \
   "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip"                  \
   "\x10\x02te\x08trailers"                                                 \
-  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"                 \
-  "\x10\x0duser-header00~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header01~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header02~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header03~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header04~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header05~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header06~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header07~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header08~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header09~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header10~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header11~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header12~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header13~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header14~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header15~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header16~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header17~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header18~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header19~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header20~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header21~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header22~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header23~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header24~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header25~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header26~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header27~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header28~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header29~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header30~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header31~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header32~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header33~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header34~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header35~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header36~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header37~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header38~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header39~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header40~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header41~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header42~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header43~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header44~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header45~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header46~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header47~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header48~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header49~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header50~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header51~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header52~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header53~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header54~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header55~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header56~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header57~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header58~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header59~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header60~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header61~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header62~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header63~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header64~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header65~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header66~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header67~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header68~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header69~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header70~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header71~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header72~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header73~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header74~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header75~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header76~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header77~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header78~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header79~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header80~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header81~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header82~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header83~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header84~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header85~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header86~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header87~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header88~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header89~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header90~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header91~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header92~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header93~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"                                                               \
-  "\x10\x0duser-header94~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
-  "aaaaaaaa"
+  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"
+
+// Each large-metadata header is constructed from these start and end
+// strings, with a two-digit number in between.
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR                 \
+  "\x10\x0duser-header"
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR                   \
+  "~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+// The size of each large-metadata header string.
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE              \
+  ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR) - 1) + 2 + \
+   (sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR) - 1))
+
+// The number of headers we're adding and the total size of the client
+// payload.
+#define NUM_HEADERS 95
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_PAYLOAD_SIZE \
+  ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR) - 1) \
+  + (NUM_HEADERS * PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE) + 1)
 
 #define PFX_TOO_MUCH_METADATA_FROM_SERVER_STR                                              \
   "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" /* settings frame: sets                               \
@@ -477,8 +217,19 @@ int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
 
   // Test sending more metadata than the server will accept.
+  char client_payload[PFX_TOO_MUCH_METADATA_FROM_CLIENT_PAYLOAD_SIZE] =
+      PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR;
+  size_t offset = sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR);
+  for (int i = 0; i < NUM_HEADERS; ++i) {
+    snprintf(client_payload + offset,
+             PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE,
+             "%s%02d%s",
+             PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR, i,
+             PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR);
+    offset += PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE;
+  }
   GRPC_RUN_BAD_CLIENT_TEST(server_verifier, client_validator,
-                           PFX_TOO_MUCH_METADATA_FROM_CLIENT_STR, 0);
+                           client_payload, 0);
 
   // Test sending more metadata than the client will accept.
   GRPC_RUN_BAD_CLIENT_TEST(server_verifier_sends_too_much_metadata,
-- 
GitLab


From 5eba7971fbb719b49039003e59508c4ccdae9cb1 Mon Sep 17 00:00:00 2001
From: "Mark D. Roth" <roth@google.com>
Date: Thu, 12 May 2016 14:02:03 -0700
Subject: [PATCH 506/525] Switch from snprintf() to gpr_asprintf().

---
 test/core/bad_client/tests/large_metadata.c | 43 ++++++++++++---------
 1 file changed, 25 insertions(+), 18 deletions(-)

diff --git a/test/core/bad_client/tests/large_metadata.c b/test/core/bad_client/tests/large_metadata.c
index b2a900ecd8..b7d329cb74 100644
--- a/test/core/bad_client/tests/large_metadata.c
+++ b/test/core/bad_client/tests/large_metadata.c
@@ -33,10 +33,11 @@
 
 #include "test/core/bad_client/bad_client.h"
 
-#include <stdio.h>
 #include <string.h>
 
 #include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
+#include "src/core/lib/support/string.h"
 #include "src/core/lib/surface/server.h"
 #include "test/core/end2end/cq_verifier.h"
 
@@ -64,23 +65,22 @@
 
 // Each large-metadata header is constructed from these start and end
 // strings, with a two-digit number in between.
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR                 \
-  "\x10\x0duser-header"
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR "\x10\x0duser-header"
 #define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR                   \
   "~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
   "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
 // The size of each large-metadata header string.
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE              \
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE                     \
   ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR) - 1) + 2 + \
    (sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR) - 1))
 
 // The number of headers we're adding and the total size of the client
 // payload.
 #define NUM_HEADERS 95
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_PAYLOAD_SIZE \
-  ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR) - 1) \
-  + (NUM_HEADERS * PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE) + 1)
+#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_PAYLOAD_SIZE          \
+  ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR) - 1) + \
+   (NUM_HEADERS * PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE) + 1)
 
 #define PFX_TOO_MUCH_METADATA_FROM_SERVER_STR                                              \
   "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" /* settings frame: sets                               \
@@ -217,19 +217,26 @@ int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
 
   // Test sending more metadata than the server will accept.
-  char client_payload[PFX_TOO_MUCH_METADATA_FROM_CLIENT_PAYLOAD_SIZE] =
-      PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR;
-  size_t offset = sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR);
+  gpr_strvec headers;
+  gpr_strvec_init(&headers);
   for (int i = 0; i < NUM_HEADERS; ++i) {
-    snprintf(client_payload + offset,
-             PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE,
-             "%s%02d%s",
-             PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR, i,
-             PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR);
-    offset += PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE;
+    char *str;
+    gpr_asprintf(&str, "%s%02d%s",
+                 PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR, i,
+                 PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR);
+    gpr_strvec_add(&headers, str);
   }
-  GRPC_RUN_BAD_CLIENT_TEST(server_verifier, client_validator,
-                           client_payload, 0);
+  size_t headers_len;
+  const char *client_headers = gpr_strvec_flatten(&headers, &headers_len);
+  gpr_strvec_destroy(&headers);
+  char client_payload[PFX_TOO_MUCH_METADATA_FROM_CLIENT_PAYLOAD_SIZE] =
+      PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR;
+  memcpy(
+      client_payload + sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_PREFIX_STR) - 1,
+      client_headers, headers_len);
+  GRPC_RUN_BAD_CLIENT_TEST(server_verifier, client_validator, client_payload,
+                           0);
+  gpr_free((void *)client_headers);
 
   // Test sending more metadata than the client will accept.
   GRPC_RUN_BAD_CLIENT_TEST(server_verifier_sends_too_much_metadata,
-- 
GitLab


From 2ea66c3b8f2dfba2d289dc1712f760b36d9eca2a Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Thu, 12 May 2016 16:26:48 -0700
Subject: [PATCH 507/525] Added comment about repeated responses

---
 src/proto/grpc/reflection/v1alpha/reflection.proto | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/proto/grpc/reflection/v1alpha/reflection.proto b/src/proto/grpc/reflection/v1alpha/reflection.proto
index 32cea75823..276ff0e255 100644
--- a/src/proto/grpc/reflection/v1alpha/reflection.proto
+++ b/src/proto/grpc/reflection/v1alpha/reflection.proto
@@ -94,6 +94,8 @@ message ServerReflectionResponse {
     // file_containing_extension requests with transitive dependencies. As
     // the repeated label is not allowed in oneof fields, we use a
     // FileDescriptorResponse message to encapsulate the repeated fields.
+    // The reflection service is allowed to avoid sending FileDescriptorProtos
+    // that were previously sent in response to earlier requests in the stream.
     FileDescriptorResponse file_descriptor_response = 4;
 
     // This message is used to answer all_extension_numbers_of_type requst.
-- 
GitLab


From 93466168b01fddc3bdac406c4278e54045097968 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Thu, 12 May 2016 16:41:27 -0700
Subject: [PATCH 508/525] Allow for multiline #endif guards

---
 tools/distrib/check_include_guards.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/distrib/check_include_guards.py b/tools/distrib/check_include_guards.py
index 8207f5cce0..9c23a70e00 100755
--- a/tools/distrib/check_include_guards.py
+++ b/tools/distrib/check_include_guards.py
@@ -56,7 +56,7 @@ class GuardValidator(object):
   def __init__(self):
     self.ifndef_re = re.compile(r'#ifndef ([A-Z][A-Z_1-9]*)')
     self.define_re = re.compile(r'#define ([A-Z][A-Z_1-9]*)')
-    self.endif_c_re = re.compile(r'#endif /\* ([A-Z][A-Z_1-9]*) \*/')
+    self.endif_c_re = re.compile(r'#endif /\* ([A-Z][A-Z_1-9]*) (?:\\ *\n *)?\*/')
     self.endif_cpp_re = re.compile(r'#endif  // ([A-Z][A-Z_1-9]*)')
     self.failed = False
 
@@ -132,7 +132,7 @@ class GuardValidator(object):
     # Is there a properly commented #endif?
     endif_re = self.endif_cpp_re if cpp_header else self.endif_c_re
     flines = fcontents.rstrip().splitlines()
-    match = endif_re.search(flines[-1])
+    match = endif_re.search('\n'.join(flines[-2:]))
     if not match:
       # No endif. Check if we have the last line as just '#endif' and if so
       # replace it with a properly commented one.
-- 
GitLab


From 6ce4d0b3350b81a932d545011aa966af25bb5350 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Thu, 12 May 2016 16:43:17 -0700
Subject: [PATCH 509/525] prepare to enable ubsan in continuous build

---
 Makefile                                      | 4 ++--
 build.yaml                                    | 8 +++++---
 tools/run_tests/configs.json                  | 3 +++
 tools/run_tests/dockerize/docker_run_tests.sh | 1 +
 4 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index f0a0ebd3eb..220c0c8a4a 100644
--- a/Makefile
+++ b/Makefile
@@ -187,8 +187,8 @@ CC_ubsan = clang
 CXX_ubsan = clang++
 LD_ubsan = clang
 LDXX_ubsan = clang++
-CPPFLAGS_ubsan = -O1 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument
-LDFLAGS_ubsan = -fsanitize=undefined
+CPPFLAGS_ubsan = -O0 -fsanitize-coverage=edge -fsanitize=undefined,unsigned-integer-overflow -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
+LDFLAGS_ubsan = -fsanitize=undefined,unsigned-integer-overflow
 DEFINES_ubsan = NDEBUG
 DEFINES_ubsan += GRPC_TEST_SLOWDOWN_BUILD_FACTOR=1.5
 
diff --git a/build.yaml b/build.yaml
index 187eb9ca8c..acf630593d 100644
--- a/build.yaml
+++ b/build.yaml
@@ -3255,14 +3255,16 @@ configs:
     timeout_multiplier: 5
   ubsan:
     CC: clang
-    CPPFLAGS: -O1 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer
-      -Wno-unused-command-line-argument
+    CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=undefined,unsigned-integer-overflow
+      -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
     CXX: clang++
     DEFINES: NDEBUG
     LD: clang
-    LDFLAGS: -fsanitize=undefined
+    LDFLAGS: -fsanitize=undefined,unsigned-integer-overflow
     LDXX: clang++
     compile_the_world: true
+    test_environ:
+      UBSAN_OPTIONS: print_stacktrace=1
     timeout_multiplier: 1.5
 defaults:
   boringssl:
diff --git a/tools/run_tests/configs.json b/tools/run_tests/configs.json
index 325e9aa929..bcc4118d2f 100644
--- a/tools/run_tests/configs.json
+++ b/tools/run_tests/configs.json
@@ -56,6 +56,9 @@
   }, 
   {
     "config": "ubsan", 
+    "environ": {
+      "UBSAN_OPTIONS": "print_stacktrace=1"
+    }, 
     "timeout_multiplier": 1.5
   }, 
   {
diff --git a/tools/run_tests/dockerize/docker_run_tests.sh b/tools/run_tests/dockerize/docker_run_tests.sh
index 2fc66c21f5..8c6143d24f 100755
--- a/tools/run_tests/dockerize/docker_run_tests.sh
+++ b/tools/run_tests/dockerize/docker_run_tests.sh
@@ -35,6 +35,7 @@ set -e
 
 export CONFIG=$config
 export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer
+export PATH=$PATH:/usr/bin/llvm-symbolizer
 
 # Ensure that programs depending on current-user-ownership of cache directories
 # are satisfied (it's being mounted from outside the image).
-- 
GitLab


From e644cfddb8b62818beaf1a875347e9ea7892195e Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Thu, 12 May 2016 17:01:08 -0700
Subject: [PATCH 510/525] better docstrings for compression_types.h

---
 include/grpc/impl/codegen/compression_types.h | 22 ++++++++++++++++---
 third_party/protobuf                          |  2 +-
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/include/grpc/impl/codegen/compression_types.h b/include/grpc/impl/codegen/compression_types.h
index 0daccd92f2..683ed3a488 100644
--- a/include/grpc/impl/codegen/compression_types.h
+++ b/include/grpc/impl/codegen/compression_types.h
@@ -42,9 +42,10 @@ extern "C" {
 
 /** To be used in channel arguments */
 #define GRPC_COMPRESSION_ALGORITHM_ARG "grpc.compression_algorithm"
+#define GRPC_COMPRESSION_LEVEL_ARG "grpc.compression_level"
 #define GRPC_COMPRESSION_ALGORITHM_STATE_ARG "grpc.compression_algorithm_state"
 
-/* The various compression algorithms supported by GRPC */
+/* The various compression algorithms supported by gRPC */
 typedef enum {
   GRPC_COMPRESS_NONE = 0,
   GRPC_COMPRESS_DEFLATE,
@@ -53,6 +54,10 @@ typedef enum {
   GRPC_COMPRESS_ALGORITHMS_COUNT
 } grpc_compression_algorithm;
 
+/** Compression levels allow a party with knowledge of its peer's accepted
+ * encodings to request compression in an abstract way. The level-algorithm
+ * mapping is performed internally and depends on the peer's supported
+ * compression algorithms. */
 typedef enum {
   GRPC_COMPRESS_LEVEL_NONE = 0,
   GRPC_COMPRESS_LEVEL_LOW,
@@ -62,8 +67,19 @@ typedef enum {
 } grpc_compression_level;
 
 typedef struct grpc_compression_options {
-  uint32_t enabled_algorithms_bitset; /**< All algs are enabled by default */
-  grpc_compression_algorithm default_compression_algorithm; /**< for channel */
+  /** All algs are enabled by default. This option corresponds to the channel
+   * argument key behind \a GRPC_COMPRESSION_ALGORITHM_STATE_ARG */
+  uint32_t enabled_algorithms_bitset;
+
+  /** The default channel compression algorithm. It'll be used in the absence of
+   * call specific settings. This option corresponds to the channel argument key
+   * behind \a GRPC_COMPRESSION_ALGORITHM_ARG */
+  grpc_compression_algorithm default_compression_algorithm;
+
+  /** The default channel compression level. It'll be used in the absence of
+   * call specific settings. This option corresponds to the channel argument key
+   * behind \a GRPC_COMPRESSION_ALGORITHM_ARG */
+  grpc_compression_algorithm default_compression_level;
 } grpc_compression_options;
 
 #ifdef __cplusplus
diff --git a/third_party/protobuf b/third_party/protobuf
index a1938b2aa9..d5fb408ddc 160000
--- a/third_party/protobuf
+++ b/third_party/protobuf
@@ -1 +1 @@
-Subproject commit a1938b2aa9ca86ce7ce50c27ff9737c1008d2a03
+Subproject commit d5fb408ddc281ffcadeb08699e65bb694656d0bd
-- 
GitLab


From 183ba02ce7909b8c5bf1c3019f9da0123ddae720 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Thu, 12 May 2016 17:08:19 -0700
Subject: [PATCH 511/525] Renamed some defines

---
 include/grpc/impl/codegen/compression_types.h | 14 ++++++++------
 src/core/lib/channel/channel_args.c           |  9 +++++----
 src/cpp/common/channel_arguments.cc           |  2 +-
 src/cpp/server/server_builder.cc              |  2 +-
 test/core/channel/channel_args_test.c         |  3 ++-
 5 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/include/grpc/impl/codegen/compression_types.h b/include/grpc/impl/codegen/compression_types.h
index 683ed3a488..1d500c971c 100644
--- a/include/grpc/impl/codegen/compression_types.h
+++ b/include/grpc/impl/codegen/compression_types.h
@@ -41,9 +41,10 @@ extern "C" {
 #endif
 
 /** To be used in channel arguments */
-#define GRPC_COMPRESSION_ALGORITHM_ARG "grpc.compression_algorithm"
-#define GRPC_COMPRESSION_LEVEL_ARG "grpc.compression_level"
-#define GRPC_COMPRESSION_ALGORITHM_STATE_ARG "grpc.compression_algorithm_state"
+#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM "grpc.compression_algorithm"
+#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL "grpc.compression_level"
+#define GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET \
+  "grpc.compression_algorithm_state"
 
 /* The various compression algorithms supported by gRPC */
 typedef enum {
@@ -68,17 +69,18 @@ typedef enum {
 
 typedef struct grpc_compression_options {
   /** All algs are enabled by default. This option corresponds to the channel
-   * argument key behind \a GRPC_COMPRESSION_ALGORITHM_STATE_ARG */
+   * argument key behind \a GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET
+   */
   uint32_t enabled_algorithms_bitset;
 
   /** The default channel compression algorithm. It'll be used in the absence of
    * call specific settings. This option corresponds to the channel argument key
-   * behind \a GRPC_COMPRESSION_ALGORITHM_ARG */
+   * behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM */
   grpc_compression_algorithm default_compression_algorithm;
 
   /** The default channel compression level. It'll be used in the absence of
    * call specific settings. This option corresponds to the channel argument key
-   * behind \a GRPC_COMPRESSION_ALGORITHM_ARG */
+   * behind \a GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL */
   grpc_compression_algorithm default_compression_level;
 } grpc_compression_options;
 
diff --git a/src/core/lib/channel/channel_args.c b/src/core/lib/channel/channel_args.c
index 28d2d78d00..893cf0700e 100644
--- a/src/core/lib/channel/channel_args.c
+++ b/src/core/lib/channel/channel_args.c
@@ -170,7 +170,7 @@ grpc_compression_algorithm grpc_channel_args_get_compression_algorithm(
   if (a == NULL) return 0;
   for (i = 0; i < a->num_args; ++i) {
     if (a->args[i].type == GRPC_ARG_INTEGER &&
-        !strcmp(GRPC_COMPRESSION_ALGORITHM_ARG, a->args[i].key)) {
+        !strcmp(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, a->args[i].key)) {
       return (grpc_compression_algorithm)a->args[i].value.integer;
       break;
     }
@@ -182,7 +182,7 @@ grpc_channel_args *grpc_channel_args_set_compression_algorithm(
     grpc_channel_args *a, grpc_compression_algorithm algorithm) {
   grpc_arg tmp;
   tmp.type = GRPC_ARG_INTEGER;
-  tmp.key = GRPC_COMPRESSION_ALGORITHM_ARG;
+  tmp.key = GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM;
   tmp.value.integer = algorithm;
   return grpc_channel_args_copy_and_add(a, &tmp, 1);
 }
@@ -196,7 +196,8 @@ static int find_compression_algorithm_states_bitset(const grpc_channel_args *a,
     size_t i;
     for (i = 0; i < a->num_args; ++i) {
       if (a->args[i].type == GRPC_ARG_INTEGER &&
-          !strcmp(GRPC_COMPRESSION_ALGORITHM_STATE_ARG, a->args[i].key)) {
+          !strcmp(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
+                  a->args[i].key)) {
         *states_arg = &a->args[i].value.integer;
         return 1; /* GPR_TRUE */
       }
@@ -222,7 +223,7 @@ grpc_channel_args *grpc_channel_args_compression_algorithm_set_state(
     /* create a new arg */
     grpc_arg tmp;
     tmp.type = GRPC_ARG_INTEGER;
-    tmp.key = GRPC_COMPRESSION_ALGORITHM_STATE_ARG;
+    tmp.key = GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET;
     /* all enabled by default */
     tmp.value.integer = (1u << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1;
     if (state != 0) {
diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc
index db3558f192..f297ae8587 100644
--- a/src/cpp/common/channel_arguments.cc
+++ b/src/cpp/common/channel_arguments.cc
@@ -85,7 +85,7 @@ void ChannelArguments::Swap(ChannelArguments& other) {
 
 void ChannelArguments::SetCompressionAlgorithm(
     grpc_compression_algorithm algorithm) {
-  SetInt(GRPC_COMPRESSION_ALGORITHM_ARG, algorithm);
+  SetInt(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, algorithm);
 }
 
 // Note: a second call to this will add in front the result of the first call.
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index 9658a56745..61f0f6ae2a 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -123,7 +123,7 @@ std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
   if (max_message_size_ > 0) {
     args.SetInt(GRPC_ARG_MAX_MESSAGE_LENGTH, max_message_size_);
   }
-  args.SetInt(GRPC_COMPRESSION_ALGORITHM_STATE_ARG,
+  args.SetInt(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
               compression_options_.enabled_algorithms_bitset);
   std::unique_ptr<Server> server(
       new Server(thread_pool.release(), true, max_message_size_, &args));
diff --git a/test/core/channel/channel_args_test.c b/test/core/channel/channel_args_test.c
index c7fc25960c..c2fc05095a 100644
--- a/test/core/channel/channel_args_test.c
+++ b/test/core/channel/channel_args_test.c
@@ -77,7 +77,8 @@ static void test_set_compression_algorithm(void) {
   ch_args =
       grpc_channel_args_set_compression_algorithm(NULL, GRPC_COMPRESS_GZIP);
   GPR_ASSERT(ch_args->num_args == 1);
-  GPR_ASSERT(strcmp(ch_args->args[0].key, GRPC_COMPRESSION_ALGORITHM_ARG) == 0);
+  GPR_ASSERT(strcmp(ch_args->args[0].key,
+                    GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM) == 0);
   GPR_ASSERT(ch_args->args[0].type == GRPC_ARG_INTEGER);
 
   grpc_channel_args_destroy(ch_args);
-- 
GitLab


From 11b520afc68042a60f1978c632d545b4f7d0686f Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Thu, 12 May 2016 17:13:43 -0700
Subject: [PATCH 512/525] New protobuf version

---
 third_party/protobuf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/third_party/protobuf b/third_party/protobuf
index d5fb408ddc..a1938b2aa9 160000
--- a/third_party/protobuf
+++ b/third_party/protobuf
@@ -1 +1 @@
-Subproject commit d5fb408ddc281ffcadeb08699e65bb694656d0bd
+Subproject commit a1938b2aa9ca86ce7ce50c27ff9737c1008d2a03
-- 
GitLab


From 5028334df3a8b6c389a0d959519b3b1a59484ab3 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Thu, 12 May 2016 17:18:54 -0700
Subject: [PATCH 513/525] Further renamings (compression channel arg keys)

---
 include/grpc/impl/codegen/compression_types.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/include/grpc/impl/codegen/compression_types.h b/include/grpc/impl/codegen/compression_types.h
index 1d500c971c..8d2ec3b9d7 100644
--- a/include/grpc/impl/codegen/compression_types.h
+++ b/include/grpc/impl/codegen/compression_types.h
@@ -41,10 +41,11 @@ extern "C" {
 #endif
 
 /** To be used in channel arguments */
-#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM "grpc.compression_algorithm"
-#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL "grpc.compression_level"
+#define GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM \
+  "grpc.default_compression_algorithm"
+#define GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL "grpc.default_compression_level"
 #define GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET \
-  "grpc.compression_algorithm_state"
+  "grpc.compression_enabled_algorithms_bitset"
 
 /* The various compression algorithms supported by gRPC */
 typedef enum {
-- 
GitLab


From fdb8931e476396fa69298b6914db4f0bb855eabe Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 13 May 2016 10:38:34 -0700
Subject: [PATCH 514/525] check for copyright in .bat files

---
 tools/distrib/check_copyright.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/distrib/check_copyright.py b/tools/distrib/check_copyright.py
index 68411c631d..4577ab3d11 100755
--- a/tools/distrib/check_copyright.py
+++ b/tools/distrib/check_copyright.py
@@ -71,6 +71,7 @@ with open('LICENSE') as f:
 # that given a line of license text, returns what should
 # be in the file
 LICENSE_PREFIX = {
+  '.bat':       r'@rem\s*',
   '.c':         r'\s*(?://|\*)\s*',
   '.cc':        r'\s*(?://|\*)\s*',
   '.h':         r'\s*(?://|\*)\s*',
-- 
GitLab


From f551edf73068f13ae1308d53d8ef18a2f6bcc5dc Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 13 May 2016 10:49:17 -0700
Subject: [PATCH 515/525] add missing copyrights to .bat files

---
 .../csharp/helloworld/generate_protos.bat     | 29 +++++++++++++++++++
 .../csharp/route_guide/generate_protos.bat    | 29 +++++++++++++++++++
 src/csharp/build_packages.bat                 | 29 +++++++++++++++++++
 src/csharp/buildall.bat                       | 29 +++++++++++++++++++
 test/distrib/csharp/build_vs2015.bat          | 29 +++++++++++++++++++
 tools/run_tests/build_artifact_csharp.bat     | 29 +++++++++++++++++++
 tools/run_tests/post_tests_csharp.bat         | 29 +++++++++++++++++++
 tools/run_tests/pre_build_c.bat               | 29 +++++++++++++++++++
 tools/run_tests/pre_build_csharp.bat          | 29 +++++++++++++++++++
 vsprojects/build_plugins.bat                  | 29 +++++++++++++++++++
 vsprojects/build_vs2010.bat                   | 29 +++++++++++++++++++
 vsprojects/build_vs2013.bat                   | 29 +++++++++++++++++++
 vsprojects/build_vs2015.bat                   | 29 +++++++++++++++++++
 vsprojects/coapp/openssl/buildall.bat         | 28 ++++++++++++++++++
 vsprojects/coapp/zlib/buildall.bat            | 29 +++++++++++++++++++
 15 files changed, 434 insertions(+)

diff --git a/examples/csharp/helloworld/generate_protos.bat b/examples/csharp/helloworld/generate_protos.bat
index 99f81a7d82..3be1ceb80f 100644
--- a/examples/csharp/helloworld/generate_protos.bat
+++ b/examples/csharp/helloworld/generate_protos.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Generate the C# code for .proto files
 
 setlocal
diff --git a/examples/csharp/route_guide/generate_protos.bat b/examples/csharp/route_guide/generate_protos.bat
index 12be52c680..b3c5136063 100644
--- a/examples/csharp/route_guide/generate_protos.bat
+++ b/examples/csharp/route_guide/generate_protos.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Generate the C# code for .proto files
 
 setlocal
diff --git a/src/csharp/build_packages.bat b/src/csharp/build_packages.bat
index 7520b0f81a..28e4262121 100644
--- a/src/csharp/build_packages.bat
+++ b/src/csharp/build_packages.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Builds gRPC NuGet packages
 
 @rem Current package versions
diff --git a/src/csharp/buildall.bat b/src/csharp/buildall.bat
index f800756dfe..0beb30c198 100644
--- a/src/csharp/buildall.bat
+++ b/src/csharp/buildall.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Convenience script to build gRPC C# from command line
 
 setlocal
diff --git a/test/distrib/csharp/build_vs2015.bat b/test/distrib/csharp/build_vs2015.bat
index 50485a30f3..5779878e09 100644
--- a/test/distrib/csharp/build_vs2015.bat
+++ b/test/distrib/csharp/build_vs2015.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Convenience wrapper that runs specified gRPC target using msbuild
 @rem Usage: build.bat TARGET_NAME
 
diff --git a/tools/run_tests/build_artifact_csharp.bat b/tools/run_tests/build_artifact_csharp.bat
index 33dc8c25ae..24c8d485f9 100644
--- a/tools/run_tests/build_artifact_csharp.bat
+++ b/tools/run_tests/build_artifact_csharp.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Builds C# artifacts on Windows
 
 @call vsprojects\build_vs2013.bat %* || goto :error
diff --git a/tools/run_tests/post_tests_csharp.bat b/tools/run_tests/post_tests_csharp.bat
index 7851b9137a..0d49a00b2a 100644
--- a/tools/run_tests/post_tests_csharp.bat
+++ b/tools/run_tests/post_tests_csharp.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Runs C# tests for given assembly from command line. The Grpc.sln solution needs to be built before running the tests.
 
 setlocal
diff --git a/tools/run_tests/pre_build_c.bat b/tools/run_tests/pre_build_c.bat
index f0449f3c42..e4ab69384c 100644
--- a/tools/run_tests/pre_build_c.bat
+++ b/tools/run_tests/pre_build_c.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Performs nuget restore step for C/C++.
 
 setlocal
diff --git a/tools/run_tests/pre_build_csharp.bat b/tools/run_tests/pre_build_csharp.bat
index 853a8f4325..e7131d504c 100644
--- a/tools/run_tests/pre_build_csharp.bat
+++ b/tools/run_tests/pre_build_csharp.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Performs nuget restore step for C#.
 
 setlocal
diff --git a/vsprojects/build_plugins.bat b/vsprojects/build_plugins.bat
index 4c33a584ad..7c8e056dc4 100644
--- a/vsprojects/build_plugins.bat
+++ b/vsprojects/build_plugins.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Convenience script to build gRPC protoc plugins from command line. protoc plugins are used to generate service stub code from .proto service defintions.
 
 setlocal
diff --git a/vsprojects/build_vs2010.bat b/vsprojects/build_vs2010.bat
index 1bc3c86a92..d951295369 100644
--- a/vsprojects/build_vs2010.bat
+++ b/vsprojects/build_vs2010.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Convenience wrapper that runs specified gRPC target using msbuild
 @rem Usage: build_vs2010.bat TARGET_NAME
 
diff --git a/vsprojects/build_vs2013.bat b/vsprojects/build_vs2013.bat
index 82c0a3ad82..c500bf11ed 100644
--- a/vsprojects/build_vs2013.bat
+++ b/vsprojects/build_vs2013.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Convenience wrapper that runs specified gRPC target using msbuild
 @rem Usage: build_vs2013.bat TARGET_NAME
 
diff --git a/vsprojects/build_vs2015.bat b/vsprojects/build_vs2015.bat
index c6e1b433a3..e2f4b3db06 100644
--- a/vsprojects/build_vs2015.bat
+++ b/vsprojects/build_vs2015.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @rem Convenience wrapper that runs specified gRPC target using msbuild
 @rem Usage: build_vs2015.bat TARGET_NAME
 
diff --git a/vsprojects/coapp/openssl/buildall.bat b/vsprojects/coapp/openssl/buildall.bat
index 2bf1c87077..f5797abb21 100644
--- a/vsprojects/coapp/openssl/buildall.bat
+++ b/vsprojects/coapp/openssl/buildall.bat
@@ -1,3 +1,31 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 rem Restore using NuGet dependencies (Download NuGet from nuget.org and put it in this directory first)
 nuget restore  || goto eof:
diff --git a/vsprojects/coapp/zlib/buildall.bat b/vsprojects/coapp/zlib/buildall.bat
index 840410a5a2..2b4b4a1c80 100644
--- a/vsprojects/coapp/zlib/buildall.bat
+++ b/vsprojects/coapp/zlib/buildall.bat
@@ -1,3 +1,32 @@
+@rem Copyright 2016, Google Inc.
+@rem All rights reserved.
+@rem
+@rem Redistribution and use in source and binary forms, with or without
+@rem modification, are permitted provided that the following conditions are
+@rem met:
+@rem
+@rem     * Redistributions of source code must retain the above copyright
+@rem notice, this list of conditions and the following disclaimer.
+@rem     * Redistributions in binary form must reproduce the above
+@rem copyright notice, this list of conditions and the following disclaimer
+@rem in the documentation and/or other materials provided with the
+@rem distribution.
+@rem     * Neither the name of Google Inc. nor the names of its
+@rem contributors may be used to endorse or promote products derived from
+@rem this software without specific prior written permission.
+@rem
+@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 @echo off
 setlocal
 
-- 
GitLab


From 2754c91fee5cbe57cee540e08f72e111a80911e0 Mon Sep 17 00:00:00 2001
From: David Klempner <klempner@google.com>
Date: Fri, 13 May 2016 13:11:28 -0700
Subject: [PATCH 516/525] Add an API to return an unused port to the portserver

---
 test/core/util/port.h         |  6 ++++++
 test/core/util/port_posix.c   | 29 +++++++++++++++++++++++++++++
 test/core/util/port_windows.c | 29 +++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+)

diff --git a/test/core/util/port.h b/test/core/util/port.h
index 93788bcab2..4b70fdc978 100644
--- a/test/core/util/port.h
+++ b/test/core/util/port.h
@@ -45,6 +45,12 @@ int grpc_pick_unused_port();
    on failure. */
 int grpc_pick_unused_port_or_die();
 
+/* Return a port which was previously returned by grpc_pick_unused_port().
+ * Implementations of grpc_pick_unused_port() backed by a portserver may limit
+ * the total number of ports available; this lets a binary return its allocated
+ * ports back to the server if it is going to allocate a large number. */
+void grpc_recycle_unused_port();
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c
index eabd62fafc..32b1849ec4 100644
--- a/test/core/util/port_posix.c
+++ b/test/core/util/port_posix.c
@@ -68,6 +68,31 @@ static int has_port_been_chosen(int port) {
   return 0;
 }
 
+static int free_chosen_port(int port) {
+  size_t i;
+  int found = 0;
+  size_t found_at = 0;
+  char *env = gpr_getenv("GRPC_TEST_PORT_SERVER");
+  if (env != NULL) {
+    /* Find the port and erase it from the list, then tell the server it can be
+       freed. */
+    for (i = 0; i < num_chosen_ports; i++) {
+      if (chosen_ports[i] == port) {
+        GPR_ASSERT(found == 0);
+        found = 1;
+        found_at = i;
+      }
+    }
+    if (found) {
+      chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
+      grpc_free_port_using_server(env, port);
+      num_chosen_ports--;
+      chosen_ports = gpr_realloc(chosen_ports, sizeof(int) * num_chosen_ports);
+    }
+  }
+  return found;
+}
+
 static void free_chosen_ports(void) {
   char *env = gpr_getenv("GRPC_TEST_PORT_SERVER");
   if (env != NULL) {
@@ -210,4 +235,8 @@ int grpc_pick_unused_port_or_die(void) {
   return port;
 }
 
+void grpc_recycle_unused_port(int port) {
+  GPR_ASSERT(free_chosen_port(port));
+}
+
 #endif /* GPR_POSIX_SOCKET && GRPC_TEST_PICK_PORT */
diff --git a/test/core/util/port_windows.c b/test/core/util/port_windows.c
index 154d607ec7..29f3404b2a 100644
--- a/test/core/util/port_windows.c
+++ b/test/core/util/port_windows.c
@@ -71,6 +71,31 @@ static int has_port_been_chosen(int port) {
   return 0;
 }
 
+static int free_chosen_port(int port) {
+  size_t i;
+  int found = 0;
+  size_t found_at = 0;
+  char *env = gpr_getenv("GRPC_TEST_PORT_SERVER");
+  if (env != NULL) {
+    /* Find the port and erase it from the list, then tell the server it can be
+       freed. */
+    for (i = 0; i < num_chosen_ports; i++) {
+      if (chosen_ports[i] == port) {
+        GPR_ASSERT(found == 0);
+        found = 1;
+        found_at = i;
+      }
+    }
+    if (found) {
+      chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
+      grpc_free_port_using_server(env, port);
+      num_chosen_ports--;
+      chosen_ports = gpr_realloc(chosen_ports, sizeof(int) * num_chosen_ports);
+    }
+  }
+  return found;
+}
+
 static void free_chosen_ports(void) {
   char *env = gpr_getenv("GRPC_TEST_PORT_SERVER");
   if (env != NULL) {
@@ -216,4 +241,8 @@ int grpc_pick_unused_port_or_die(void) {
   return port;
 }
 
+void grpc_recycle_unused_port(int port) {
+  GPR_ASSERT(free_chosen_port(port));
+}
+
 #endif /* GPR_WINSOCK_SOCKET && GRPC_TEST_PICK_PORT */
-- 
GitLab


From c9e1959adf29724a7aabcb9fa928a40a929686f3 Mon Sep 17 00:00:00 2001
From: Jan Tattermusch <jtattermusch@google.com>
Date: Fri, 13 May 2016 13:24:59 -0700
Subject: [PATCH 517/525] add copyright to the template as well

---
 .../src/csharp/build_packages.bat.template    | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/templates/src/csharp/build_packages.bat.template b/templates/src/csharp/build_packages.bat.template
index 3b445a8ac9..93a3531abc 100644
--- a/templates/src/csharp/build_packages.bat.template
+++ b/templates/src/csharp/build_packages.bat.template
@@ -1,5 +1,34 @@
 %YAML 1.2
 --- |
+  @rem Copyright 2016, Google Inc.
+  @rem All rights reserved.
+  @rem
+  @rem Redistribution and use in source and binary forms, with or without
+  @rem modification, are permitted provided that the following conditions are
+  @rem met:
+  @rem
+  @rem     * Redistributions of source code must retain the above copyright
+  @rem notice, this list of conditions and the following disclaimer.
+  @rem     * Redistributions in binary form must reproduce the above
+  @rem copyright notice, this list of conditions and the following disclaimer
+  @rem in the documentation and/or other materials provided with the
+  @rem distribution.
+  @rem     * Neither the name of Google Inc. nor the names of its
+  @rem contributors may be used to endorse or promote products derived from
+  @rem this software without specific prior written permission.
+  @rem
+  @rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  @rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  @rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  @rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  @rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  @rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  @rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  @rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  @rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  @rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  @rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  
   @rem Builds gRPC NuGet packages
   
   @rem Current package versions
-- 
GitLab


From 013a0ea421dfba146a879d4574e2aeac6c93ec36 Mon Sep 17 00:00:00 2001
From: Carl Mastrangelo <notcarl@google.com>
Date: Fri, 13 May 2016 13:24:18 -0700
Subject: [PATCH 518/525] Fix stress test JVM Args

---
 tools/run_tests/stress_test/configs/java.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/run_tests/stress_test/configs/java.json b/tools/run_tests/stress_test/configs/java.json
index c07d75e79d..b7c6d8b286 100644
--- a/tools/run_tests/stress_test/configs/java.json
+++ b/tools/run_tests/stress_test/configs/java.json
@@ -23,7 +23,7 @@
           "total_only": "true"
         },
         "env": {
-          "STRESSTEST_CLIENT_OPTS":"-Xmx3g -Xms3g -XX:NewSize=1.5g -XX:MaxNewSize=1.5g"
+          "STRESSTEST_CLIENT_OPTS":"-Xmx3g -Xms3g -XX:NewSize=1500m -XX:MaxNewSize=1500m -XX:+UseConcMarkSweepGC"
         }
       }
     },
@@ -50,7 +50,7 @@
           "use_tls": "false"
         },
         "env": {
-          "TEST_SERVER_OPTS":"-Xmx3g -Xms3g -XX:NewSize=1.5g -XX:MaxNewSize=1.5g"
+          "TEST_SERVER_OPTS":"-Xmx3g -Xms3g -XX:NewSize=1500m -XX:MaxNewSize=1500m  -XX:+UseConcMarkSweepGC"
         }
       }
     },
-- 
GitLab


From 0fde7131aae5bed711c82af03884aa81f57d1732 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Fri, 13 May 2016 15:13:51 -0700
Subject: [PATCH 519/525] Fixed usage of anon namespace inside .h

---
 include/grpc++/impl/codegen/proto_utils.h | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/include/grpc++/impl/codegen/proto_utils.h b/include/grpc++/impl/codegen/proto_utils.h
index d044ddc642..3bad468a74 100644
--- a/include/grpc++/impl/codegen/proto_utils.h
+++ b/include/grpc++/impl/codegen/proto_utils.h
@@ -49,7 +49,7 @@ namespace grpc {
 
 extern CoreCodegenInterface* g_core_codegen_interface;
 
-namespace {
+namespace internal {
 
 const int kGrpcBufferWriterMaxBufferLength = 8192;
 
@@ -166,7 +166,7 @@ class GrpcBufferReader GRPC_FINAL
   grpc_byte_buffer_reader reader_;
   gpr_slice slice_;
 };
-}  // namespace
+}  // namespace internal
 
 template <class T>
 class SerializationTraits<T, typename std::enable_if<std::is_base_of<
@@ -176,7 +176,7 @@ class SerializationTraits<T, typename std::enable_if<std::is_base_of<
                           grpc_byte_buffer** bp, bool* own_buffer) {
     *own_buffer = true;
     int byte_size = msg.ByteSize();
-    if (byte_size <= kGrpcBufferWriterMaxBufferLength) {
+    if (byte_size <= internal::kGrpcBufferWriterMaxBufferLength) {
       gpr_slice slice = g_core_codegen_interface->gpr_slice_malloc(byte_size);
       GPR_CODEGEN_ASSERT(
           GPR_SLICE_END_PTR(slice) ==
@@ -185,7 +185,8 @@ class SerializationTraits<T, typename std::enable_if<std::is_base_of<
       g_core_codegen_interface->gpr_slice_unref(slice);
       return g_core_codegen_interface->ok();
     } else {
-      GrpcBufferWriter writer(bp, kGrpcBufferWriterMaxBufferLength);
+      internal::GrpcBufferWriter writer(
+          bp, internal::kGrpcBufferWriterMaxBufferLength);
       return msg.SerializeToZeroCopyStream(&writer)
                  ? g_core_codegen_interface->ok()
                  : Status(StatusCode::INTERNAL, "Failed to serialize message");
@@ -200,7 +201,7 @@ class SerializationTraits<T, typename std::enable_if<std::is_base_of<
     }
     Status result = g_core_codegen_interface->ok();
     {
-      GrpcBufferReader reader(buffer);
+      internal::GrpcBufferReader reader(buffer);
       ::grpc::protobuf::io::CodedInputStream decoder(&reader);
       if (max_message_size > 0) {
         decoder.SetTotalBytesLimit(max_message_size, max_message_size);
-- 
GitLab


From c7614cf2779c4909d8ec3f64923242cfd02f157a Mon Sep 17 00:00:00 2001
From: David Klempner <klempner@google.com>
Date: Fri, 13 May 2016 15:21:57 -0700
Subject: [PATCH 520/525] Fix declarations in port.h to not be ambiguous in C
 due to K&R.

Also actually add the port parameter to grpc_recycle_unused_port.

Also remove the downsizing gpr_realloc in the recycle codepath, which is
unnecessary and can free the pointer.
---
 test/core/util/port.h         |  6 +++---
 test/core/util/port_posix.c   | 25 ++++++++++++-------------
 test/core/util/port_windows.c |  1 -
 3 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/test/core/util/port.h b/test/core/util/port.h
index 4b70fdc978..faeabbae9b 100644
--- a/test/core/util/port.h
+++ b/test/core/util/port.h
@@ -40,16 +40,16 @@ extern "C" {
 
 /* pick a port number that is currently unused by either tcp or udp. return
    0 on failure. */
-int grpc_pick_unused_port();
+int grpc_pick_unused_port(void);
 /* pick a port number that is currently unused by either tcp or udp. abort
    on failure. */
-int grpc_pick_unused_port_or_die();
+int grpc_pick_unused_port_or_die(void);
 
 /* Return a port which was previously returned by grpc_pick_unused_port().
  * Implementations of grpc_pick_unused_port() backed by a portserver may limit
  * the total number of ports available; this lets a binary return its allocated
  * ports back to the server if it is going to allocate a large number. */
-void grpc_recycle_unused_port();
+void grpc_recycle_unused_port(int port);
 
 #ifdef __cplusplus
 }
diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c
index 32b1849ec4..7e270ff975 100644
--- a/test/core/util/port_posix.c
+++ b/test/core/util/port_posix.c
@@ -73,21 +73,20 @@ static int free_chosen_port(int port) {
   int found = 0;
   size_t found_at = 0;
   char *env = gpr_getenv("GRPC_TEST_PORT_SERVER");
-  if (env != NULL) {
-    /* Find the port and erase it from the list, then tell the server it can be
-       freed. */
-    for (i = 0; i < num_chosen_ports; i++) {
-      if (chosen_ports[i] == port) {
-        GPR_ASSERT(found == 0);
-        found = 1;
-        found_at = i;
-      }
+  /* Find the port and erase it from the list, then tell the server it can be
+     freed. */
+  for (i = 0; i < num_chosen_ports; i++) {
+    if (chosen_ports[i] == port) {
+      GPR_ASSERT(found == 0);
+      found = 1;
+      found_at = i;
     }
-    if (found) {
-      chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
+  }
+  if (found) {
+    chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
+    num_chosen_ports--;
+    if (env) {
       grpc_free_port_using_server(env, port);
-      num_chosen_ports--;
-      chosen_ports = gpr_realloc(chosen_ports, sizeof(int) * num_chosen_ports);
     }
   }
   return found;
diff --git a/test/core/util/port_windows.c b/test/core/util/port_windows.c
index 29f3404b2a..36c8d2856c 100644
--- a/test/core/util/port_windows.c
+++ b/test/core/util/port_windows.c
@@ -90,7 +90,6 @@ static int free_chosen_port(int port) {
       chosen_ports[found_at] = chosen_ports[num_chosen_ports - 1];
       grpc_free_port_using_server(env, port);
       num_chosen_ports--;
-      chosen_ports = gpr_realloc(chosen_ports, sizeof(int) * num_chosen_ports);
     }
   }
   return found;
-- 
GitLab


From 6fb122dc6e6245963534432c93418aadecd2e72f Mon Sep 17 00:00:00 2001
From: David Klempner <klempner@google.com>
Date: Fri, 13 May 2016 15:24:17 -0700
Subject: [PATCH 521/525] Add calls to grpc_recycle_unused_port to two of the
 tests which call grpc_pick_unused_port a lot.

---
 test/core/end2end/dualstack_socket_test.c | 5 +++++
 test/cpp/end2end/async_end2end_test.cc    | 6 ++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/test/core/end2end/dualstack_socket_test.c b/test/core/end2end/dualstack_socket_test.c
index 81f76ea79c..202fb3b6a8 100644
--- a/test/core/end2end/dualstack_socket_test.c
+++ b/test/core/end2end/dualstack_socket_test.c
@@ -88,9 +88,11 @@ void test_connect(const char *server_host, const char *client_host, int port,
   int was_cancelled = 2;
   grpc_call_details call_details;
   char *peer;
+  int picked_port = 0;
 
   if (port == 0) {
     port = grpc_pick_unused_port_or_die();
+    picked_port = 1;
   }
 
   gpr_join_host_port(&server_hostport, server_host, port);
@@ -263,6 +265,9 @@ void test_connect(const char *server_host, const char *client_host, int port,
 
   grpc_call_details_destroy(&call_details);
   gpr_free(details);
+  if (picked_port) {
+    grpc_recycle_unused_port(port);
+  }
 }
 
 int external_dns_works(const char *host) {
diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc
index e0649bd694..45f5eb1ddd 100644
--- a/test/cpp/end2end/async_end2end_test.cc
+++ b/test/cpp/end2end/async_end2end_test.cc
@@ -245,8 +245,8 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
   void SetUp() GRPC_OVERRIDE {
     poll_overrider_.reset(new PollingOverrider(!GetParam().disable_blocking));
 
-    int port = grpc_pick_unused_port_or_die();
-    server_address_ << "localhost:" << port;
+    port_ = grpc_pick_unused_port_or_die();
+    server_address_ << "localhost:" << port_;
 
     // Setup server
     ServerBuilder builder;
@@ -274,6 +274,7 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
       ;
     poll_overrider_.reset();
     gpr_tls_set(&g_is_async_end2end_test, 0);
+    grpc_recycle_unused_port(port_);
   }
 
   void ResetStub() {
@@ -325,6 +326,7 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
   std::unique_ptr<Server> server_;
   grpc::testing::EchoTestService::AsyncService service_;
   std::ostringstream server_address_;
+  int port_;
 
   std::unique_ptr<PollingOverrider> poll_overrider_;
 };
-- 
GitLab


From 3fe71993daf16332e04eec4cbc48dbb2286e2f64 Mon Sep 17 00:00:00 2001
From: Nathaniel Manista <nathaniel@google.com>
Date: Mon, 16 May 2016 12:06:10 +0000
Subject: [PATCH 522/525] Split and rename test_constants.PARALLELISM

Going forward we'd like to be able to test much larger numbers of RPCs
than the number of threads available to a test.
---
 src/python/grpcio/tests/unit/_cython/_channel_test.py  |  2 +-
 .../tests/unit/framework/common/test_constants.py      |  9 +++++++--
 .../face/_blocking_invocation_inline_service.py        | 10 +++++-----
 .../_future_invocation_asynchronous_event_service.py   |  8 ++++----
 4 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/python/grpcio/tests/unit/_cython/_channel_test.py b/src/python/grpcio/tests/unit/_cython/_channel_test.py
index 931cd9083e..3dc7a246ae 100644
--- a/src/python/grpcio/tests/unit/_cython/_channel_test.py
+++ b/src/python/grpcio/tests/unit/_cython/_channel_test.py
@@ -60,7 +60,7 @@ def _create_loop_destroy():
 def _in_parallel(behavior, arguments):
   threads = tuple(
       threading.Thread(target=behavior, args=arguments)
-      for _ in range(test_constants.PARALLELISM))
+      for _ in range(test_constants.THREAD_CONCURRENCY))
   for thread in threads:
     thread.start()
   for thread in threads:
diff --git a/src/python/grpcio/tests/unit/framework/common/test_constants.py b/src/python/grpcio/tests/unit/framework/common/test_constants.py
index 8d89101e09..b6682d396c 100644
--- a/src/python/grpcio/tests/unit/framework/common/test_constants.py
+++ b/src/python/grpcio/tests/unit/framework/common/test_constants.py
@@ -49,8 +49,13 @@ STREAM_LENGTH = 200
 # The size of payloads to transmit in tests.
 PAYLOAD_SIZE = 256 * 1024 + 17
 
-# The parallelism to use in tests of parallel RPCs.
-PARALLELISM = 200
+# The concurrency to use in tests of concurrent RPCs that will not create as
+# many threads as RPCs.
+RPC_CONCURRENCY = 200
+
+# The concurrency to use in tests of concurrent RPCs that will create as many
+# threads as RPCs.
+THREAD_CONCURRENCY = 25
 
 # The size of thread pools to use in tests.
 POOL_SIZE = 10
diff --git a/src/python/grpcio/tests/unit/framework/interfaces/face/_blocking_invocation_inline_service.py b/src/python/grpcio/tests/unit/framework/interfaces/face/_blocking_invocation_inline_service.py
index 649892463a..e338aaa396 100644
--- a/src/python/grpcio/tests/unit/framework/interfaces/face/_blocking_invocation_inline_service.py
+++ b/src/python/grpcio/tests/unit/framework/interfaces/face/_blocking_invocation_inline_service.py
@@ -146,13 +146,13 @@ class TestCase(six.with_metaclass(abc.ABCMeta, test_coverage.Coverage, unittest.
         test_messages.verify(second_request, second_response, self)
 
   def testParallelInvocations(self):
-    pool = logging_pool.pool(test_constants.PARALLELISM)
+    pool = logging_pool.pool(test_constants.THREAD_CONCURRENCY)
     for (group, method), test_messages_sequence in (
         six.iteritems(self._digest.unary_unary_messages_sequences)):
       for test_messages in test_messages_sequence:
         requests = []
         response_futures = []
-        for _ in range(test_constants.PARALLELISM):
+        for _ in range(test_constants.THREAD_CONCURRENCY):
           request = test_messages.request()
           response_future = pool.submit(
               self._invoker.blocking(group, method), request,
@@ -168,13 +168,13 @@ class TestCase(six.with_metaclass(abc.ABCMeta, test_coverage.Coverage, unittest.
     pool.shutdown(wait=True)
 
   def testWaitingForSomeButNotAllParallelInvocations(self):
-    pool = logging_pool.pool(test_constants.PARALLELISM)
+    pool = logging_pool.pool(test_constants.THREAD_CONCURRENCY)
     for (group, method), test_messages_sequence in (
         six.iteritems(self._digest.unary_unary_messages_sequences)):
       for test_messages in test_messages_sequence:
         requests = []
         response_futures_to_indices = {}
-        for index in range(test_constants.PARALLELISM):
+        for index in range(test_constants.THREAD_CONCURRENCY):
           request = test_messages.request()
           response_future = pool.submit(
               self._invoker.blocking(group, method), request,
@@ -184,7 +184,7 @@ class TestCase(six.with_metaclass(abc.ABCMeta, test_coverage.Coverage, unittest.
 
         some_completed_response_futures_iterator = itertools.islice(
             futures.as_completed(response_futures_to_indices),
-            test_constants.PARALLELISM // 2)
+            test_constants.THREAD_CONCURRENCY // 2)
         for response_future in some_completed_response_futures_iterator:
           index = response_futures_to_indices[response_future]
           test_messages.verify(requests[index], response_future.result(), self)
diff --git a/src/python/grpcio/tests/unit/framework/interfaces/face/_future_invocation_asynchronous_event_service.py b/src/python/grpcio/tests/unit/framework/interfaces/face/_future_invocation_asynchronous_event_service.py
index c3813d5f3a..791620307b 100644
--- a/src/python/grpcio/tests/unit/framework/interfaces/face/_future_invocation_asynchronous_event_service.py
+++ b/src/python/grpcio/tests/unit/framework/interfaces/face/_future_invocation_asynchronous_event_service.py
@@ -249,7 +249,7 @@ class TestCase(six.with_metaclass(abc.ABCMeta, test_coverage.Coverage, unittest.
       for test_messages in test_messages_sequence:
         requests = []
         response_futures = []
-        for _ in range(test_constants.PARALLELISM):
+        for _ in range(test_constants.THREAD_CONCURRENCY):
           request = test_messages.request()
           response_future = self._invoker.future(group, method)(
               request, test_constants.LONG_TIMEOUT)
@@ -263,13 +263,13 @@ class TestCase(six.with_metaclass(abc.ABCMeta, test_coverage.Coverage, unittest.
           test_messages.verify(request, response, self)
 
   def testWaitingForSomeButNotAllParallelInvocations(self):
-    pool = logging_pool.pool(test_constants.PARALLELISM)
+    pool = logging_pool.pool(test_constants.THREAD_CONCURRENCY)
     for (group, method), test_messages_sequence in (
         six.iteritems(self._digest.unary_unary_messages_sequences)):
       for test_messages in test_messages_sequence:
         requests = []
         response_futures_to_indices = {}
-        for index in range(test_constants.PARALLELISM):
+        for index in range(test_constants.THREAD_CONCURRENCY):
           request = test_messages.request()
           inner_response_future = self._invoker.future(group, method)(
               request, test_constants.LONG_TIMEOUT)
@@ -279,7 +279,7 @@ class TestCase(six.with_metaclass(abc.ABCMeta, test_coverage.Coverage, unittest.
 
         some_completed_response_futures_iterator = itertools.islice(
             futures.as_completed(response_futures_to_indices),
-            test_constants.PARALLELISM // 2)
+            test_constants.THREAD_CONCURRENCY // 2)
         for response_future in some_completed_response_futures_iterator:
           index = response_futures_to_indices[response_future]
           test_messages.verify(requests[index], response_future.result(), self)
-- 
GitLab


From 556e5ae525c4fbcffaebc7f0f60b3f0192e3003a Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Mon, 16 May 2016 11:00:33 -0700
Subject: [PATCH 523/525] Fix accelerated wakeups

We can end up in situations where a pollset needs to kick itself.

This is supposed to be an accelerated codepath, however a bug crept in
whereby we missed the opportunity to do so, resulting in needing to
round trip these wakeups redundantly through the OS and wake other
threads unnecessarily.
---
 src/core/lib/iomgr/ev_poll_posix.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/core/lib/iomgr/ev_poll_posix.c b/src/core/lib/iomgr/ev_poll_posix.c
index d1752327a2..e91ae40212 100644
--- a/src/core/lib/iomgr/ev_poll_posix.c
+++ b/src/core/lib/iomgr/ev_poll_posix.c
@@ -824,6 +824,7 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
      re-evaluate our pollers (this allows poll() based pollers to
      ensure they don't miss wakeups) */
   keep_polling = 1;
+  gpr_tls_set(&g_current_thread_poller, (intptr_t)pollset);
   while (keep_polling) {
     keep_polling = 0;
     if (!pollset->kicked_without_pollers) {
@@ -832,7 +833,6 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
         added_worker = 1;
         gpr_tls_set(&g_current_thread_worker, (intptr_t)&worker);
       }
-      gpr_tls_set(&g_current_thread_poller, (intptr_t)pollset);
       GPR_TIMER_BEGIN("maybe_work_and_unlock", 0);
 #define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
 #define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
@@ -926,7 +926,6 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
       gpr_free(watchers);
       GPR_TIMER_END("maybe_work_and_unlock", 0);
       locked = 0;
-      gpr_tls_set(&g_current_thread_poller, 0);
     } else {
       GPR_TIMER_MARK("pollset_work.kicked_without_pollers", 0);
       pollset->kicked_without_pollers = 0;
@@ -958,6 +957,7 @@ static void pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
       now = gpr_now(now.clock_type);
     }
   }
+  gpr_tls_set(&g_current_thread_poller, 0);
   if (added_worker) {
     remove_worker(pollset, &worker);
     gpr_tls_set(&g_current_thread_worker, 0);
-- 
GitLab


From ea8ae0914293332a23b39668cf8413bdbdc3842f Mon Sep 17 00:00:00 2001
From: Nathaniel Manista <nathaniel@google.com>
Date: Mon, 16 May 2016 22:46:12 +0000
Subject: [PATCH 524/525] "sooner" -> "server" typo correction

"... will not have the effect of stopping the sooner later", heh. :-P
---
 src/python/grpcio/grpc/beta/interfaces.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/python/grpcio/grpc/beta/interfaces.py b/src/python/grpcio/grpc/beta/interfaces.py
index 33ca45ac5b..24de9ad1a8 100644
--- a/src/python/grpcio/grpc/beta/interfaces.py
+++ b/src/python/grpcio/grpc/beta/interfaces.py
@@ -235,7 +235,7 @@ class Server(six.with_metaclass(abc.ABCMeta)):
     This method may be called at any time and is idempotent. Passing a smaller
     grace value than has been passed in a previous call will have the effect of
     stopping the Server sooner. Passing a larger grace value than has been
-    passed in a previous call will not have the effect of stopping the sooner
+    passed in a previous call will not have the effect of stopping the server
     later.
 
     Args:
-- 
GitLab


From 948afddffea88393f7f8f63dac5e815ca9e1c7f4 Mon Sep 17 00:00:00 2001
From: David Klempner <klempner@google.com>
Date: Mon, 16 May 2016 16:43:39 -0700
Subject: [PATCH 525/525] Run clang-format against port_posix.c and
 port_windows.c

---
 test/core/util/port_posix.c   | 4 +---
 test/core/util/port_windows.c | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c
index 7e270ff975..f13960156f 100644
--- a/test/core/util/port_posix.c
+++ b/test/core/util/port_posix.c
@@ -234,8 +234,6 @@ int grpc_pick_unused_port_or_die(void) {
   return port;
 }
 
-void grpc_recycle_unused_port(int port) {
-  GPR_ASSERT(free_chosen_port(port));
-}
+void grpc_recycle_unused_port(int port) { GPR_ASSERT(free_chosen_port(port)); }
 
 #endif /* GPR_POSIX_SOCKET && GRPC_TEST_PICK_PORT */
diff --git a/test/core/util/port_windows.c b/test/core/util/port_windows.c
index 36c8d2856c..9023719675 100644
--- a/test/core/util/port_windows.c
+++ b/test/core/util/port_windows.c
@@ -240,8 +240,6 @@ int grpc_pick_unused_port_or_die(void) {
   return port;
 }
 
-void grpc_recycle_unused_port(int port) {
-  GPR_ASSERT(free_chosen_port(port));
-}
+void grpc_recycle_unused_port(int port) { GPR_ASSERT(free_chosen_port(port)); }
 
 #endif /* GPR_WINSOCK_SOCKET && GRPC_TEST_PICK_PORT */
-- 
GitLab